SEC EDGAR Filings Full-Text Search
Pricing
from $2.67 / 1,000 results
SEC EDGAR Filings Full-Text Search
Search the full text of every SEC EDGAR filing: form type, company names and tickers, CIKs, filing and period dates, SIC codes, states, and direct links to the filing documents. Keyless public API, no login.
Pricing
from $2.67 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Search the full text of every SEC EDGAR filing and get structured results: form type, company names and tickers, CIKs, filing and period dates, 8-K item codes, SIC codes, incorporation and business states, and direct links to the filing documents.
Keyless public government API. No login, no browser, no proxy needed.
Input
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | array | required | One search per entry. "climate risk" in double quotes matches the exact phrase |
forms | array | — | 10-K, 8-K, S-1, DEF 14A, … |
ciks | array | — | Zero-padded ten-digit CIKs, e.g. 0000320193 |
filedFrom / filedTo | string | — | YYYY-MM-DD. Give either one and the actor fills the other — EDGAR ignores a half-open range |
locationCode | string | — | Two-letter state/country of the filer's business address |
maxItemsPerQuery | integer | 300 | Capped by the API at 10,000 |
userAgent | string | actor id | See "Identifying yourself" below |
Output
{"_input": "\"material definitive agreement\"","_source": "S1-edgar-fts","_scrapedAt": "2026-09-09T13:02:55Z","accessionNumber": "0000035527-22-000119","documentId": "0000035527-22-000119:fitbannualreport202110-k.pdf","documentFile": "fitbannualreport202110-k.pdf","documentUrl": "https://www.sec.gov/Archives/edgar/data/35527/000003552722000119/fitbannualreport202110-k.pdf","filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/35527/000003552722000119/","form": "10-K", "rootForms": ["10-K"],"fileType": "10-K", "fileDescription": "ANNUAL REPORT","filedAt": "2022-02-24", "periodEnding": "2021-12-31","items": ["1.02", "9.01"], // 8-K item codes; empty on other forms"ciks": ["0000035527"],"companyNames": ["FIFTH THIRD BANCORP"],"tickers": ["FITB", "FITBI", "FITBO", "FITBP"],"displayNames": ["FIFTH THIRD BANCORP (FITB, FITBI, FITBO, FITBP) (CIK 0000035527)"],"fileNumbers": ["001-31826"], "filmNumbers": ["25834114"],"sicCodes": ["6022"],"incorporationStates": ["OH"],"businessStates": ["OH"],"businessLocations": ["Cincinnati, OH"],"score": 12.4}
Four things worth knowing
EDGAR reports failures inside a 200. Overrunning the result window returns HTTP 200 carrying
{"errorType": "ResponseError", "errorMessage": "… Result window is too large …"} — no hits key,
no error status. Code that checks only the status reads that as an empty page and stops, quietly,
having collected less than it should. This actor inspects the body and emits an api_error row.
A single date bound is silently ignored. startdt without enddt returns exactly the
unfiltered result set — same count, same first page, no error and no warning. Both bounds must be
present for the range to apply at all. This actor fills the missing side for you (today, or
2001-01-01 where full-text coverage begins) and says so in the log, so a one-sided range does what
you meant rather than quietly doing nothing.
total.relation tells you whether the count is real. EDGAR is honest about clamping: eq means
an exact count, gte means it stopped counting at 10,000 — and 10,000 is also the paging ceiling
(from tops out at 9900, since from + 100 must not exceed it). The actor logs
1454 filings matchat least 10000 filings match accordingly, and warns when you have asked for more
than can be served. Narrowing by form, date range or CIK is how you reach the rest.
Company names carry their tickers, sometimes several.
FIFTH THIRD BANCORP (FITB, FITBI, FITBO, FITBP) (CIK 0000035527) is one string upstream. The
names, tickers and CIKs ship separately, with the original in displayNames. Parentheses that are
part of a registered name — SMART Modular Technologies (WWH), Inc. — are left alone, because only
a trailing parenthesis is treated as a ticker group.
Identifying yourself
SEC's fair-access policy asks automated requesters to identify themselves in the User-Agent, and
the default here names this actor rather than impersonating a browser. To be precise about what is
enforced versus what is asked: the server rejects only an empty User-Agent (403). Any non-empty
value is accepted. If you are running at volume, put your own name and contact in userAgent.
Errors
_error | Meaning |
|---|---|
invalid_input | Empty search query |
no_results | The search ran and matched no filings |
api_error | A 200 carrying an error object — usually the result window is exhausted |
unexpected_shape | A 200 without hits, or a hit without _source |
blocked | Every TLS profile was refused |
network_error | The ladder never reached the server |
If every query fails, the run itself fails rather than reporting success over an empty dataset.