SEC EDGAR Filings Scraper
Pricing
Pay per event
SEC EDGAR Filings Scraper
Search SEC EDGAR (US public company filings) by company ticker, CIK, or form type. Returns each filing's CIK, form type, period, filing date, accession number, and primary-document URL. Built on SEC's free EDGAR full-text search API.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
🎯 What this scrapes
The SEC EDGAR system (sec.gov) publishes every public-company filing — 10-K, 10-Q, 8-K, S-1, proxy statements, you name it — and exposes both per-company and full-text search APIs (free, no key, just a user-agent contact). This Actor wraps the per-company submissions endpoint and writes one row per filing.
🔥 What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- Earnings calendar automation — daily diff for 10-Q filings across your covered companies.
- Material-events monitoring — pull every 8-K for your portfolio.
- M&A monitoring — filter for S-4 and SC 13D filings.
- Insider activity — Form 4 filings linked from each issuer.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
tickers | array | yes | ['AAPL', 'MSFT'] | List of ticker symbols (e.g. AAPL) or 10-digit CIKs. We resolve tickers to CIKs via SEC's company_tickers.j |
formTypes | array | no | ['10-K', '10-Q'] | Form types to include (e.g. 10-K, 10-Q, 8-K). Leave empty to include every form. |
maxResultsPerCompany | integer | no | 20 | Cap on filings returned per company. EDGAR returns ~1000 most recent per submissions call. |
userAgent | string | no | 'DevilScrapes-EDGAR/1.0 (contact: apify.com/DevilScrapes)' | SEC requires a UA with a contact email. Default identifies as Devil Scrapes; replace if you want SEC to know it's your r |
proxyConfiguration | object | no | {'useApifyProxy': False} | SEC accepts polite anonymous requests. Proxy optional. |
Example input
{"tickers": ["AAPL"],"formTypes": ["10-K"],"maxResultsPerCompany": 3,"proxyConfiguration": {"useApifyProxy": false}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
cik | string | 10-digit CIK (zero-padded). |
ticker | ['string', 'null'] | Ticker (if we resolved from one). |
company_name | string | Registrant name. |
form_type | string | Form type (10-K, 10-Q, 8-K, S-1, etc.). |
accession_number | string | Accession (e.g. 0000320193-24-000123). |
filing_date | string | Filing date (YYYY-MM-DD). |
report_date | ['string', 'null'] | Reporting-period end date. |
acceptance_datetime | ['string', 'null'] | Acceptance timestamp. |
primary_document | ['string', 'null'] | Primary document filename. |
primary_document_url | string | Direct URL to the primary HTML/PDF. |
filing_index_url | string | EDGAR filing index URL. |
is_xbrl | ['boolean', 'null'] | Whether the filing has XBRL data. |
scraped_at | string | When this row was recorded. |
Example output
{"cik": "0000320193","ticker": "AAPL","company_name": "Apple Inc.","form_type": "10-K","accession_number": "0000320193-24-000123","filing_date": "2024-11-01","primary_document_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.005 | One-off warm-up charge per run |
result | $0.002 | Per dataset item |
Example: 1 000 results at the rates above ≈ $2.00. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
We pull from each company's submissions/CIK#.json (last ~1000 filings). For older history beyond that, hit the per-year archive endpoints. Mutual-fund and individual-filer CIKs are supported, but ticker resolution only works for the operating-company set in company_tickers.json.
❓ FAQ
Is this real-time?
EDGAR filings appear in submissions JSON within minutes of acceptance. For sub-second push-notifications, use SEC's RSS or PDS feeds.
Do I need an API key?
No — SEC requires only a contact User-Agent (default supplied).
Can I get filing content?
We surface primary_document_url. Pair with a generic HTML fetcher to download the body.
Why is report_date sometimes empty?
Some forms (8-K) don't have a reporting period — only a filing date.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.