All Posts
ReferenceForm 10-KFinancial StatementsSEC EDGARSEC Forms13F8-KNPORT-PReference

Form 10-K Financial Statements (and Every Other SEC Filing We Read So You Don’t Have To)

Where the income statement, balance sheet, and cash flow statement actually live — plus 17 more SEC filings that power the StockFit API. What each form is for, what data we extract, and which endpoint serves it back to you.

Published May 9, 202612 min readStockFit Engineering
Form 10-K Financial Statements (and Every Other SEC Filing We Read So You Don’t Have To)

When you load Apple's revenue history, peek at Microsoft's balance sheet, or run a discounted cash flow on Costco, the numbers ultimately come from one filing: Form 10-K. The income statement, the balance sheet, and the cash flow statement — the financial statements every fundamentals API on the planet sells you — live in this single annual filing every public US company submits to the SEC.

The 10-K is the headliner, but it is one of about twenty SEC forms that carry essentially every public-market data point a developer actually uses: fundamentals, insider trades, fund holdings, executive comp, IPO terms, delistings. StockFit reads all of them so you do not have to touch a single line of XBRL or SGML. This post is the field guide. For every form we ingest, you get a one-line plain-English explanation, the actual data we pull out of it, and the exact StockFit API endpoint that serves it. If you have ever asked yourself “okay but where does the dividend history actually come from?” — answer below. (Spoiler: it's an N-CSR, not the company's 10-K.)

Form 10-K financial statements: the annual report that anchors everything

The Form 10-K is the SEC's annual report — a comprehensive disclosure every public US company has to file once per fiscal year, usually 60 to 90 days after year-end. Three of its sections do most of the heavy lifting for fundamentals work: the audited income statement, balance sheet, and cash flow statement. Around those sit segment results, risk factors, MD&A, executive bios, accounting policies, and share count.

Every line item is tagged in XBRL, the SEC's structured-data format. We run each 10-K through Arelle, normalize the tags onto a stable canonical schema (so revenue is revenue across every issuer, regardless of which XBRL concept they used), classify the period, and store the raw fact alongside our curated standardized version. A typical 10-K contains six to ten thousand facts; we surface the ones that matter and keep the rest queryable for power users.

Restatements are first-class: when a company files a 10-K/A correcting last year's numbers, our pipeline keeps the per-fact, per-amendment audit trail so you can roll the financial statements back to what the market actually saw on any given Tuesday.

Form 10-KAnnual report — income statement, balance sheet, cash flow statementannual

What we extract: The audited financial statements (income statement, balance sheet, cash flow statement, statement of equity), segment data, risk factors, MD&A, business description, share count, raw XBRL facts. Filed once per fiscal year. The single most important filing for fundamentals analysis.

Where it shows up: /api/financials/income-statement, /api/financials/balance-sheet, /api/financials/cash-flow-statement, /api/financials/key-metrics, /api/financials/growth, /api/financials/as-reported, plus the 10-K item sections (Item 1A risk factors, Item 7 MD&A, etc.) via /api/filings/item.

bash
curl "https://api.stockfit.io/v1/api/financials/income-statement?symbol=AAPL&period=annual&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

That single call replays ten years of Apple's 10-K income statement, structured, deduplicated, amendment-aware. Behind it: ten 10-K filings parsed, ~70,000 XBRL facts mapped to the canonical schema, every restatement applied with full provenance.

Form 10-Q and Form 20-F: quarterly and foreign-issuer counterparts

The 10-K's siblings cover the gaps. Form 10-Q reports the same line items quarterly (unaudited, filed 40–45 days after each quarter-end). Form 20-F is the 10-K equivalent for foreign private issuers — ADRs, dual-listed companies, non-US headquartered firms like ASML, TSMC, and Spotify. Both feed the same fundamentals endpoints.

Form 10-QQuarterly reportquarterly

What we extract: Same financial statement line items as the 10-K, but for the quarter. Unaudited. Filed 40–45 days after quarter-end. Essential for catching fundamentals shifts between annual reports.

Where it shows up: Same endpoints as 10-K with period=quarter. Q4 is reconstructed at read time because the 10-Q is filed for Q1, Q2, and Q3 only — Q4 is what falls out of the FY 10-K minus the first nine months.

Form 20-FAnnual report for foreign private issuersannual (non-US)

What we extract: Annual financial statements for foreign private issuers — ADRs, dual-listed companies, non-US headquartered firms (TSMC, ASML, Spotify, ARM). Replaces the 10-K. Often uses IFRS rather than US GAAP, with home-country regulatory context the 10-K omits.

Where it shows up: Same fundamentals endpoints as 10-K. Type-aware downstream so the right metrics surface for foreign filers.

Form 8-K: every material event, classified by item code

If something happens to a public company between quarterly reports — a CEO resigns, an acquisition closes, earnings get pre-released, a credit facility is amended — the SEC requires an 8-K within four business days. Each 8-K is tagged with one or more item codes (1.01, 2.02, 5.02, etc.) that tell you what kind of event it is.

We parse the SEC submission header to extract every item code on the filing, then expose them so you can build event-driven workflows: filter for 2.02 to grab earnings releases, 5.02 for executive departures, 1.01 for material agreements, 8.01 for catch-all material disclosures.

Form 8-KCurrent report — material eventsevent-driven

What we extract: Item codes (2.02 earnings, 5.02 executive change, 1.01 material agreement, 8.01 other, 7.01 Reg FD, 5.07 vote results, etc.), filing date, document URLs, exhibit list.

Where it shows up: /api/filings with type=8-K, /api/filings/item-list, /api/filings/timeline. The full list of supported item codes is in the API docs.

IPO forms: S-1 and EFFECT

When a company wants to go public, it files Form S-1 — the IPO prospectus. It is a long document (often 200+ pages) covering the use of proceeds, financial history, risk factors, ownership structure, and the offering itself. Companies file amendments (S-1/A) repeatedly as they iterate with the SEC, each one updating price ranges, share counts, underwriter syndicates.

The actual effective date — the day the SEC clears the registration so trading can begin — lives in a separate filing called EFFECT. We pair the two: S-1 for the offering details, EFFECT (the first one per CIK) as the IPO date proxy.

Form S-1IPO registration statementIPO

What we extract: Use of proceeds, share counts, price range, lock-up terms, underwriter list, S-1 prospectus item sections (business, risk factors, etc.). Same XBRL pipeline as 10-K means full financial history is structured.

Where it shows up: /api/filings/offering, /api/filings/recent-offerings, /api/filings/item.

Form EFFECTNotice of registration effectivenesstrading clearance

What we extract: SEC-issued notice that a registration statement is now effective. The first EFFECT per CIK is our best approximation of the actual IPO date.

Where it shows up: /api/company/details exposes ipoDate derived from this signal.

Form 25-NSE: the authoritative delisting signal

When a stock leaves an exchange, the exchange itself files Form 25 (specifically the 25-NSE variant). This is the only authoritative delisting source — not third-party scraping, not vendor classifications. The form carries a signature date that becomes the official delisted_at for the company.

Why this matters: companies often continue filing with the SEC after getting delisted (for deregistration paperwork, OTC trading), and most data vendors confuse the two. We do not. If 25-NSE has not been filed, the stock is still listed.

Form 25-NSENotification of removal from listingdelisting

What we extract: Authoritative delisting date (from the exchange's own signature, not a vendor guess). Filed by NYSE, NYSE Arca, or Nasdaq.

Where it shows up: /api/company/delisted for the market-wide list, /api/company/details for individual symbols.

Insider transactions: Forms 3, 4, and 5

Section 16 of the Exchange Act requires officers, directors, and 10%+ shareholders to disclose their ownership of company stock. They file Form 3 when they first take office (initial disclosure), Form 4 every time they buy or sell (within two business days), and Form 5 once a year as a catch-up for anything that should have been on a 4 but slipped.

Each Form 4 carries a transaction code: P for open-market purchase, S for open-market sale, A for grant/award, M for option exercise, F for tax withholding, plus a dozen others. The code is the difference between “the CFO loaded up” and “the CFO sold to pay taxes on a vesting grant” — surface-level transaction count is meaningless without it.

Forms 3, 4, 5Insider transaction reportsinsider

What we extract: Insider name and role, transaction date, transaction code (P/S/A/M/F/etc.), shares traded, price, post-transaction holdings, derivative vs. non-derivative.

Where it shows up: /api/insider-transactions, /api/insider-transactions/by-insider, /api/insider-transactions/roster, /api/insider-transactions/summary, /api/insider-transactions/chart.

Schedule 13D and 13G: 5%+ beneficial ownership

Anyone — person, fund, family office — who acquires more than 5% of a public company's shares has to disclose it. They pick one of two flavors based on intent: 13D if they are an active investor (intend to influence management, push for changes, run a proxy fight), 13G if they are passive (index funds, long-term holders).

13D filings are the activist-investor fingerprint. When Carl Icahn or Pershing Square shows up in a name, this is the form. We classify each filing's intent (passive vs. activist) and link it back to the issuer so you can build position-tracking dashboards.

Schedule 13D / 13GBeneficial ownership above 5%ownership

What we extract: Owner name and CIK, position size, filing intent (active vs. passive), date acquired, percent ownership, source of funds.

Where it shows up: /api/ownership/beneficial-owners, /api/ownership/beneficial-owners/history, /api/ownership/activity.

Form 13F-HR: institutional investor holdings every quarter

Any institutional investment manager with at least $100M in qualifying assets has to file Form 13F-HR within 45 days of each quarter-end. These filings are how the public sees what Berkshire Hathaway, Renaissance Technologies, Bridgewater, Fidelity, and every other major fund actually owns — right down to position sizes by CUSIP.

Caveats: 13F is US long equities only (no shorts, no derivatives, no foreign listings), it's 45 days stale, and managers can request confidentiality on positions. But within those bounds it is the deepest free dataset on institutional positioning anywhere.

Form 13F-HRInstitutional holdings reportinstitutional ownership

What we extract: Manager identity (CIK + name), position list with CUSIP, share count, market value, voting authority. Quarterly with a 45-day reporting lag.

Where it shows up: /api/ownership/institutional-holders, /api/ownership/institutional-holders/history, /api/ownership/portfolio, /api/ownership/institutional-holders/search.

The fund world: NPORT-P, N-CEN, N-1A, N-CSR

ETFs and mutual funds file an entirely different set of forms than operating companies do. If you are working with funds, this is where the gold is — and the data quality gap between StockFit and most fund-data vendors is widest, because most vendors stop at the prospectus.

Form NPORT-PMonthly fund portfolio holdingsfund holdings

What we extract: Every position the fund holds (with CUSIP, ISIN, share count, fair value), total assets, total liabilities, net assets, monthly returns, sales and redemption flows. Filed monthly, three months delayed for retail availability.

Where it shows up: /api/fund/holdings, /api/fund/profile, /api/fund/flows, /api/fund/changes, /api/fund/composition, /api/fund/overlap, plus the entire /api/fund/chart/* family.

Form N-CENAnnual fund census reportfund operations

What we extract: Service providers (advisor, sub-advisor, custodian, transfer agent, auditor), risk flags raised by the fund itself (concentration, valuation, liquidity events), securities lending activity, fund structure. Filed annually.

Where it shows up: /api/fund/service-providers, /api/fund/structure, /api/fund/fund-health.

Forms N-1A, 485BPOS, 497Fund prospectus and ongoing updatesprospectus

What we extract: Share class details, expense ratios, management fees, 12b-1 fees, investment objective, principal risks, fund family info. N-1A is the initial registration; 485BPOS and 497 are the ongoing updates.

Where it shows up: /api/fund/fees, /api/fund/fee-analysis, /api/fund/profile, /api/ownership/share-classes.

Forms N-CSR / N-CSRSAnnual / semi-annual shareholder reportsfund financials

What we extract: Per-share dividends, capital gains distributions, full audited financial statements for the fund, schedule of investments at period end, management discussion of performance.

Where it shows up: /api/fund/profile, /api/earnings/dividend-history (yes — fund dividends come from N-CSR, not from the company's 10-K).

Proxy statements: DEF 14A and DEFA14A

Once a year, ahead of the annual shareholder meeting, every public company files a proxy statement (DEF 14A). This is the document that asks shareholders to vote on board nominees, executive compensation packages, auditor ratification, and any shareholder proposals. It is also where the SEC requires disclosure of named-executive-officer compensation, peer groups, and pay-versus-performance tables.

DEFA14A is the “additional materials” companion — companies file these to amend or supplement an already-distributed proxy. We process both to extract the structured comp data, including the pay-versus-performance economics that became required disclosures starting in 2023.

DEF 14A / DEFA14A / DEF 14CProxy / information statementsgovernance

What we extract: Named executive officer compensation (salary, bonus, equity, total), peer group disclosure, pay-versus-performance tables, director independence, audit committee composition, vote results.

Where it shows up: /api/executives/compensation, /api/executives/governance, /api/executives/officers, /api/executives/performance-measures.

ARS: the glossy companion to the 10-K

The Annual Report to Shareholders (ARS) is the narrative version of the 10-K — the photo-heavy, designed PDF that shareholders actually read. It is technically a separate filing and contains material that is not in the 10-K itself: the CEO letter, branded charts, segment narratives, ESG disclosures.

We index it for document retrieval, even though most of the structured fundamentals data lives elsewhere. If you are doing LLM-based research that needs the actual narrative, the ARS is where to find management's voice in their own words.

Form ARSAnnual report to shareholdersnarrative

What we extract: Document URL and exhibit list. The narrative companion to the 10-K — useful for LLM-based research workflows.

Where it shows up: /api/filings with type=ARS, /api/filings/document.

FAQ

Q.What financial statements are in a Form 10-K?
Four audited statements: the income statement (revenue, expenses, net income), the balance sheet (assets, liabilities, equity at fiscal year-end), the cash flow statement (operating, investing, and financing cash flows), and the statement of stockholders' equity. They sit in Part II, Item 8 of the 10-K, and they are the source for almost every fundamentals data point you have ever pulled from any API. StockFit serves them via /api/financials/income-statement, /api/financials/balance-sheet, and /api/financials/cash-flow-statement.
Q.What is the difference between Form 10-K and Form 20-F?
Both are annual reports, but the 10-K is for US-domiciled companies and the 20-F is for foreign private issuers (think ASML, TSMC, Spotify, ARM). The 20-F follows different accounting standards (often IFRS), runs on a different reconciliation timeline, and contains home-country regulatory context the 10-K omits. From an API perspective: same StockFit endpoints serve both, with the right metrics surfaced for each business model.
Q.What does Form 8-K Item 5.02 mean?
Item 5.02 covers “departure of directors or certain officers; election of directors; appointment of certain officers; compensatory arrangements of certain officers.” In plain English: an executive resigned, retired, was fired, or got a new comp package. It is one of the most-watched item codes because executive transitions move stock prices. Other heavily-traded codes: 2.02 (earnings results), 1.01 (material definitive agreement), 5.07 (vote results).
Q.What is the difference between Schedule 13D and Schedule 13G?
Both disclose ownership above 5%, but 13D is for active investors who intend to influence the company (activists, takeovers, proxy fights). 13G is for passive investors (index funds, ETFs, long-term holders with no intent to influence). The same investor can amend a 13G into a 13D if their intent shifts — that amendment alone often moves the stock.
Q.How fresh is Form 13F-HR data?
13F-HR is filed within 45 days of each quarter-end, so the data you see on May 15 covers the position book as of March 31. That stale-by-design lag is intentional: regulators want institutions to disclose without giving away their playbook in real time. For more recent positioning, you usually have to wait for the next 13F or look at corroborating signals like Form 4 insider transactions and Schedule 13D/G amendments.
Q.Why are mutual fund dividends in Form N-CSR and not the company's annual report?
Mutual funds and ETFs are themselves registered investment companies under the Investment Company Act of 1940. They file a different family of forms (N-CSR, N-CEN, N-PORT, N-1A) than operating companies do. A fund's 10-K equivalent is its N-CSR, and that is where the dividends actually live — not in the prospectus, not in the holdings report.
Q.What is the difference between Form NPORT-P and Form N-CEN?
NPORT-P is the monthly portfolio holdings filing — every position, every month, structured. N-CEN is the annual census — service providers, risk flags, fund structure, securities lending. NPORT-P is “what does the fund own?”; N-CEN is “how is the fund operated?”. Both are valuable, both are underutilized by retail-facing fund-data products, and both are first-class in StockFit.
Q.What is the “effective date” of an IPO and how do I find it?
The effective date is when the SEC declares an S-1 registration statement effective and trading can begin. It is not in the S-1 itself — it lives in a separate one-line filing called EFFECT. We use the first EFFECT per CIK as the IPO date and surface it on /api/company/details as ipoDate.
Q.Is a company that filed a Form 25-NSE actually delisted?
Yes — 25-NSE is filed by the exchange (NYSE, NYSE Arca, or Nasdaq) and carries the official signature date of removal from listing. A company can continue filing 10-Ks and 8-Ks after a 25-NSE for deregistration paperwork or because it moved to OTC, but the stock is no longer on a major exchange. Most data vendors get this wrong; StockFit treats 25-NSE as authoritative.

Where to start

If you are building anything that touches public-company data, the answer to “where does this come from?” is almost always one of the forms above. The free tier of the StockFit API gives you direct access to every endpoint linked in this post — fundamentals, insider trades, fund holdings, executive comp, IPOs, delistings.

Two recommended next reads: Converting XBRL Financials to JSON for Backtesting if you want to understand how the 10-K and 10-Q pipelines actually work, and A Deep Lens on Any ETF if you are working with funds and want to see NPORT-P / N-CEN in practice.

Or just grab a key and start poking. The API will surprise you with how much is in there.

Ready to build?

Free API key, no credit card. Every endpoint mentioned in this post is available on the free tier.

Get Your Free API Key