SEC EDGAR API: free company filings and financials
What is the SEC EDGAR API?
The SEC EDGAR API is the free machine-readable interface to the US Securities and Exchange Commission's filing system, covering roughly 800,000 filing entities with no API key and no signup. Every public company, fund, and large private issuer files here — 10-K annual reports, 10-Q quarterlies, 8-K events, and Form D private placements. In our data, EDGAR is one of only two federal-level free company sources in the US (the other being state registries, which stop at incorporation records). Three endpoints cover the whole workflow:
- Full-text search resolves a company name to its CIK identifier and recent filings.
- The submissions endpoint returns the issuer profile: tickers, SIC industry code, and filing history.
- The XBRL companyfacts endpoint returns every structured financial fact the company ever reported.
How do you find a company's CIK number?
A CIK (Central Index Key) is the 10-digit identifier EDGAR assigns every filer, and resolving it is step one of any EDGAR workflow. The full-text search endpoint at efts.sec.gov accepts a plain company name and returns matching entities with their CIK, filing form, and date. We tested both endpoints on 2026-07-24; the resolve-then-fetch pattern:
# 1. Name → CIK
curl "https://efts.sec.gov/LATEST/search-index?q=%22Stripe%22&forms=D"
# 2. CIK → issuer profile + recent filings
curl -H "User-Agent: your-name research you@example.com" \
"https://data.sec.gov/submissions/CIK0000320193.json"
The same two calls in Python, since the response is plain JSON either way:
import requests
UA = {"User-Agent": "your-name research you@example.com"}
hits = requests.get("https://efts.sec.gov/LATEST/search-index",
params={"q": '"Stripe"', "forms": "D"}, headers=UA).json()
profile = requests.get("https://data.sec.gov/submissions/CIK0000320193.json",
headers=UA).json()
One gotcha, according to the SEC's fair-access policy: every request must send a descriptive User-Agent header with contact information, and traffic above 10 requests per second gets throttled. No header — no data.
What financial data does XBRL companyfacts return?
The companyfacts endpoint returns all reported facts for an issuer as structured XBRL: revenue, net income, assets, share counts — every line item from every filing, tagged by accounting concept and period. In our data, this is the only free source of normalized US financials; commercial data vendors largely resell repackaged versions of these same facts. What one JSON response contains:
- Every US-GAAP concept the company reported, keyed by tag name.
- The full time series per concept — quarterly and annual values back to the first XBRL filing in 2009.
- Units and the exact source form for each value, so every number is traceable to its filing.
The practical limit is coverage, not depth: XBRL facts exist only for SEC filers, so private companies without public debt or Form D activity stay invisible.
Can you track private companies through EDGAR?
Partially — through Form D, and that is the honest limit of the free route. A Form D is the notice a private company files within 15 days of raising an exempt round; according to SEC rules it discloses the amount raised, the date, and the issuer's industry group, but not investor names — the full search workflow is in the SEC Form D guide. In our data, Form D works as a funding signal for sector-level opportunity scanning rather than company-level financials: you learn that a company raised, when, and roughly in what sector. For the remaining private-company picture, the free stack joins EDGAR with state registries — 10,137,727 official records across the 4 open Socrata states — and the UK Companies House register for cross-border ownership chains.
Test page. Endpoints as probed on 2026-07-24 via the Aidenix Atlas catalog. Not yet editorially reviewed.
Find these guides useful? Add Aidenix as a preferred source on Google — our pages will surface in your AI Overviews.