Quick start

This walkthrough goes from a new key to the numbers in Apple's income statement in 6 calls. You need a SECSift account on the Analyst or Pro plan, and a terminal.

Create a key

Keys come from the reader:

  1. Open the reader, sign in, and open any filing.
  2. Select your account at the bottom of the left sidebar and choose "API keys".
  3. Select "Create Key", then "Copy Key". SECSift shows each key only once.

Any account can create a key, and a Free account's key works with the MCP server. The API answers only keys from Analyst and Pro accounts.

Save the key

Save the key in your terminal as SECSIFT_KEY, which every example reads. On macOS and Linux:

export SECSIFT_KEY="sk_secsift_..."

In Windows PowerShell:

$env:SECSIFT_KEY = "sk_secsift_..."

Check the key

Ask for your usage, which shows your plan and the calls you have left today:

curl "https://api.secsift.com/v1/usage" \
  -H "Authorization: Bearer $SECSIFT_KEY"
Example answer
{
  "plan": "pro",
  "calls_today": 207,
  "daily_limit": 5000,
  "remaining": 4793,
  "resets_at": "2026-10-27T00:00:00.000Z"
}

In Windows PowerShell, type each example on one line, with curl.exe instead of curl and $env:SECSIFT_KEY instead of $SECSIFT_KEY:

curl.exe "https://api.secsift.com/v1/usage" -H "Authorization: Bearer $env:SECSIFT_KEY"

Find the company

curl "https://api.secsift.com/v1/companies?q=apple" \
  -H "Authorization: Bearer $SECSIFT_KEY"

Each match has a name, ticker, and CIK, and every path that names a company takes either the ticker or the CIK.

Example answer

The first two of the six matches:

{
  "data": [
    {
      "name": "Apple Inc.",
      "ticker": "AAPL",
      "cik": 320193
    },
    {
      "name": "Apple iSports Group, Inc.",
      "ticker": "AAPI",
      "cik": 1134982
    }
  ]
}

Find the filing

List Apple's 10-Ks, newest first. With limit=1, the answer holds only the latest:

curl "https://api.secsift.com/v1/companies/AAPL/filings?forms=10-K&limit=1" \
  -H "Authorization: Bearer $SECSIFT_KEY"

The filing's accession number names the filing in every path that reads the filing.

Example answer
{
  "data": [
    {
      "accession": "0000320193-25-000079",
      "form": "10-K",
      "tag": "10-K",
      "category": "annual",
      "items": null,
      "filed": "2025-10-31",
      "period_end": "2025-09-27",
      "fiscal": "FY2025",
      "urls": {
        "secsift": "https://secsift.com/?t=AAPL&a=0000320193-25-000079",
        "edgar": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.html"
      }
    }
  ],
  "total": 24,
  "next_offset": 1,
  "capped": false
}

Find the table

curl "https://api.secsift.com/v1/companies/AAPL/filings/0000320193-25-000079/tables" \
  -H "Authorization: Bearer $SECSIFT_KEY"

Each table has a number, title, section, and units, plus its first headers and row labels for tables without a title. Apple's income statement is table 12.

Example answer

The entry for table 12, one of the filing's 46:

{
  "company": {
    "name": "Apple Inc.",
    "ticker": "AAPL",
    "cik": 320193
  },
  "filing": {
    "accession": "0000320193-25-000079",
    "form": "10-K",
    "filed": "2025-10-31",
    "period_end": "2025-09-27",
    "fiscal": "FY2025",
    "items": null
  },
  "data": [
    {
      "n": 12,
      "title": "Consolidated Statements of Operations",
      "section": "Item 8",
      "section_id": "pt-ii-item-8",
      "section_title": "Financial Statements and Supplementary Data",
      "rows": 24,
      "columns": 4,
      "units": {
        "scale": "millions",
        "multiplier": 1000000
      },
      "headers": ["", "Years ended September 27, 2025", "Years ended September 28, 2024", "Years ended September 30, 2023"],
      "labels": ["Net sales:", "Products", "Services", "Total net sales", "Cost of sales:", "Products", "Services", "Total cost of sales"],
      "urls": {
        "secsift": "https://secsift.com/?t=AAPL&a=0000320193-25-000079&tb=b426&tn=12"
      }
    }
  ]
}

Note: A filing SECSift hasn't read before answers 202 for a few seconds while SECSift prepares the filing. Call again after the seconds in the Retry-After header. See filings being prepared.

Get the table

curl "https://api.secsift.com/v1/companies/AAPL/filings/0000320193-25-000079/tables/12" \
  -H "Authorization: Bearer $SECSIFT_KEY"

The answer holds each row as filed in rows, each figure as a number in values, and what to multiply each number by in multipliers. Here are three of the table's 24 rows:

{
  "company": {
    "name": "Apple Inc.",
    "ticker": "AAPL",
    "cik": 320193
  },
  "filing": {
    "accession": "0000320193-25-000079",
    "form": "10-K",
    "filed": "2025-10-31",
    "period_end": "2025-09-27",
    "fiscal": "FY2025",
    "items": null
  },
  "n": 12,
  "title": "Consolidated Statements of Operations",
  "section": "Item 8",
  "units": {
    "scale": "millions",
    "multiplier": 1000000
  },
  "headers": ["", "Years ended September 27, 2025", "Years ended September 28, 2024", "Years ended September 30, 2023"],
  "rows": [
    ["Total net sales", "416,161", "391,035", "383,285"],
    ["Net income", "$112,010", "$93,736", "$96,995"],
    ["Diluted", "$7.46", "$6.08", "$6.13"]
  ],
  "values": [
    [null, 416161, 391035, 383285],
    [null, 112010, 93736, 96995],
    [null, 7.46, 6.08, 6.13]
  ],
  "multipliers": [
    [null, 1000000, 1000000, 1000000],
    [null, 1000000, 1000000, 1000000],
    [null, null, null, null]
  ],
  "row_kinds": [null, null, "per_share"],
  "urls": {
    "secsift": "https://secsift.com/?t=AAPL&a=0000320193-25-000079&tb=b426&tn=12",
    "edgar": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.html"
  }
}

Net income of 112010 times its multiplier of 1000000 is Apple's $112B for FY2025. Diluted earnings per share have no multiplier, since per-share amounts stay as filed.

Add format=csv for the table's rows as a CSV file.

Follow the table across filings

curl "https://api.secsift.com/v1/companies/AAPL/filings/0000320193-25-000079/tables/12/history?limit=3&dedupe=true" \
  -H "Authorization: Bearer $SECSIFT_KEY"

The history finds the same table in Apple's last three 10-Ks and lines up the rows, with each period once.

Example answer

Two of its rows, with five years of periods from three filings:

{
  "title": "Consolidated Statements of Operations",
  "filings": [
    {
      "accession": "0000320193-25-000079",
      "form": "10-K",
      "fiscal": "FY2025",
      "filed": "2025-10-31",
      "period_end": "2025-09-27",
      "status": "matched",
      "match": 1,
      "table": 12
    },
    {
      "accession": "0000320193-24-000123",
      "form": "10-K",
      "fiscal": "FY2024",
      "filed": "2024-11-01",
      "period_end": "2024-09-28",
      "status": "matched",
      "match": 1,
      "table": 12
    },
    {
      "accession": "0000320193-23-000106",
      "form": "10-K",
      "fiscal": "FY2023",
      "filed": "2023-11-03",
      "period_end": "2023-09-30",
      "status": "matched",
      "match": 1,
      "table": 11
    }
  ],
  "headers": ["Line item", "Years ended September 27, 2025", "Years ended September 28, 2024", "Years ended September 30, 2023", "Years ended September 24, 2022", "Years ended September 25, 2021"],
  "columns": [
    {
      "header": "Line item",
      "accession": null,
      "period_type": null,
      "url": null
    },
    {
      "header": "Years ended September 27, 2025",
      "accession": "0000320193-25-000079",
      "period_type": "annual",
      "url": "https://secsift.com/?t=AAPL&a=0000320193-25-000079&tb=b426&tn=12"
    },
    {
      "header": "Years ended September 28, 2024",
      "accession": "0000320193-25-000079",
      "period_type": "annual",
      "url": "https://secsift.com/?t=AAPL&a=0000320193-25-000079&tb=b426&tn=12"
    },
    {
      "header": "Years ended September 30, 2023",
      "accession": "0000320193-25-000079",
      "period_type": "annual",
      "url": "https://secsift.com/?t=AAPL&a=0000320193-25-000079&tb=b426&tn=12"
    },
    {
      "header": "Years ended September 24, 2022",
      "accession": "0000320193-24-000123",
      "period_type": "annual",
      "url": "https://secsift.com/?t=AAPL&a=0000320193-24-000123&tb=b440&tn=12"
    },
    {
      "header": "Years ended September 25, 2021",
      "accession": "0000320193-23-000106",
      "period_type": "annual",
      "url": "https://secsift.com/?t=AAPL&a=0000320193-23-000106&tb=b434&tn=11"
    }
  ],
  "rows": [
    ["Total net sales", "416,161", "391,035", "383,285", "394,328", "365,817"],
    ["Net income", "$112,010", "$93,736", "$96,995", "$99,803", "$94,680"]
  ],
  "values": [
    [null, 416161, 391035, 383285, 394328, 365817],
    [null, 112010, 93736, 96995, 99803, 94680]
  ],
  "multipliers": [
    [null, 1000000, 1000000, 1000000, 1000000, 1000000],
    [null, 1000000, 1000000, 1000000, 1000000, 1000000]
  ],
  "row_kinds": [null, null],
  "complete": true
}

Each call above counted once toward your daily allowance, so the walkthrough used 6 calls. A history of more than 12 filings counts as 2.

Next steps

Here's where to go next: