SEC EDGAR Full-Text Search (Official API)
Pricing
Pay per event
SEC EDGAR Full-Text Search (Official API)
Search every SEC EDGAR filing since 2001 by phrase, form type, ticker and date. Normalized rows with company, ticker, CIK, form, 8-K items, SIC, state and direct document links. Built for AI agents and alerts.
Search the full text of every SEC EDGAR filing since 2001 — 10-K, 10-Q, 8-K, S-1, proxies, exhibits — for any phrase, and get clean, analyst-ready rows: company, tickers, CIK, form, filing date, 8-K item numbers, SIC, state, and direct links to the document and the filing index.
Uses SEC's own full-text search (efts.sec.gov) — no scraping of HTML, no API key, no proxies.
What it does better
- Past SEC's 10,000-hit wall. EDGAR's search stops at 10,000 results; this Actor automatically splits the date range so you can pull up to 50,000 rows in one run (tested: 32,694 "going concern" documents for 2025 in one run).
- Ticker or CIK lookups with or without a search phrase (e.g. "every Apple 10-K").
- Fails loudly on bad input — invalid dates, unknown tickers — instead of silently searching everything.
- No duplicates, optional one-row-per-filing mode.
- Fast: ~1,500 rows in ~7 s, 12,000 rows in ~2 min on 256 MB.
- Fair to SEC: max 5 requests/second (SEC's limit is 10), declared User-Agent, exponential backoff on 429/5xx.
Examples
Going-concern warnings in 8-Ks this quarter
{ "query": "\"going concern\"", "forms": ["8-K"], "startDate": "2026-07-01", "endDate": "2026-09-30", "maxResults": 500 }
Boolean: going concern AND material weakness in 2025 10-Ks
{ "query": "\"going concern\" AND \"material weakness\"", "forms": ["10-K"], "startDate": "2025-01-01", "endDate": "2025-12-31" }
Cybersecurity incident disclosures (Item 1.05)
{ "query": "\"Item 1.05\" OR \"cybersecurity incident\"", "forms": ["8-K"], "startDate": "2026-01-01" }
Every Apple 10-K (no phrase needed)
{ "tickers": ["AAPL"], "forms": ["10-K"] }
Tesla 8-Ks by CIK, one row per filing
{ "ciks": ["1318605"], "forms": ["8-K"], "startDate": "2025-01-01", "dedupeByFiling": true }
New IPO registrations (S-1) since June
{ "query": "\"initial public offering\"", "forms": ["S-1"], "startDate": "2026-06-01" }
Input
| Field | Description |
|---|---|
query | Full-text query. "quotes" = exact phrase. Supports AND, OR, NOT. Optional if you give tickers/CIKs. |
forms | Form types, e.g. 8-K, 10-K, 10-Q, S-1, DEF 14A. SEC includes amendments (8-K/A). Empty = all. |
tickers | Limit to companies by ticker. Unknown tickers are skipped with a warning; if none are valid the run fails. |
ciks | Limit by SEC CIK number (works for companies without tickers). |
startDate / endDate | YYYY-MM-DD. Default: last 30 days for phrase searches, 2001-01-01 for ticker/CIK lookups. |
maxResults | Stop after N rows (1–50,000, default 100). You pay per row. |
dedupeByFiling | Off: one row per matching document (main doc + exhibits). On: one row per filing. |
userAgent | Optional. SEC asks for a name + email. |
A SUMMARY record in the key-value store gives total matches, rows returned and timing.
Sample output
{"companyName": "HEALTHY CHOICE WELLNESS CORP.","tickers": ["HCWC"],"cik": "1948864","form": "8-K","rootForm": "8-K","fileDate": "2026-09-17","periodEnding": "2026-09-17","accessionNumber": "0001493152-26-043135","documentType": "EX-99.1","documentDescription": "EX-99.1","items8K": ["1.01", "2.01", "2.02", "9.01"],"sic": "5411","state": "FL","location": "Hollywood, FL","stateOfIncorporation": "DE","fileNumber": "001-42274","otherFilers": [],"documentUrl": "https://www.sec.gov/Archives/edgar/data/1948864/000149315226043135/ex99-1.htm","filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/1948864/000149315226043135/0001493152-26-043135-index.htm","matchScore": 12.39,"query": "\"going concern\""}
Pricing (pay per event)
- $0.005 per run
- $0.001 per filing row ($1 per 1,000). Platform compute is included — you pay only the per-run and per-row fees above. If your run hits your spending limit, the Actor stops and never returns unpaid rows.
Output fields
| Field | Type | Description |
|---|---|---|
companyName | string | Filer name |
tickers | array | Tickers (if any) |
cik | string | SEC Central Index Key |
form / rootForm | string | Form as filed (e.g. 8-K/A) and root form (8-K) |
fileDate / periodEnding | date | Filing date and period of report |
accessionNumber | string | SEC accession number |
documentType / documentDescription | string | Main document or exhibit type (e.g. EX-99.1) |
items8K | array | 8-K item numbers (e.g. 1.01, 2.02, 1.05) |
sic | string | Industry SIC code |
state / location / stateOfIncorporation | string | Business address state, city and incorporation state |
fileNumber | string | SEC file number |
otherFilers | array | Co-filers on the same filing |
documentUrl / filingIndexUrl | URL | Direct document link and filing index |
matchScore | number | SEC relevance score |
query | string | Query that matched |
What it costs (worked examples)
| Run | Rows | Cost |
|---|---|---|
| Daily alert, small | 50 | $0.005 + $0.05 = $0.055 |
| Quarter of going-concern 8-Ks | 1,000 | $0.005 + $1.00 = $1.005 |
| Full-year research pull | 50,000 | $0.005 + $50.00 = $50.005 |
How it compares
| This Actor | EDGAR full-text search website | |
|---|---|---|
| Max results per search | 50,000 (auto date-splitting) | 10,000 |
| Ticker → CIK lookup | Built in | Manual |
| Output | Normalized rows: tickers, 8-K items, SIC, state, links | Web result list |
| Export / schedule / API | JSON, CSV, Excel, API, schedules, webhooks | Manual |
| Bad input | Fails with a clear message | Silently broad results |
Use with AI agents (MCP), n8n, Make and Zapier
MCP (Claude, Cursor, any MCP client):
{ "mcpServers": { "apify": { "type": "http", "url": "https://mcp.apify.com/?tools=contented_catwalk/sec-edgar-full-text-search" } } }
Ask your agent e.g. "Find 8-Ks filed this week that mention a cybersecurity incident and list the companies."
n8n: add the Apify node → Run an Actor and get dataset items → Actor contented_catwalk/sec-edgar-full-text-search → paste an example input. Add a Schedule trigger for daily alerts to Slack, email or Sheets.
Make / Zapier: Apify app → Run Actor, then Get Dataset Items.
API: POST https://api.apify.com/v2/acts/contented_catwalk~sec-edgar-full-text-search/run-sync-get-dataset-items?token=<YOUR_TOKEN> with the input JSON as the body.
Limits & FAQ
- Coverage: SEC full-text search covers 2001 onward. Older filings aren't searchable.
- Max 50,000 rows per run. Schedule daily/weekly runs for alerts instead of huge back-fills.
- Why more rows than filings? A filing has several documents (main + exhibits); each matching document is a row. Turn on
dedupeByFilingfor one row per filing. - Ordering: by SEC relevance within each date window; newest windows first on very large pulls.
- Does it download the full text? No — it returns links to the documents. Pair with a document fetcher if you need text.
- Is a 10-K/A included when I ask for 10-K? Yes, SEC treats amendments as the same root form; filter on
formif you don't want them. - Empty results finish successfully with 0 rows and a warning; invalid input fails with a clear message (and costs nothing beyond the start fee).
Data source & terms
SEC EDGAR public full-text search and company_tickers.json. SEC data is public; requests follow SEC's fair-access policy. Not affiliated with or endorsed by the U.S. SEC.