EDGAR Company Filings & XBRL Fundamentals Extractor avatar

EDGAR Company Filings & XBRL Fundamentals Extractor

Pricing

from $2.10 / 1,000 filing fetcheds

Go to Apify Store
EDGAR Company Filings & XBRL Fundamentals Extractor

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

Geo

Maintained by Community

Actor 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 pointExample value
Form type10-K, 10-Q, 8-K, 4, 13F-HR, DEF 14A
Filed date2025-10-31
Report period end2025-09-27
Accession number0000320193-25-000079
Primary document URLdirect link to the filed document
EDGAR index URLfull 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 endpointsThis actor
Ticker → CIKyou fetch company_tickers.json and join it yourselfresolved for you (or pass a CIK)
Rate limitingyou implement the 10 req/s budgetserialized request stream, 120 ms minimum gap (~8 req/s)
Filing metadataparallel arrays inside one large submissions JSONone JSON record per filing with ready-to-click URLs
XBRL financialsone multi-megabyte nested companyfacts file per companyper-concept time-series records, values capped at the 20 most recent
Output shapewhatever the SEC shipped that quartera stable schema you can write code against
Costfreepay-per-event, pennies per run

How to use the EDGAR filings API

  1. Open the actor in Apify Console and enter tickers (e.g. AAPL) or SEC CIK numbers (e.g. 0000320193).
  2. Choose the mode: filings, financials, or both (default).
  3. Optionally filter by formTypes, set maxFilings, and pick xbrlConcepts.
  4. 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:

EventPriceWhen charged
actor-start$0.01Once per run
filing-fetched$0.003Per filing record returned
financial-concept-fetched$0.005Per 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 returned12 (2 filings + 10 XBRL concepts)
Event charges$0.066
Compute0.00466 compute units, $0.00105 platform usage
Wall clock4.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.

  • 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. The maxConcurrency input is accepted for forward compatibility, but requests are currently serialized by that rate limiter.
  • No proxy is needed for normal workloads (proxyConfig is 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) or apify-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 SUCCEEDED to pipe new filing data into Slack, Notion, or a database.

Other Apify actors for SEC data

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/Revenues ends in 2018). Pass xbrlConcepts to 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.