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
6 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 |
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).
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.