SEC EDGAR Fundamentals: Normalized Financial Statements API
Pricing
from $0.30 / 1,000 company fundamentals
SEC EDGAR Fundamentals: Normalized Financial Statements API
Normalized company fundamentals for any ticker or CIK: income statement, balance sheet and cash-flow history plus TTM margins, growth and leverage metrics, standardized across every filer's XBRL tags. Public EDGAR data, no API key. From $0.50 per 1,000 companies.
Pricing
from $0.30 / 1,000 company fundamentals
Rating
0.0
(0)
Developer
Upward Enterprises
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
$0.50 per 1,000 companies ($0.30 on the Gold tier), no start fee, no API key.
Raw EDGAR company facts are free, and nearly unusable: the same revenue line appears under a dozen different XBRL tags depending on the filer and the era, values repeat across amendments, and year-to-date figures sit next to discrete quarters. This Actor hands you the cleaned result instead: one row per company with its income statement, balance sheet and cash-flow history standardized into the same 26 line items for every filer, plus trailing-twelve-month metrics (growth, margins, ROE, current ratio, net debt, debt-to-equity) computed from those statements.
Companies are served from a maintained fundamentals store that ingests EDGAR server-side and re-ingests a company whenever a new financial filing lands, so a lookup never waits on SEC rate limits. A company nobody has ever requested is assembled from EDGAR on first lookup, then kept fresh the same way. If the store is ever unreachable, the Actor falls back to EDGAR directly and normalizes the raw company facts itself, and the row says which source produced it.
What you get
Company rows (kind: "company"), one per requested ticker or CIK:
{"kind": "company","cik": "0000320193","ticker": "AAPL","name": "Apple Inc.","fiscalYearEndMonth": 9,"source": "fintrinsiq-store","dataAsOf": "2026-08-10T18:50:28.229Z","latestFiling": { "accession": "0000320193-26-000020", "form": "10-Q", "filed": "2026-07-31", "period": "2026-06-27" },"metrics": {"ttmRevenue": 466823000000,"ttmNetIncome": 128930000000,"ttmEps": 8.71,"ttmFcf": 136683000000,"revenueGrowthYoY": 0.142,"grossMarginTtm": 0.487,"operatingMarginTtm": 0.332,"netMarginTtm": 0.276,"roeTtm": 1.488,"currentRatio": 1.003,"netDebt": 21945000000,"debtToEquity": 0.784},"periodsIncluded": ["annual"],"statements": {"annual": {"income": [{ "periodEnd": "2025-09-27", "start": "2024-09-29", "fiscalYear": 2025, "form": "10-K", "filed": "2025-10-31","values": { "revenue": 416161000000, "grossProfit": 195201000000, "operatingIncome": 133050000000, "netIncome": 112010000000, "epsDiluted": 7.46 } }],"balance": [{ "periodEnd": "2025-09-27", "fiscalYear": 2025, "form": "10-K", "filed": "2025-10-31","values": { "totalAssets": 359241000000, "cashAndEquivalents": 29943000000, "stockholdersEquity": 73733000000 } }],"cashflow": [{ "periodEnd": "2025-09-27", "start": "2024-09-29", "fiscalYear": 2025, "form": "10-K", "filed": "2025-10-31","values": { "operatingCashFlow": 111482000000, "capitalExpenditures": 12715000000, "freeCashFlow": 98767000000 } }]}}}
The 26 standardized line items: revenue, cost of revenue, gross profit, operating income, net income, diluted EPS, diluted share count, R&D, SG&A, stock-based compensation; total assets, total liabilities, stockholders' equity, cash and equivalents, long-term debt, current debt, short-term borrowings, short-term investments, current assets, current liabilities, shares outstanding; operating cash flow, capital expenditures, free cash flow (derived as operating cash flow minus capital expenditures), dividends paid, dividends per share.
A free summary row (kind: "summary") closes every run: how many companies were delivered, how many came from the store vs. EDGAR direct, and which inputs could not be resolved (a ticker EDGAR has no filer for is listed there, never billed).
How the normalization works
Every filer is mapped through one tag-alias table, in priority order. Revenue alone is merged from RevenuesNetOfInterestExpense, Revenues, RevenueFromContractWithCustomerExcludingAssessedTax, SalesRevenueNet and four more tags, so a company's history stays continuous when its tagging changes (most filers switched revenue tags around 2018 with ASC 606). Where a period was restated, the value from the latest filing wins. Periods that were derived rather than reported directly (for example a fourth quarter differenced from the annual figure) are marked derived: true on the period. Valuation metrics that need a share price (P/E, market cap) are null: EDGAR carries no prices and this Actor does not invent them.
Inputs
| Input | Default | Notes |
|---|---|---|
| Tickers | none | Any SEC-registered filer's ticker, e.g. AAPL, MSFT, JPM |
| CIKs | none | With or without leading zeros; resolved through EDGAR submissions |
| Periods | annual | annual, quarterly, or both |
| Years of history | 10 | Up to 30; XBRL history reaches back to about 2009 for most filers |
| Include TTM metrics | on | Metrics are computed from the statements; off drops the block |
| Max companies per run | 100 | Up to 1,000, processed in input order |
Worked example: a 500-company universe refresh, annual statements, 10 years back, costs 500 x $0.0005 = $0.25 on the Free tier ($0.15 on Gold), and typically finishes in a few minutes because most rows come straight from the store.
Pricing
Pay per company delivered. Free $0.0005, Bronze $0.00045, Silver $0.000375, Gold $0.0003 per company. Unresolvable tickers are reported in the summary row and never charged. There is no charge for the summary row.
Notes and limits
- Data is SEC EDGAR public data, redistributed under the SEC's fair-access terms; the Actor declares itself to the SEC and stays under five requests a second on the direct path.
- Fundamentals change when companies file, not intraday. The store polls for new filings on a freshness cycle (hours, not weeks);
dataAsOfandlatestFilingon every row say exactly how current that company is. - Banks, insurers and utilities report some lines differently; the alias table handles the common cases (a bank's top line is revenue net of interest expense), and a line a filer does not report is simply absent from
values, never zero-filled.
Enjoying this Actor?
If it saved you from wrestling XBRL, a review on the Store page helps other builders find it, and it tells us to keep the history deep and the alias table current. Questions and tag-mapping requests are welcome on the Issues tab; we answer fast.