SEC EDGAR Financial Facts
Pricing
from $0.35 / 1,000 facts
SEC EDGAR Financial Facts
Give a ticker or CIK, get every reported XBRL financial fact for any US public company from the official SEC EDGAR company-facts API (data.sec.gov) β revenue, assets, EPS, cash, liabilities and every us-gaap + dei concept, flattened to one analysis-ready row per observation. No API key.
Pricing
from $0.35 / 1,000 facts
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Give a ticker or CIK, get every reported XBRL financial fact for any U.S. public
company β straight from the official SEC EDGAR company-facts REST API
(data.sec.gov). Revenue, assets, EPS, cash, liabilities, shares outstanding β every
us-gaap and dei concept the filer has tagged β flattened to one analysis-ready row
per reported fact-observation. Free, no API key, authoritative source.
SEC EDGAR is the system of record for U.S. public-company financials. This actor is the clean structured-fundamentals extractor built directly on the official XBRL API β normalized, analysis-ready numbers, not raw filing HTML you have to parse yourself.
What you get
One dataset row per fact-observation, with these fields:
| Field | Meaning |
|---|---|
cik | Central Index Key (integer) |
entityName | Company name, e.g. Apple Inc. |
taxonomy | us-gaap | dei | ifrs-full | srt | invest |
concept | The XBRL tag, e.g. Revenues, Assets, EarningsPerShareBasic |
label | Human label for the concept |
description | The concept's full XBRL definition |
unit | USD, shares, USD/shares, β¦ |
value | The reported number (int for money/shares, float for per-share) |
start | Period start (null for instant facts like a balance-sheet total) |
end | Period end (or the instant date) |
fiscalYear | Fiscal year (fy) |
fiscalPeriod | Fiscal period (fp) β FY, Q1, Q2, β¦ |
form | SEC form, e.g. 10-K, 10-Q, 8-K |
filed | Filing date |
accessionNumber | The filing's accession number (accn) |
frame | The XBRL frame if present (e.g. CY2016, CY2009Q2I), else null |
_cik | The zero-padded CIK this row was fetched under |
_source | companyconcept (single concept) or companyfacts (all concepts) |
_rowIndex | Sequential index within the run |
_raw | The lossless original observation object |
Input
| Input | Description |
|---|---|
ticker | A stock ticker, e.g. AAPL β resolved to a CIK via SEC's official ticker map. Share classes can be typed BRK.B, BRK/B or BRK-B (SEC writes BRK-B); $AAPL and NASDAQ:AAPL also work |
cik | A Central Index Key, e.g. 320193 (zero-padding handled for you) |
tickers / ciks | Batch several companies in one run; each row is tagged with its _cik |
concept | A single concept tag (e.g. Revenues) β uses the fast per-concept endpoint. Omit to extract all concepts |
taxonomy | Taxonomy for the concept (default us-gaap); only used with concept |
forms | Keep only these SEC form types, e.g. ["10-K","10-Q"] |
maxRecords | Global cap on rows emitted (a large filer's full fact set can be tens of thousands) |
userAgent | Optional override β a compliant default is sent (SEC requires a descriptive UA) |
timeoutSecs | Per-request read timeout (default 120s) |
At least one identifier (cik/ticker/ciks/tickers) is required.
Example β one concept for one company
{ "cik": "320193", "concept": "Revenues", "taxonomy": "us-gaap" }
Example β full fundamentals for a company (capped)
{ "ticker": "AAPL", "maxRecords": 500 }
Example β annual EPS across several companies
{ "tickers": ["AAPL", "MSFT", "GOOGL"], "concept": "EarningsPerShareBasic", "forms": ["10-K"] }
How it works
- Two official endpoints, auto-selected:
companyconcept(one concept for one company) when you setconcept, otherwisecompanyfacts(every concept the filer tagged). Ticker β CIK resolution uses SEC's officialcompany_tickers.jsondirectory. - The parse is the moat. The XBRL facts JSON is deeply nested
(
facts.{taxonomy}.{concept}.units.{unit}[]) and every observation is flattened fully. Every field is read by key presence, so an instant fact (nostart) or a fact with noframeyieldsnullthere β never a dropped row, never a crash. The complete original observation is preserved in_raw. - SEC fair-access compliant. SEC requires a descriptive
User-Agentwith contact info (it returns HTTP 403 otherwise) and asks clients to stay β€ ~10 requests/second. The actor sends a compliant UA by default and throttles between requests. - Honest and resilient. An unknown CIK/ticker, a concept a company never tagged, a timeout, or a non-JSON body is a clean skip-with-warning and the batch continues; a run where every identifier is skipped fails fast so nothing broken looks successful. A valid company with no facts for your filter returns 0 rows β it never fabricates data.
Pricing
Pay-per-event: you're charged per fact (one emitted dataset row).
Your max charge is respected. Facts are written only when your run's maximum charge
covers them, so every row in the dataset is billed and nothing past your budget is written.
If the budget runs out mid-company the run stops cleanly with the facts you paid for; if it
does not cover even one fact, no SEC request is made at all. Set maxRecords for an exact
row count.
Notes
Data comes directly from SEC EDGAR's XBRL frames API and is provided as-is from the filers' own submissions. This actor accesses only public, no-auth SEC endpoints.