Tables and numbers

Every table in a filing comes as filed and as numbers, with what to multiply each figure by for the full amount. This guide covers a filing's list of tables, one table, CSV, and AI table names.

List a filing's tables

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

Each entry in data has the table's number, title, section, row and column counts, and stated units, with a link that opens the table on SECSift. The number is the {n} the other table endpoints take.

Example answer

The entry for table 12, one of Apple'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"
      }
    }
  ]
}

Some tables have no title, so each entry also lists the table's first 12 headers and first 8 row labels, each cut at 120 characters. Those are usually enough to tell the tables apart.

section is the section's label, like "Item 8", with its id and title in section_id and section_title. A 10-Q numbers its items again in Part II, so the id tells its two Item 2 sections apart.

Get a table

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

A table answer gives each figure three ways, and each row a kind:

  • rows: Each cell's text, exactly as filed, with the row's label first.
  • values: Each figure as a number, as printed, with a figure in parentheses as a negative. Labels, text, years, percentages, and blanks are null, and a lone dash is 0, the same as the Excel export.
  • multipliers: What to multiply each value by for the full amount. In a table in millions, each amount carries 1,000,000, and a row or column that states its own units uses those. Null means the figure stays as filed.
  • row_kinds: One entry per row. A row that stays as filed reads per_share, shares, price, or rate, and every other row is null.

Here are three of the 24 rows in Apple's income statement:

{
  "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 stay in dollars, so their multipliers are null and their row's kind is per_share.

What stays as filed

A figure stays as filed when it's a per-share amount, share count, price, rate, ratio, term, count of things, physical quantity, or percentage, or when its table has no stated units. These are the rules the reader uses to show a table in thousands, millions, or billions.

A column that's mostly text or mostly percentages has null values throughout, so read those cells from rows.

Headers

Headers read as filed, with one addition. A filing often prints a period once over several columns, like "Three Months Ended" over a quarter and the same quarter a year earlier. Each of those columns gets the period in its header, so the prior-year column reads "Three Months Ended June 28, 2025", not "June 28, 2025".

CSV

Add format=csv for the headers and rows as filed:

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

The file is named like AAPL-0000320193-25-000079-table-12.csv, and starts like this:

,"Years ended September 27, 2025","Years ended September 28, 2024","Years ended September 30, 2023"
Net sales:,,,
Products,"$307,003","$294,866","$298,085"
Services,"109,158","96,169","85,200"
Total net sales,"416,161","391,035","383,285"

AI table names

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

The names endpoint names every table in the filing with AI, in the filing's own words, so a table without a title gets a name and the rest read in one consistent style.

Example answer

The first three of Apple's 46:

{
  "data": [
    {
      "n": 1,
      "name": "Securities registered pursuant to Section 12(b) of the Act",
      "ai": true
    },
    {
      "n": 2,
      "name": "Share repurchase activity",
      "ai": true
    },
    {
      "n": 3,
      "name": "Five-year cumulative total shareholder return",
      "ai": true
    }
  ],
  "tables": 46,
  "calls": 92
}

Each entry has the table's number, its name, and ai, which is false only when no name came back. name then holds the table's own title, or null.

Names cost 2 calls for each table in the filing, so Apple's FY2025 10-K, with 46 tables, costs 92 calls, and calls says how many that was. When a filing's names would take more calls than you have left today, the API answers 429 and names nothing.