SEC EDGAR API
SEC EDGAR is a full-text search and a submissions feed, but the useful data is trapped behind a User-Agent contract, a CIK zero-padding rule and two different response shapes for search versus company mode. This endpoint returns filings as rows — company, CIK, form type, filing date, description and a direct document link — whether you searched the full text of every filing by keyword or asked for one company's history by ticker.
$0.0005 per delivered filing · $2 free every month · Failed runs never billed
$ curl $QD/sec_filings/run \
-H "Authorization: Bearer $QD_API_KEY" \
-d '{"query": "artificial intelligence risk factors", "forms": "10-K", "max_results": 20}'
{ "status": "done", "count": 20,
"results": [
{
"company": "…",
"cik": "…",
"form": "…",
"filed_date": "…" } ],
"cost": 0.01 }
# 20 filings × $0.0005 · nothing delivered, nothing charged
What a SEC EDGAR API does
EDGAR exposes two surfaces that answer different questions. Full-text search scans the body of every 10-K, 8-K or S-1 for a phrase and returns the matching documents; company mode takes a ticker, resolves it to the numeric CIK and lists that filer's recent submissions. Both come back here as the same flat row shape, with the filing URL already assembled from the accession number so you never build the path yourself.
The reason not to hit EDGAR directly is the ritual around it: a descriptive User-Agent is mandatory, requests are capped per second, and CIKs must be zero-padded to ten digits in some calls and passed bare in others while the two modes disagree on field names. Resolving a ticker to a CIK, honouring the cap and normalising both responses into one schema is the part that turns "an afternoon" into a column in your dataset.
What one filing looks like
Every delivered filing carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.
| Field | Type | What it holds |
|---|---|---|
rank | integer | 1-based position. |
company | string · nullable | Filer name. |
cik | string · nullable | SEC CIK. |
form | string · nullable | Form type (10-K, 8-K…). |
filed_date | string · nullable | Filing date. |
report_date | string · nullable | Period of report (company mode). |
file_type | string · nullable | Document type (search mode). |
description | string · nullable | Document description (search mode). |
accession | string · nullable | Accession number. |
is_xbrl | boolean · nullable | Whether the filing has XBRL data (company mode). |
url | string · nullable | Direct link to the filing document. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
query | string | no | Full-text search across all filings. Use this OR ticker/cik. |
ticker | string | no | Company ticker — resolved to its CIK. Use with company mode. |
cik | string | no | SEC Central Index Key (numeric). Alternative to ticker. |
forms | string | no | Filter to a form type, e.g. 10-K, 8-K, S-1. |
max_results | integer | no | How many filings to deliver at most (1–100). You pay only for delivered filings. |
Pricing
SEC EDGAR API pricing
$0.0005 per delivered filing. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 4,000 filings before you spend anything.
Pay as you go
- $2 free credit / month
- 60 requests / min
- List unit prices
Starter
- $15 free credit / month
- 300 requests / min
- 10% off unit prices
Growth
- $50 free credit / month
- 600 requests / min
- 20% off unit prices
Scale
- $250 free credit / month
- 1,200 requests / min
- 30% off unit prices
Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.
Integration
One POST, typed rows
Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/.
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/sec_filings/run \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"artificial intelligence risk factors","forms":"10-K","max_results":20}'
What people build with the SEC EDGAR API
Three shapes of work this endpoint was designed around.
Filing monitors
Poll one company by ticker for new 8-Ks and each event filing arrives with its form type, date and document URL, ready to diff against yesterday's pull.
Disclosure text mining
Full-text search returns the documents that mention a phrase — "artificial intelligence risk factors", a supplier name, a going-concern clause — as rows to feed a model rather than a results page to scrape.
Entity-linked finance datasets
Every row carries the CIK, the stable key that joins a filing back to the company across price data, ownership records and your own tables.
SEC EDGAR API versus rolling your own
The differences that actually cost time when you build this in-house.
| DIY scraper | This collector | |
|---|---|---|
| Company lookup | Zero-pad the CIK, guess the submissions URL | Pass a ticker; the CIK is resolved for you |
| Two query modes | Two endpoints, two response shapes | Full-text and company history in one row schema |
| Document link | Rebuild it from the accession number | Direct filing URL on every row |
Do I need to send a User-Agent or back off from a rate limit?
EDGAR requires a descriptive User-Agent on every request and caps requests per second. Both are handled on our side, so you send a ticker or a query and get rows back — no header to set and no throttle to manage.
Can I search the full text of filings, or only list a company's filings?
Both. Send query to search the body of every filing for a phrase, or send ticker/cik to get one filer's recent submissions. The two modes return the same fields, differing only where the source does — report_date and is_xbrl in company mode, file_type and description in search mode.
How do I go from a stock ticker to its filings?
Pass the ticker and the collector resolves it to the SEC's numeric CIK before querying, so "AAPL" reaches the right filer without you first looking up 0000320193.
Can I filter to a specific form type?
Yes — set forms to 10-K, 8-K, S-1 and so on to keep only that filing type in either mode.
Is there a free SEC EDGAR API?
Every account gets $2 of credit every month with no card, which is about 4,000 delivered filings on this endpoint at $0.0005 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.
How much does one run cost?
Multiply the rows you actually receive by $0.0005. A run capped at 100 filings — the maximum for this collector — costs $0.05 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.
Run the SEC EDGAR API now
$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.