EDGAR Company Filings & XBRL Fundamentals Extractor
Pricing
from $2.10 / 1,000 filing fetcheds
EDGAR Company Filings & XBRL Fundamentals Extractor
SEC EDGAR API: extract SEC filings (10-K, 10-Q, 8-K, Form 4, 13F-HR, S-1, DEF 14A) and XBRL financial data — revenue, EPS, assets, equity — for any US public company by ticker or CIK. Structured JSON from the official data.sec.gov companyfacts API; no login, no API key.
Pricing
from $2.10 / 1,000 filing fetcheds
Rating
0.0
(0)
Developer
Geo
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
A ready-made SEC EDGAR API: pull SEC EDGAR filings (10-K, 10-Q, 8-K, Form 4, 13F-HR, S-1, DEF 14A…) and XBRL financial data — Revenue, Net Income, EPS, Assets, Equity — for any US-listed public company, by ticker or CIK. Everything comes from the SEC's official data.sec.gov API: no login, no API key, no paywall, no custom parser to maintain, structured JSON out of the box.
What is the SEC EDGAR API?
The SEC publishes its entire company-filings database — every filing since the mid-1990s plus machine-readable XBRL financial statements — through free public endpoints on data.sec.gov. This actor wraps those endpoints in a single API call: give it a ticker or CIK, and it returns clean, structured JSON instead of raw XML and HTML you would have to parse yourself.
You don't need an API key, a token, or an account with the SEC — the only thing the SEC asks for is a declared User-Agent, which the actor sends for you.
SEC EDGAR filings: what you get
For each company, in filings mode, you get a list of recent filings, most recent first:
| Data point | Example value |
|---|---|
| Form type | 10-K, 10-Q, 8-K, 4, 13F-HR, DEF 14A |
| Filed date | 2025-10-31 |
| Report period end | 2025-09-27 |
| Accession number | 0000320193-25-000079 |
| Primary document URL | direct link to the filed document |
| EDGAR index URL | full filing index on sec.gov |
Filter to the form types you care about with formTypes (e.g. only 10-K), and cap the list with maxFilings (up to 500 per company). formTypes matches EDGAR's own form codes exactly — 4 for Form 4, 13F-HR for a 13F holdings report, DEFA14A for additional proxy materials — so copy the code from the filing you're targeting.
XBRL financial data: fundamentals
In financials mode, the actor returns the time-series of any US-GAAP or DEI XBRL concept — Revenue, NetIncomeLoss, EarningsPerShareBasic, Assets, StockholdersEquity, and thousands more — with up to the 20 most recent values per concept, each tagged with period end/start, fiscal year, form, and filing date. A clean, normalized feed for charting, screening, and RAG pipelines, straight from the SEC's official companyfacts API.
One thing worth knowing about XBRL tags: companies retire tags over time. Apple's us-gaap/Revenues series stops in 2018; current Apple filings report revenue under us-gaap/RevenueFromContractWithCustomerExcludingAssessedTax. If a concept comes back with no recent values, pass the tag the filer actually uses via xbrlConcepts — the actor fetches whatever tag you name, verbatim from the companyfacts JSON.
SEC companyfacts API vs. calling data.sec.gov yourself
Raw data.sec.gov endpoints | This actor | |
|---|---|---|
| Ticker → CIK | you fetch company_tickers.json and join it yourself | resolved for you (or pass a CIK) |
| Rate limiting | you implement the 10 req/s budget | serialized request stream, 120 ms minimum gap (~8 req/s) |
| Filing metadata | parallel arrays inside one large submissions JSON | one JSON record per filing with ready-to-click URLs |
| XBRL financials | one multi-megabyte nested companyfacts file per company | per-concept time-series records, values capped at the 20 most recent |
| Output shape | whatever the SEC shipped that quarter | a stable schema you can write code against |
| Cost | free | pay-per-event, pennies per run |
How to use the EDGAR filings API
- Open the actor in Apify Console and enter tickers (e.g.
AAPL) or SEC CIK numbers (e.g.0000320193). - Choose the mode:
filings,financials, orboth(default). - Optionally filter by
formTypes, setmaxFilings, and pickxbrlConcepts. - Run it — results land in the dataset as JSON, ready to download or pipe anywhere.
Example input:
{"tickers": ["AAPL", "MSFT", "NVDA"],"mode": "both","formTypes": ["10-K", "10-Q"],"maxFilings": 10,"xbrlConcepts": ["Revenues", "NetIncomeLoss", "EarningsPerShareBasic", "Assets"]}
Example output item (financials mode)
A real record from the canonical AAPL + 10-K run (values truncated to the newest entry):
{"cik": "0000320193","ticker": "AAPL","companyName": "Apple Inc.","concept": "us-gaap/NetIncomeLoss","unit": "USD","label": "Net Income (Loss) Attributable to Parent","values": [{"start": "2026-03-29","end": "2026-06-27","val": 29789000000,"accn": "0000320193-26-000020","fy": 2026,"fp": "Q3","form": "10-Q","filed": "2026-07-31","frame": "CY2026Q2"}]}
Balance-sheet concepts carry only a period end (no start), because they are point-in-time values:
{"cik": "0000320193","ticker": "AAPL","companyName": "Apple Inc.","concept": "us-gaap/Assets","unit": "USD","label": "Assets","values": [{ "end": "2026-06-27", "val": 383266000000, "accn": "0000320193-26-000020", "fy": 2026, "fp": "Q3", "form": "10-Q", "filed": "2026-07-31", "frame": "CY2026Q2I" }]}
Example output item (filings mode)
{"cik": "0000320193","ticker": "AAPL","companyName": "Apple Inc.","form": "10-K","filedDate": "2025-10-31","reportDate": "2025-09-27","accessionNumber": "0000320193-25-000079","primaryDocument": "aapl-20250927.htm","fileUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm","indexUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/"}
Pricing & cost math
Pay-per-event — you only pay for what you fetch:
| Event | Price | When charged |
|---|---|---|
actor-start | $0.01 | Once per run |
filing-fetched | $0.003 | Per filing record returned |
financial-concept-fetched | $0.005 | Per XBRL concept × company returned |
Apify account tiers receive automatic discounts on every event (down to $0.005 / $0.0015 / $0.0025 per event at the top tier), so heavy users pay less per record without changing anything.
Example: AAPL + MSFT, mode=both, 10 filings, 4 concepts → 1 × $0.01 + 20 × $0.003 + 8 × $0.005 = $0.11.
Measured reference run — AAPL, mode=both, formTypes=[10-K], maxFilings=2 (default 10 concepts), on the Apify platform:
| Records returned | 12 (2 filings + 10 XBRL concepts) |
| Event charges | $0.066 |
| Compute | 0.00466 compute units, $0.00105 platform usage |
| Wall clock | 4.2 s |
Platform compute is under 2% of the event charges on that workload. To hard-cap spend, pass the maxTotalChargeUsd run option (the platform exposes it to the actor as the ACTOR_MAX_TOTAL_CHARGE_USD environment variable); the actor checks the returned charge limit on every event and exits gracefully instead of running up the bill.
Rate limits & legal
- The SEC allows up to 10 requests/second on
data.sec.gov. The actor issues its requests one at a time with a 120 ms minimum gap between them (~8 req/s), so normal workloads never hit the cap. ThemaxConcurrencyinput is accepted for forward compatibility, but requests are currently serialized by that rate limiter. - No proxy is needed for normal workloads (
proxyConfigis supported if you want one for a very large batch). - Data is sourced exclusively from the SEC's public data APIs, which the SEC explicitly permits for programmatic access (see SEC EDGAR API documentation). This actor is not affiliated with, endorsed by, or sponsored by the SEC.
Integrations
- Apify API: call via REST, schedule runs, or chain as a webhook target.
- Python & Node: run it through the Apify API with
apify-client(Python) orapify-client/apify(Node) — the dataset comes back as plain JSON records, no SEC-specific SDK to learn. - Make / n8n: use the Apify module with the actor ID and the JSON input above.
- MCP: expose the actor as an MCP tool via Apify's built-in MCP server for LLM agents.
- Webhooks: trigger on
SUCCEEDEDto pipe new filing data into Slack, Notion, or a database.
Other Apify actors for SEC data
- SEC EDGAR Filing Diff & Section-Level Redline Monitor — monitors SEC filings and returns section-level redline diffs when a document changes.
- Sanctions Screening API — GLEIF LEI & OFAC/EU/UN/UK Checker — screens legal entities against global sanctions lists by LEI.
FAQ
Is the SEC EDGAR API free?
Yes — the SEC's EDGAR endpoints are free and public. You only pay for this actor's per-event usage when a run actually fetches data (see the pricing table above).
Do I need an SEC EDGAR API key?
No. The SEC does not issue API keys for data.sec.gov; it asks for a descriptive User-Agent so it can contact you if your traffic misbehaves, and the actor sends one on your behalf. There is no signup, token, or OAuth step — just run the actor.
Can I call the SEC EDGAR API from Python?
Yes. Run the actor through the Apify API (or the apify-client Python package), a scheduled run, or as an MCP tool from an LLM agent, and the dataset comes back as a list of dicts. You skip the usual Python-side chores — fetching company_tickers.json to map a ticker to a CIK, retry/back-off around the 10 req/s budget, and walking the nested companyfacts structure.
What is a CIK number and how do I find it?
The CIK (Central Index Key) is the SEC's unique numeric identifier for every company — Apple, for example, is 0000320193. The actor resolves tickers to CIKs automatically; you can also pass CIKs directly if you know them (or look them up at sec.gov).
Which SEC filing types are supported?
All of them. Filter with the form code EDGAR uses: 10-K, 10-Q, 8-K, 4 (Form 4 insider transactions), 13F-HR (13F holdings), S-1, DEF 14A, and thousands of others. Use formTypes to filter the filing list to specific forms; leave it empty to get everything.
What is XBRL financial data?
XBRL is the machine-readable format US companies use to tag their financial statements. The SEC publishes these facts via its companyfacts API, which this actor reads and normalizes into per-concept JSON time-series.
What is the SEC EDGAR API rate limit?
10 requests per second. This actor issues requests serially with a 120 ms minimum gap (~8 req/s) and can stop charging the moment a run hits its spend cap, so normal workloads never come close to the SEC's cap.
How much does an SEC EDGAR API call cost?
Events are $0.01 per run, $0.003 per filing record, and $0.005 per concept per company, with automatic tier discounts. A single-company 10-K plus financials check lands around 7 cents; a 50-company fundamentals sweep is a few dollars. Set the maxTotalChargeUsd run option to make the ceiling explicit.
Limitations & support
- XBRL facts exist only for filers that submitted interactive data (iXBRL/XBRL) — essentially all large accelerated filers from ~2009 onwards.
- Historical filings before 1996 may have limited metadata.
- Companies retire XBRL tags over time, so a concept can have a short series (Apple's
us-gaap/Revenuesends in 2018). PassxbrlConceptsto target the tag your filer currently uses. - Very large batches (100+ companies) take a few minutes because of the SEC rate limit.
- Questions or ideas? Open an issue on the actor's Issues tab — open to feedback and custom solutions.