SEC EDGAR Scraper avatar

SEC EDGAR Scraper

Pricing

from $0.40 / 1,000 filing fetcheds

Go to Apify Store
SEC EDGAR Scraper

SEC EDGAR Scraper

Fetches SEC EDGAR filings, normalized financial statements, XBRL facts, insider trades (Form 4), institutional holdings (13F), activist stakes (13D/G), full-text search hits, and parsed 8-K items via official SEC APIs. Zero anti-bot. Optional AI summaries.

Pricing

from $0.40 / 1,000 filing fetcheds

Rating

5.0

(1)

Developer

Omar Eldeeb

Omar Eldeeb

Maintained by Community

Actor stats

6

Bookmarked

74

Total users

15

Monthly active users

5 days ago

Last modified

Share

What does SEC EDGAR Scraper do?

SEC EDGAR Scraper fetches structured data directly from the U.S. Securities and Exchange Commission's official EDGAR system — every public filing, every XBRL financial fact, every insider trade, every institutional holding — and delivers it as clean JSON or CSV you can feed straight into a pipeline.

It uses the SEC's official data APIs (data.sec.gov, efts.sec.gov, www.sec.gov/Archives/edgar), which are public-domain, zero-auth, and fully commercial-safe. No CAPTCHAs, no scraping fragility — just the same data that Bloomberg, FactSet, and sec-api.io resell, delivered cheaper and on your own Apify schedule.

Built with TypeScript on the Apify SDK. Respects SEC fair-use limits automatically, so it never gets throttled.

Why use SEC EDGAR Scraper?

  • Financial analysts — pull normalized income statements, balance sheets, and cash flows for any U.S. public company with one call. No more wrestling with XBRL.
  • Hedge funds & quants — monitor insider trades (Form 4), institutional position changes (13F), and activist stake accumulations (13D/G) as filings land.
  • M&A / PE dealmakers — auto-parse 8-K item codes (2.01 acquisitions, 5.02 exec changes, 4.01 auditor changes) to surface deal signals the moment they're filed.
  • Investment research & AI/LLM teams — pipe 20+ years of filings into your model with structured metadata, AI-generated filing summaries, and full-text search.
  • Compliance & governance teams — track peer filings, proxy statements, and disclosure trends with date-range filters and scheduled runs.

How to use SEC EDGAR Scraper

  1. Pick a mode: filings, xbrl_facts, financials, full_text_search, form4, form13f, activist, latest_feed, or eight_k_items.
  2. For company-scoped modes, add one or more tickers (e.g. AAPL, TSLA) — or CIKs, company names, or domains. The actor auto-resolves to canonical SEC CIK.
  3. Optional filters: forms (10-K, 10-Q, 8-K, etc.), dateFrom / dateTo, maxItems, form-specific filters.
  4. Run the actor. Results land in the default dataset.
  5. Export as JSON, CSV, Excel, or XML from the Apify Console — or pipe into a webhook / pull via API.
  6. Want daily updates? Enable incremental mode and schedule the actor to run daily — only new or changed items are emitted.

Input

The simplest possible input — fetch Apple's recent 10-K and 10-Q filings:

{
"mode": "filings",
"tickers": ["AAPL"],
"forms": ["10-K", "10-Q"],
"maxItems": 20
}

Get normalized income statements for Microsoft over the past 5 fiscal years:

{
"mode": "financials",
"tickers": ["MSFT"],
"statementTypes": ["income_statement"],
"fiscalPeriods": ["FY"],
"dateFrom": "2020-01-01",
"maxItems": 10
}

Find every 10-K that mentions "artificial intelligence" in 2025:

{
"mode": "full_text_search",
"searchQuery": "artificial intelligence",
"forms": ["10-K"],
"dateFrom": "2025-01-01",
"dateTo": "2025-12-31",
"maxItems": 500
}

Track recent insider buying at Tesla worth at least $100,000:

{
"mode": "form4",
"tickers": ["TSLA"],
"transactionCodes": ["P"],
"minTransactionValue": 100000,
"dateFrom": "2025-01-01",
"maxItems": 50
}

Pull 13F institutional holdings for Berkshire Hathaway (CIK 1067983):

{
"mode": "form13f",
"tickers": ["1067983"],
"maxItems": 500
}

Get activist (Schedule 13D) stake accumulations for any ticker under pressure:

{
"mode": "activist",
"tickers": ["DIS"],
"activistOnly": true,
"maxItems": 20
}

Generate AI-powered summaries of a company's 8-K earnings releases:

{
"mode": "eight_k_items",
"tickers": ["NVDA"],
"eightKItemCodes": ["2.02"],
"enableAiSummary": true,
"maxItems": 8
}

Output

Example output from filings mode:

{
"type": "filing",
"cik": "320193",
"ticker": "AAPL",
"companyName": "Apple Inc.",
"form": "10-K",
"accessionNumber": "0000320193-25-000079",
"filingDate": "2025-10-31",
"reportDate": "2025-09-27",
"acceptanceDateTime": "2025-10-31T18:04:43.000Z",
"primaryDocument": "aapl-20250927.htm",
"primaryDocDescription": "10-K",
"items": null,
"isXBRL": true,
"isInlineXBRL": true,
"size": 6391250,
"filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm",
"filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.htm",
"aiSummary": null,
"scrapedAt": "2026-04-19T20:05:49.147Z"
}

Example output from financials mode (normalized income statement):

{
"type": "financial_statement",
"cik": "320193",
"ticker": "AAPL",
"companyName": "Apple Inc.",
"statementType": "income_statement",
"period": "2025-FY",
"periodStart": "2024-09-29",
"periodEnd": "2025-09-27",
"fiscalYear": 2025,
"fiscalPeriod": "FY",
"form": "10-K",
"filedDate": "2025-10-31",
"accessionNumber": "0000320193-25-000079",
"currency": "USD",
"lineItems": [
{ "label": "Revenue", "concept": "RevenueFromContractWithCustomerExcludingAssessedTax", "value": 416161000000, "unit": "USD" },
{ "label": "Cost of Revenue", "concept": "CostOfGoodsAndServicesSold", "value": 220960000000, "unit": "USD" },
{ "label": "Gross Profit", "concept": "GrossProfit", "value": 195201000000, "unit": "USD" },
{ "label": "Operating Income", "concept": "OperatingIncomeLoss", "value": 133050000000, "unit": "USD" },
{ "label": "Net Income", "concept": "NetIncomeLoss", "value": 112010000000, "unit": "USD" },
{ "label": "EPS Diluted", "concept": "EarningsPerShareDiluted", "value": 7.46, "unit": "USD/shares" }
],
"filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.htm"
}

How statement rows are built:

  • One period per row. Every value belongs to the row's own period (periodStart → periodEnd). Each (statementType, period) appears once per company.
  • Fiscal labels follow the company's calendar. fiscalYear is the company's own fiscal-year convention (Apple's FY2025 ends 2025-09-27; Target's FY2023 ends 2024-02-03; Walmart's FY2025 ends 2025-01-31). Quarters are numbered by their position in that fiscal year.
  • As originally reported. All values in a row come from the single filing in accessionNumber / filingUrl: the 10-K (fiscal years) or 10-Q (quarters) for that period — or its amendment, if a 10-K/A or 10-Q/A restated it. Later restatements and split adjustments show up in later filings (and in xbrl_facts mode), not in an older row. Periods older than a company's first XBRL filing come from the earliest filing that disclosed them (a 10-K for fiscal years).
  • Quarter shapes. Quarterly income statements are the 3-month quarter; quarterly cash-flow statements are year-to-date as filed (periodStart shows the window); balance sheets are as of periodEnd (periodStart is null). Q4 has an income statement only (the Q4 balance sheet and year-to-date cash flow are the FY rows). When the 10-K does not report the fourth quarter separately, its money lines are computed as fiscal year minus the nine-month year-to-date and marked "derived": true; per-share and share-count lines are never derived.
  • IFRS filers (20-F / 40-F, e.g. TSMC) are supported for the same line items, in the reporting currency (currency, e.g. TWD); their concept values carry an ifrs-full: prefix. Companies whose SEC data has no US-GAAP or IFRS statements get 0 rows and a status message saying so.
  • Incremental mode re-emits a statement only when its values change (e.g. a 10-K/A restatement). If your incremental state was written by a version before value tracking (October 2026), each statement it covers is re-sent once with "correction": true at no charge — older versions could have delivered another year's figures under that period.
  • Quarter numbering follows each company's own calendar, including uneven ones (Kroger's first quarter is 16 weeks). Every value in a row is in the row's currency — foreign filers' US-dollar convenience translations are never mixed in.
  • Derived Q4 lines are only computed when the fiscal year and the nine months come from filings on the same basis (both original or both amended); a computed revenue or expense line that would be negative is left out.

Example output from activist mode (structured Schedule 13D, filed since December 2024):

{
"type": "activist_filing",
"cik": "92380",
"ticker": "LUV",
"companyName": "SOUTHWEST AIRLINES CO",
"form": "SCHEDULE 13D/A",
"isActivist": true,
"filerNames": ["Elliott Investment Management L.P."],
"filerCiks": ["1791786"],
"percentOwnership": 4.9,
"sharesOwned": 24308000,
"eventDate": "2026-04-02",
"filingDate": "2026-04-03",
"accessionNumber": "0000902664-26-001872",
"filingUrl": "https://www.sec.gov/Archives/edgar/data/92380/000090266426001872/0000902664-26-001872-index.htm"
}

Example output from form4 mode (insider trade):

{
"type": "form4_transaction",
"cik": "320193",
"ticker": "AAPL",
"companyName": "Apple Inc.",
"insiderName": "Borders Ben",
"insiderCik": "0002100523",
"insiderTitle": "Principal Accounting Officer",
"isOfficer": true,
"isDirector": false,
"isTenPercentOwner": false,
"transactionType": "other",
"transactionCode": "F",
"shares": 892,
"pricePerShare": 266.43,
"totalValue": 237655.56,
"sharesOwnedAfter": 39987,
"transactionDate": "2026-04-15",
"filingDate": "2026-04-17"
}

Data fields

FieldTypeDescription
typeenumDiscriminator: filing, xbrl_fact, financial_statement, full_text_hit, form4_transaction, form13f_holding, activist_filing, eight_k_parsed
cikstringSEC Central Index Key (company identifier)
tickerstring?Stock ticker, when known
companyNamestringRegistrant name as filed
formstringForm type (10-K, 10-Q, 8-K, 4, 13F-HR, SC 13D / SCHEDULE 13D, etc.)
filingDatedateWhen the filing was submitted to SEC
reportDatedate?Period the filing reports on (e.g. fiscal year-end)
accessionNumberstringUnique SEC filing identifier
filingUrlurlDeep link to the primary filing document
filingIndexUrlurlDeep link to the filing's index page (all exhibits)
scrapedAttimestampWhen this record was emitted by the actor
aiSummaryobject?AI-generated structured summary (only when enableAiSummary is on)

Mode-specific fields (line items, transactions, XBRL facts) are documented inside each mode's output rows — see the examples above.

How much does it cost to scrape SEC EDGAR?

Pay only for what you use. Each chargeable event has its own price:

EventPriceWhen it fires
filing-fetched$0.40 per 1,000Any filing, insider trade, 8-K item, activist stake, or 13F holding emitted
xbrl-fact-fetched$0.15 per 1,000Raw XBRL financial fact (one revenue data point, one EPS number, etc.)
fulltext-hit-fetched$0.30 per 1,000A filing matched by your full-text search query
change-detected$0.30 per 1,000A new or updated item surfaced via incremental mode
ai-summary-generated$0.05 eachAn AI structured summary (premium; only when enableAiSummary is on)

Normalized financial statements (financials mode) currently carry no per-statement charge — a financials run costs only the Actor start fee.

Actor start fee: every run is charged one $0.01 start event per GB of memory (default 4 GB → $0.04 per run). Lower the run memory to pay less.

Free trial: The first 50 chargeable events per run are free. Test any mode, see real output, pay nothing until you're confident.

Typical event costs (list price, before the per-run free events and the start fee):

TaskEventsCost
Fetch 500 recent filings for 5 tickers500 filings$0.20
Pull 10 years of quarterly financials for a single ticker120 statements$0.00
Full-text search "AI" across 2025 10-Ks (top 1000 hits)1,000 hits$0.30
500 insider trades at 20 S&P 500 companies500 filings$0.20
Track 13F holdings for 3 hedge funds (8000 holdings)8,000 filings$3.20
AI-summarize 50 earnings 8-Ks50 filings + 50 summaries$2.52

Compared to sec-api.io ($100/mo minimum) and Bloomberg terminals ($24k/user/year), this actor pays off even at heavy use.

Tips & advanced options

  • Incremental mode — set incrementalMode: true and schedule the actor (e.g. daily at 09:00 EST). On each run, only new or changed items are emitted, so your downstream systems see a clean delta stream.
  • Combining filters — all company-scoped modes accept forms and dateFrom / dateTo together. Example: recent 10-Q filings from the past 90 days for a watchlist of 50 tickers.
  • Custom XBRL concepts — in xbrl_facts mode, provide the exact US-GAAP concept names (e.g. StockholdersEquity, LongTermDebtNoncurrent). See SEC's XBRL taxonomy for the full catalog.
  • Multi-ticker runs — the tickers field accepts an array. One run for 100 companies is cheaper than 100 runs for 1 company each (fewer actor-start charges).
  • AI summaries on long filings — set aiSummaryMaxChars to truncate input. For 10-Ks (often 100k+ chars), 60k is usually enough to catch all material items.
  • Chaining with Apify webhooks — pipe results into Make.com, Zapier, Power BI, or a Slack channel using Apify's integrations.

EDGAR is a U.S. government system operated by the Securities and Exchange Commission. Data returned by this actor is public-domain and subject to the SEC.gov Privacy and Security Policy. This actor operates within SEC's published fair-use guidelines (≤10 requests/second, User-Agent header with contact info). You are responsible for complying with any downstream redistribution terms (e.g. GDPR if you're processing EU-linked data, or your local data-handling laws).

FAQ & support

Does this actor require an SEC API key? No. SEC EDGAR APIs are public-domain and unauthenticated. This actor sends a compliant User-Agent header automatically.

How fresh is the data? Filings appear in the submissions API within seconds of SEC acceptance. XBRL fact APIs can lag by a minute during 8-K peak hours. Full-text search index lags by 15–30 minutes on average.

What if my ticker isn't resolving? The SEC ticker list covers ~8,000 U.S.-listed public companies. For foreign filers (20-F issuers), closed-end funds, and some OTC stocks, pass the CIK directly in tickers (e.g. "1067983" for Berkshire Hathaway).

Can I run this on a schedule? Yes. Set incrementalMode: true and use Apify's scheduler. Daily runs after 6pm ET (after daily SEC close) catch the full day's filings.

What about 10-K amendments and restatements? Amendments (10-K/A, 10-Q/A) are returned as separate filings with the amendment form code. Use forms: ["10-K", "10-K/A"] to get both originals and amendments.

Something's wrong / I have a feature request. Open an issue on the actor's Issues tab or email the maintainer. Common requests (peer benchmarking, risk-factor diffing, proxy statement parsing) are on the roadmap.

Known limitations

  • activist mode skips 13D/13G filings the company submitted itself, without downloading them (these are almost always stakes the company holds in other issuers). A rare issuer-filed Schedule 13G about its own shares on behalf of an insider (e.g. NIKE, 2016) is therefore not returned.
  • Statement periods older than the company's first XBRL filing come from later filings' comparatives and may include a different line-item set.

Changelog

  • 2026-10 (fixes, round 3) — Fiscal years of 52/53-week calendars that end in the first days of January (Domino's, Kraft Heinz) are labelled correctly and no longer dropped. Per-share values on non-USD rows use the reporting currency (TSMC, Alibaba). Uneven quarters (Kroger) are kept. Derived Q4 values no longer mix amended and original filings. Incremental state from older versions triggers one uncharged correction per statement.
  • 2026-10 (fixes, round 2) — financials mode: fiscal-year and quarter labels no longer depend on the per-filing year/period tags SEC stores (wrong for some NVIDIA, GE, Target and Walmart filings), so each label appears once and points at the right period. Every value in a row now comes from the filing it links to (as originally reported). Q4 rows are income statements only (computed from the 10-K when it does not report Q4 separately). IFRS filers such as TSMC are supported. In incremental mode a statement only counts as changed when its values change, so re-runs no longer report phantom changes. activist mode: 13D/13G filings in which the requested company is the holder of another company's shares are skipped, including older SC 13D/G filings (matched on the issuer named on the cover page). Filings the company submitted itself are skipped before download, and each run fetches at most max(60, 4 × maxItems) documents.
  • 2026-10 (fixes) — financials mode: every statement row now holds the values of its own period. Previously a row could mix in a prior year's comparatives (e.g. a "2025-FY" row with 2023 numbers), because SEC tags every comparative in a 10-K with the filing's fiscal year. Rows now also carry periodStart, the correct periodEnd, and link to the filing that first reported that period. activist mode: reporting-person names and event dates are parsed cleanly (no more truncated fragments), eventDate is always YYYY-MM-DD, and the structured SCHEDULE 13D / SCHEDULE 13G filings EDGAR has used since 2024-12-18 are now included (with filerCiks). Filings where the requested company is itself the holder of another company's shares are no longer reported as stakes in that company.
  • 2026-10 — AI summaries (enableAiSummary) move from Gemini 2.5 Flash (retired by the provider on 2026-10-20) to Gemini 3.5 Flash Lite. The aiSummary.model output value changes from google/gemini-2.5-flash to google/gemini-3.5-flash-lite; every other field keeps its name and meaning. AI calls now retry transient failures (timeouts, rate limits, server errors, malformed answers) before giving up, and a summary is charged only when a complete answer comes back. If the AI provider reports a credit or key problem, AI stops for the rest of the run with a clear status message; filings are still delivered with aiSummary: null and no AI summary is charged.