Automation · Business data
SEC EDGAR Filings Scraper — 10-K, 10-Q & 8-K
Search SEC EDGAR filings by company ticker, CIK, or form type — resolve tickers to CIKs automatically and get each filing's form type, period, filing date, accession number, and primary-document URL as clean JSON, CSV, or Excel rows. We handle SEC's rate limits so your run never gets flagged.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
The SEC EDGAR system (sec.gov) publishes every public-company filing — 10-K annual reports, 10-Q quarterlies, 8-K material events, S-1 registration statements, proxy statements, Form 4 insider-transaction filings, SC 13D beneficial-ownership reports, and more. The system exposes both per-company submissions endpoints and full-text search APIs.
This SEC EDGAR filings scraper wraps the per-company submissions endpoint, resolves ticker symbols to 10-digit CIKs automatically, and writes one Pydantic-validated dataset row per filing — including form type, period, filing date, accession number, and the direct URL to the primary document. We handle the rate-limit ceiling (~10 req/sec polite limit), backoff on 429s, and User-Agent compliance so you never have to.
What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a legitimate browser session, not Python. - 🌐 Proxy rotation via Apify Proxy — fresh session and exit IP on every retry, keeping your run clean through any turbulence.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per request, withRetry-Afterheaders honoured automatically. - 🧱 Rate-limit-aware pacing — when EDGAR pushes back, we slow down instead of hammering and getting your run flagged.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable accession-number IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that land in your dataset. No data, no charge (beyond the small warm-up fee).
Use cases
- Earnings calendar automation — schedule a daily diff for 10-Q and 10-K filings across your covered companies. Build your own earnings calendar without paying for a vendor feed.
- 8-K filing alert and material-events monitoring — pull every 8-K for your watchlist; pipe to Slack or email via n8n / Make / Zapier. Sub-minute freshness is not guaranteed (SEC publishes in batches), but daily-cadence monitoring is solid.
- M&A and activist-investor monitoring — filter for S-4 merger filings and SC 13D beneficial-ownership disclosures. Ideal for investigative journalists and M&A research desks.
- Insider trading filings API substitute — harvest Form 4 filings for any issuer without a per-seat subscription. Use as a free research tool; complement sec-api.io for production.
- Investigative data journalism — structured rows ready for pandas, Jupyter, or R. Used by data-desk reporters at NICAR-affiliated newsrooms for document-heavy investigations.
- Academic finance research — replicate event-study datasets; bulk-download 10-Ks for NLP analysis; reconstruct historical S-1 filings for IPO research.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
tickers | array | yes | List of ticker symbols (e.g. AAPL) or 10-digit CIKs. We resolve tickers to CIKs via SEC's company_tickers.json. |
formTypes | array | no | Form types to include (e.g. 10-K, 10-Q, 8-K). Leave empty to include every form. |
maxResultsPerCompany | integer | no | Cap on filings returned per company. EDGAR returns ~1000 most recent per submissions call. |
userAgent | string | no | SEC requires a UA with a contact email. Default identifies as Devil Scrapes; replace if you want SEC to know it's your run. |
{
"tickers": [
"AAPL"
],
"formTypes": [
"10-K"
],
"maxResultsPerCompany": 3,
"proxyConfiguration": {
"useApifyProxy": false
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
ciktickercompany_nameform_typeaccession_numberfiling_datereport_dateacceptance_datetimeprimary_documentprimary_document_urlfiling_index_urlis_xbrlscraped_at
{
"cik": "0000320193",
"ticker": "AAPL",
"company_name": "Apple Inc.",
"form_type": "10-K",
"accession_number": "0000320193-24-000123",
"filing_date": "2024-11-01",
"report_date": "2024-09-28",
"acceptance_datetime": "2024-11-01T06:01:36.000Z",
"primary_document": "aapl-20240928.htm",
"primary_document_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm",
"filing_index_url": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000320193&type=10-K",
"is_xbrl": true,
"scraped_at": "2024-11-02T09:14:22.000Z"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0020 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- Filing history depth: we pull from each company's
submissions/CIK#.json, which covers the most recent ~1 000 filings. For historical filings beyond that window, the EDGAR full-text search and per-year archive endpoints need a separate request pattern. - Ticker resolution scope: ticker-to-CIK resolution works for the operating-company set in SEC's
company_tickers.json. Mutual-fund CIKs and individual-filer CIKs are supported if you supply the CIK directly. - Filing content: we surface
primary_document_urlandfiling_index_url— we do not download or parse the filing body. Pair with a generic HTML fetcher to retrieve the actual document text. - Sub-minute freshness: SEC publishes filings to EDGAR in processing batches; new filings can take minutes to appear in the submissions API. For near-real-time push, use SEC's RSS or PDS feeds alongside this scraper.
- Form 4 display names: insider-person names are in the XML body of the Form 4 — not in the submissions metadata we extract.
primary_document_urllinks directly to the XML for downstream parsing.
FAQ
What is a SEC EDGAR filings scraper used for?
Is there a SEC EDGAR filings API I can use instead?
How does this compare to sec-api.io or edgartools?
What is the SEC EDGAR filings API rate limit?
Can I use edgar full-text search with this Actor?
efts.sec.gov) lets you search filing content by keyword — useful for finding specific disclosures across all filers. A separate full-text search Actor is on the roadmap; contact us on the Issues tab if that workflow is blocking you.Do I need an API key?
Why is `report_date` sometimes null?
report_date is null for those rows.Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors