Blog · 2026-07-03

SEC EDGAR API for Form 10-K: sections, deadlines, and financials (2026)

A Form 10-K broken into its Items, with Item 8 financial statements pulled out as clean JSON
A 10-K is a long document. The numbers you want sit in one section of it.

Once a year, every US public company writes down everything. The business, the risks, the audited numbers. It goes to the SEC as a Form 10-K.

It is the most honest document a company publishes, and one of the longest. Apple's runs past a hundred pages.

Most of the time you do not want the hundred pages. You want the income statement. This guide covers what a 10-K is, the sections that matter, when it is due, and how to pull its financials as clean JSON by ticker.

A Form 10-K is the annual report a public company files with the SEC. It contains the audited financial statements plus a full written account of the business and its risks. The numbers live in one section, Item 8, and you can pull them for any ticker with a single API call instead of reading the filing.

What is a Form 10-K?

A Form 10-K is the official annual report every US public company files with the SEC. It is required under the Securities Exchange Act, and it is the version auditors sign, which is why analysts trust it over a press release.

People mix it up with the annual report. They are not the same thing.

The glossy annual report with the letter from the CEO is a marketing piece for shareholders. The 10-K is the technical filing, per the SEC's Investor.gov glossary. Same company, same year, very different documents. Some firms just staple their 10-K inside the glossy cover and call it both.

For data work, the 10-K is the one you want. It is standardized, it is audited, and it is tagged in a machine-readable format the SEC requires.

What is inside a 10-K? The sections that matter

A 10-K is organized into numbered Items, and five of them carry most of the weight. Item 1 is the Business, Item 1A is Risk Factors, Item 7 is Management's Discussion and Analysis, Item 7A is Market Risk, and Item 8 is Financial Statements and Supplementary Data.

The parts of a Form 10-K broken into its four sections and key numbered Items, with Item 8 highlighted as the financial statements
A 10-K has four parts. Item 8 is where the audited numbers live.

Item 8 is the one to remember. It holds the audited income statement, balance sheet, and cash flow statement, the three tables most of finance runs on.

Item 1A and Item 7 are the reading, not the numbers. Item 1A lists what could go wrong, and Item 7 is management explaining the results in plain language. Both are gold for a retrieval pipeline, because they are structured, dated, and written by the company itself. Edgrapi's sections endpoint returns that Item 1A and Item 7 text as clean chunks.

The rest of the Items cover legal proceedings, executive pay, controls, and exhibits. Useful in context, but Item 8 is where you go for the financials.

When is a 10-K due?

A 10-K is due within 60 to 90 days after a company's fiscal year ends, and the exact deadline depends on the company's size. A large accelerated filer gets 60 days, an accelerated filer gets 75 days, and every other filer gets 90 days, per the filing rules.

Timeline showing 10-K deadlines of 60, 75, and 90 days after fiscal year end by filer type, plus the 15-day Form 12b-25 extension
Fiscal year end starts the clock. Filer size sets the deadline.

There is one escape hatch. A company that will miss the date can file Form 12b-25 and get up to 15 more days for a 10-K. So a late filing is not always a red flag, though a pattern of them can be.

Why this matters for data: the freshest annual number is never same-day. If a company closed its books in December, its 10-K, and the clean annual figures inside it, generally land in February or March. Build your refresh schedule around the deadline, not the fiscal year end.

10-K vs 10-Q vs the annual report: what is the difference?

The 10-K is annual and audited, the 10-Q is quarterly and unaudited, and the annual report is a marketing document. A company files one 10-K and three 10-Qs each year, since the fourth quarter is folded into the annual filing. The 10-Q is due 40 to 45 days after each quarter closes and its numbers are not audited, which is the trade for getting them sooner.

Comparison matrix of Form 10-K, Form 10-Q, and the annual report to shareholders across frequency, audited status, deadline, and purpose
Three documents, one set of numbers, very different jobs.
Form 10-KForm 10-QAnnual report
FrequencyOnce a yearFirst three quartersOnce a year
AuditedYesNoUses the 10-K numbers
Deadline60 / 75 / 90 days40 to 45 daysBefore the annual meeting
PurposeSEC regulatory filingSEC regulatory filingMarketing to shareholders
Use for dataAnnual statementsQuarterly statementsNot a data source

For an API, the split is clean. Annual history comes from 10-Ks, quarterly history comes from 10-Qs, and the annual report is not something you query.

Where are the financial statements in a 10-K?

The financial statements are in Item 8, and the SEC also publishes them as structured XBRL data. XBRL is the machine-readable version of every number in the filing, tagged so software can read it without scraping the document.

This is where it gets tedious. The same line item is tagged differently across companies and across years, so revenue might be Revenues for one filer and RevenueFromContractWithCustomerExcludingAssessedTax for another. Reading one metric reliably means keeping a fallback list of tags. We wrote a whole post on why that parsing is harder than it looks.

Everything is also keyed by CIK, the SEC's company id, not by ticker. So before you read a single number you map the ticker to a CIK and decode the XBRL, per the SEC's EDGAR API docs. A normalized API does that mapping and decoding once, in one place.

How do you get 10-K financial data by API?

You call one endpoint with the ticker in the path and your API key in the header. With Edgrapi the annual statements from a company's 10-Ks live at /v1/fundamentals/{ticker} with period=annual. No CIK lookup, no XBRL decoding, no tag fallbacks.

Here is the whole thing in Python:

import requests

r = requests.get(
    "https://api.edgrapi.com/v1/fundamentals/AAPL",
    headers={"X-API-Key": "edgr_your_key"},
    params={"period": "annual"},
)
data = r.json()
latest = data["income_statement"][0]
print(latest["revenue"], latest["net_income"])

That is the integration. Swap AAPL for any ticker, switch to period=quarterly for 10-Q data, and loop your universe to build a dataset.

Pipeline from a ticker through the Edgrapi API, which resolves the CIK and normalizes XBRL, to a clean JSON object of the three financial statements
You send a ticker. The API handles EDGAR, XBRL, and the tag mess, and returns clean JSON.

The response is one JSON object with the three statements from Item 8, every field named the same way across all 10,400+ covered companies, going back to roughly 2009 when XBRL became mandatory. Because the fields are normalized, Apple and a small-cap come back with identical keys, so you can diff them or drop the object straight into a dataframe.

Item 8 financial statement lines from a 10-K mapping to normalized JSON keys like revenue, net_income, total_assets, and free_cash_flow
Item 8's tables map to stable JSON keys, the same for every ticker.

If you want ratios, /v1/ratios/{ticker} returns margins, ROE, ROA, and debt-to-equity already calculated from those statements. If you want the filing history itself, /v1/filings/{ticker} lists the 10-K, 10-Q, and 8-K record with links back to SEC.gov. You can see all of it in the docs, or compare the options on the compare page.

Can AI agents read a 10-K?

Yes, through MCP, the Model Context Protocol. Edgrapi runs a hosted MCP server at https://api.edgrapi.com/mcp that exposes tools like get_fundamentals and get_sections, so an AI client can pull real 10-K numbers and section text mid-conversation instead of guessing them.

Ask an assistant wired to the API "what was NVIDIA's net income in its latest 10-K?" and it makes a tool call that returns the audited figure from Item 8, not a confident hallucination. For the written sections, get_sections hands the model Item 1A and Item 7 as clean chunks to embed, which is what a 10-K retrieval pipeline actually needs. The full SEC EDGAR API guide walks through the agent setup end to end.

Start with one 10-K

The fastest way to understand a 10-K as data is to pull one. Grab a free key, run the snippet against a company you follow, and read what Item 8 looks like when it is already parsed.

The free tier is 100 requests, no card, enough to test every endpoint and ship a prototype. Point it at https://api.edgrapi.com and pull your first annual statement.

Frequently asked questions

What is a Form 10-K?

A Form 10-K is the annual report every US public company files with the SEC. It gives a full picture of the business, its risks, and audited financial statements for the fiscal year. It is the regulatory source document, not the glossy shareholder brochure. The financial statements inside a 10-K are the same numbers Edgrapi returns as clean JSON when you call the annual fundamentals endpoint for a ticker.

What are the main sections of a 10-K?

A 10-K is split into numbered Items. The ones analysts read most are Item 1 (Business), Item 1A (Risk Factors), Item 7 (Management's Discussion and Analysis), Item 7A (Market Risk), and Item 8 (Financial Statements and Supplementary Data). Item 8 holds the audited income statement, balance sheet, and cash flow. Edgrapi's sections endpoint returns Item 1A and Item 7 text, and its fundamentals endpoint returns the Item 8 numbers normalized.

When is a 10-K due?

A 10-K is due after the fiscal year ends: 60 days for a large accelerated filer, 75 days for an accelerated filer, and 90 days for everyone else, per the SEC. A company can file Form 12b-25 to buy up to 15 more days. So the freshest annual numbers usually land two to three months after a company closes its books.

What is the difference between a 10-K and a 10-Q?

A 10-K is the annual filing with audited statements. A 10-Q is the quarterly filing, due 40 to 45 days after quarter end, and its statements are unaudited. The annual report to shareholders is a marketing document that often wraps the same numbers in design. For data work the 10-K and 10-Q are the sources, and Edgrapi maps them to period=annual and period=quarterly on one endpoint.

How do I get 10-K financial data by API?

You resolve the ticker to the company's CIK, pull its XBRL financial facts from SEC EDGAR, and normalize the tags. Or you skip all three. With Edgrapi you call GET /v1/fundamentals/AAPL?period=annual with your API key and get the income statement, balance sheet, and cash flow from the latest 10-Ks as one JSON object, named the same way across all 10,400+ covered companies.

Is 10-K data free, and can AI agents read it?

The raw 10-K data on SEC EDGAR is free, capped at 10 requests per second, and comes as raw XBRL you parse yourself. Edgrapi adds normalization, ratios, and section text, with a free tier of 100 requests and no credit card. For AI, Edgrapi runs a hosted MCP server so agents like Claude and Cursor can pull real 10-K numbers instead of guessing them.

Get a free API key