SEC EDGAR Filings Scraper
Pull SEC EDGAR filings as clean rows: form, company, date, accession number, and a direct document link. Search all filings or fetch by ticker/CIK.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
mode,query,forms(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.002 per item = $2 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Item returned | Charged per filing/result returned. | $0.002 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-12, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
mode | How to find filings. "search" runs an EDGAR full-text search across all filings using your query. "company" pulls a company's recent filing history by ticker or CIK. | string |
query | Full-text query for "search" mode (e.g. "artificial intelligence"). Matched as a phrase across filing documents. Required when mode is "search"; ignored in "company" mode. Note: SEC's full-text index is sparse — "search" rows often have null ticker, reportDate, and description (see README). Use "company" mode for more complete records. | string |
forms | Comma-separated SEC form types to filter by, e.g. "10-K,8-K". Leave empty for all forms. Applies to both modes. | string |
tickers | For "company" mode: one or more stock tickers (e.g. AAPL, TSLA) or numeric CIKs. Each company's filing history is fetched. Ignored in "search" mode. | array |
startDate | Only include filings filed on or after this date (YYYY-MM-DD). Optional. | string |
endDate | Only include filings filed on or before this date (YYYY-MM-DD). Optional. | string |
maxItems | Maximum number of filings to return across the WHOLE run (a total budget shared by all companies/queries, not a per-company cap). In "company" mode the run stops once this total is hit, so earlier tickers in the list can consume the budget before later ones. Full-text search itself caps at 10000 results. | integer |
notionConnector | Optional. Write each item as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default) — results are always saved to the dataset regardless. | string |
notionParentId | Optional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead. | string |
What you get
A structured dataset — each result includes fields like:
accessionNumbercikcompanyNamedescriptionfilingDatefilingUrlformprimaryDocumentreportDatetickerExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
2 ready-to-run use cases
Apple (AAPL) SEC Filings Scraper - EDGAR by Ticker
Apple's EDGAR filings pulled by ticker: every 10-K, 10-Q, and 8-K with filing date, accession number, and a direct link to each document.
EDGAR Full-Text Search: AI Across SEC Filings
Which companies mention artificial intelligence? Run a full-text search across EDGAR filings to find every 10-K and 8-K, with company and filing links.
Related tools in News & Finance Data
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Google News Scraper
Monitor Google News by keyword or topic and get structured articles with the real publisher URL, source, date, and snippet. No login, no API key.
GDELT Worldwide News Scraper
Search global news with the GDELT 2.0 API. Get articles with title, URL, domain, country, language, and date. Filter by keyword, timespan, country. No API key.
Yahoo Finance Scraper
Get Yahoo Finance data without an API key: search tickers, real-time quotes, and OHLCV price history for stocks, ETFs, FX and crypto as JSON.
CoinGecko Crypto Market Scraper
Scrape CoinGecko crypto market data with no API key: top coins by market cap, price, volume, 24h/7d change, supply, and ATH/ATL. Export to JSON, CSV, or Notion.
Where this tool sits
- Categories
- News & Finance Data
- Platforms
- Finance & Markets
SEC EDGAR Filings Scraper
Pull filings from the U.S. SEC's EDGAR system through its official public APIs — no API key, no login, no anti-bot to fight. Two modes:
- Full-text search — search the text of every filing for a phrase (e.g.
artificial intelligence), optionally narrowed to specific form types and a date window. - Company filings — give one or more tickers or CIKs (e.g.
AAPL,TSLA) and get that company's recent filing history.
Both modes return the same normalized shape, including a direct link to the primary filing document.
What you get per filing
form, companyName, cik, ticker, filingDate, reportDate, accessionNumber, primaryDocument, description, and filingUrl (a direct link to the document in https://www.sec.gov/Archives/...).
Which fields can be null. SEC's full-text search index does not return every field for every hit, so search-mode rows are sparser than company-mode rows. In particular, ticker, reportDate, and description are often null in search mode (EDGAR's full-text engine doesn't index a ticker for many filers, and report/period dates and document descriptions are inconsistently present). company mode (driven by the submissions API) is more complete, but reportDate, description, and ticker can still be null for some filings. filingUrl is null only when SEC didn't supply enough identifiers (cik + accession + primary document) to build a canonical Archives link. Treat these fields as best-effort, not guaranteed.
Input
| Field | Notes |
|---|---|
mode | search (full-text) or company (by ticker/CIK). Default search. |
query | Phrase for search mode, e.g. "artificial intelligence". Required in search mode. |
forms | Comma-separated form types, e.g. 10-K,8-K. Optional; applies to both modes. |
tickers | Array of tickers or CIKs for company mode, e.g. ["AAPL","TSLA"]. |
startDate / endDate | Optional YYYY-MM-DD filing-date window. |
maxItems | Cap on total rows across the whole run (a shared budget, not per-company). In company mode, earlier tickers can use up the budget before later ones. Full-text search itself caps at 10000 results. |
proxyConfiguration | Optional. SEC's public API has no anti-bot, so a proxy gives no scraping benefit and this actor does no IP rotation. Off by default; enable only for anonymity, geolocation, or your own network's rate limits. |
Output
One dataset row per filing, deduplicated by accessionNumber + primaryDocument. Empty results return a single diagnostic row and are not charged.
Examples
Full-text search:
{ "mode": "search", "query": "artificial intelligence", "forms": "10-K", "maxItems": 50 }
Company filings:
{ "mode": "company", "tickers": ["AAPL", "TSLA"], "forms": "10-K,8-K", "maxItems": 50 }
Sample output row
{
"ok": true,
"form": "10-K",
"companyName": "Example Corp",
"cik": "0000320193",
"ticker": "EXMP",
"filingDate": "2024-02-01",
"reportDate": "2023-12-31",
"accessionNumber": "0000320193-24-000006",
"primaryDocument": "exmp-20231231.htm",
"description": "10-K",
"filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000006/exmp-20231231.htm"
}
In search mode, ticker, reportDate, and description are frequently null (EDGAR's full-text index is sparse). See "Which fields can be null" above.
Pricing
$2.00 per 1,000 filings ($0.002 each), with no run-start fee. Flat rate — no volume tiers, no plan gates — and you are charged only for filing rows actually returned.
This covers general EDGAR full-text search, not a single narrow filing type, and the $0.002 per row is the rate on your very first run — there is no entry tier to climb out of and no plan gate.
Pay-per-result: you are charged once per filing row returned. Empty runs, blocked/error runs, and diagnostic rows (ok:false) are never charged — only genuine filing rows (ok:true) bill. Bad input (e.g. an empty query in search mode, or no tickers in company mode) returns a single uncharged BAD_INPUT diagnostic row rather than failing the run. There is no per-query fee, so a full-text search that walks thousands of hits costs exactly $0.002 per row you keep.
Troubleshooting
- Sparse rows / null ticker or dates — expected in
searchmode; SEC's full-text index omits these for many filers. Usecompanymode for richer records. - Some tickers returned nothing in company mode — the run pushes a
NOT_FOUNDdiagnostic row listing exactly which ticker(s)/CIK(s) failed to resolve or had no matching filings. - A
BLOCKED/RATE_LIMITEDdiagnostic — SEC has no anti-bot, so this almost always means your own network or a misconfigured proxy is being throttled; the actor already backs off and retries. Try again, or turn the proxy off if you enabled one.
Notes
This actor follows SEC's fair-access policy: every request carries a descriptive contact-style User-Agent (required — SEC returns 403 without one), uses gzip, and keeps a polite gap between requests. Full-text search covers filings indexed by EDGAR's full-text engine and is limited to 10000 results per query — split large jobs by form type or date window. Company mode returns the most recent ~1000 filings per company from the submissions API.