SEC EDGAR
SEC EDGAR Full-Text Search API
Full-text search across SEC filing documents. Each hit is the matching DOCUMENT - its URL, form, filing date and filer identity - plus facets breaking the whole result set down by company, form, SIC industry and business state, as JSON. Coverage starts in 2001. 100 documents per page. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonquerystringFull-text query over filing documents, 1-500 characters. A quoted phrase is matched exactly; bare words are treated as a bag of terms. OPTIONAL - a cik, ticker, form or date filter on its own is a valid search.
Example: "climate risk"
cikstring | string[]Restrict to one or more filers by CIK: a single value, an array, or a comma-joined string. Each 1-20 characters, at most 25 values. Tickers are accepted here too.
Example: 0000320193
tickerstring | string[]Restrict to one or more filers by ticker symbol: a single value, an array, or a comma-joined string. Each 1-20 characters, at most 25 values.
Example: ["AAPL", "MSFT"]
formstring | string[]Form types to keep: "8-K", ["10-K", "10-Q"] or the comma-joined "10-K,10-Q". Each 1-50 characters, at most 25 values.
Example: 10-K
date_fromstringEarliest filing date, inclusive, as YYYY-MM-DD. Full-text coverage STARTS IN 2001 - nothing earlier is indexed, whatever date you pass.
Example: 2020-01-01
date_tostringLatest filing date, inclusive, as YYYY-MM-DD.
Example: 2026-12-31
locationstring | string[]Filer business-address locations, using EDGAR's own two-character codes: US state codes such as CA and NY, plus its alphanumeric codes for foreign jurisdictions. A single value, an array, or a comma-joined string; at most 25 values.
Example: CA
sortenum<string>default:relevanceResult ordering.
relevance— The index's own relevance ranking (default).newest— Most recent filing date first.oldest— Earliest filing date first.
pageintegerResults page, 1-based, 1-100, at 100 documents per page. CAPPED AT 100 because the SEC's index refuses a result window past 10,000 - page 100 is the last page for any query, no matter what total_results says.
Example: 2
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
hits = client.sec.search(query='"climate risk"', form="10-K", sort="newest")
print(hits["data"]["total_results"])Response