SEC EDGAR
SEC EDGAR XBRL Concept API
Every value a filer has reported for one XBRL concept - revenue, net income, share count - newest period first, with the form and the filing each number came from, as JSON. Restatements are kept, not collapsed. Up to 2000 rows per call. 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/jsonconceptstringrequiredXBRL concept tag, 1-120 characters, matching ^[A-Za-z][A-Za-z0-9]*$. CASE-SENSITIVE: "NetIncomeLoss" matches, "netincomeloss" is a 404 upstream rather than a near-miss. Call /api/v1/sec/facts to list the tags a filer actually reports.
Example: NetIncomeLoss
cikstringFiler CIK, zero-padded or bare (1-20 characters). A ticker is accepted here too. Either cik or ticker is required.
Example: 0000320193
tickerstringTicker symbol (1-20 characters), as an alternative to cik. Wins over cik when both are given. Either cik or ticker is required.
Example: AAPL
taxonomystringdefault:us-gaapReporting taxonomy, 1-40 characters, matching ^[A-Za-z][A-Za-z0-9-]*$. Common values: us-gaap, dei, ifrs-full, srt.
Example: us-gaap
unitstringUnit of measure to keep, 1-40 characters. A tag often reports in more than one - EarningsPerShareDiluted comes back as USD/shares while NetIncomeLoss is USD. The units array in the response lists what this filer used.
Example: USD
formstringForm to keep, 1-50 characters. EXACT match here, unlike /api/v1/sec/filings, so "10-K" EXCLUDES 10-K/A amendments.
Example: 10-K
limitintegerdefault:250Rows to return, 1-2000. This SIZES the response - it is not a page param. There is no pagination on this endpoint; total_results tells you how many the filer has reported in all.
Example: 1000
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
history = client.sec.concept("NetIncomeLoss", ticker="AAPL", unit="USD")
print(history["data"]["latest"])Response