filings.tools API v1
The same parser behind every page, as JSON or markdown. Free tier: 200 calls a day per IP, no key. Starter is $19 a month for 10,000 calls a day; see pricing. Responses are not cached, because each carries your own allowance, but every filing is parsed once and kept on our server, so repeat calls for it are faster and usually do not fetch it from EDGAR again.
Use in an assistant
Connect an assistant or IDE that supports remote MCP to https://filings.tools/mcp using Streamable HTTP and no authentication. Free use shares the API's 200 calls per IP per UTC day. Each lookup uses one call; connecting and listing tools use none. Clients behind one proxy may share its allowance. Availability of custom connectors depends on your client and account.
Add to ClaudeAdd to CursorAdd to VS Code
- Claude Code
claude mcp add --transport http filings https://filings.tools/mcp - Codex
codex mcp add filings --url https://filings.tools/mcp
Claude opens its Add custom connector dialog with the name and URL filled in: check both, continue, and choose no sign-in. ChatGPT has no install link: turn on developer mode (Settings, Apps, Advanced settings; available on some paid plans), then create an app with https://filings.tools/mcp and no authentication.
By hand: in Cursor, use mcpServers.filings.url; in VS Code, use servers.filings with type: http and the same URL. Connecting directly is separate from a directory listing.
list_filingsfinds up to 20 recent filings by ticker, with dates, accessions and SEC sources.read_filing_sectionreturns a section index, or up to 20,000 characters from a named section with a truncation flag.filing_factsreturns up to 200 values tagged to one accession, with units and periods.compare_filingcompares the preceding available period of the same form: counts and limited examples, with an explicit no-prior result when needed.
Start with “Find Apple's latest 10-K and its SEC source.” Use its returned filing id to read a section or facts. Section replies are excerpts; comparisons show up to eight sections, two samples per change type and 400 characters per sample. These are not complete redlines. Missing data does not prove the company omitted a disclosure. Check important values against the cited original. Aggregate usage excludes arguments and filing text; see privacy.
List filings
GET /api/v1/filings?ticker=NVDA&form=10-K&limit=20
Returns the company profile and the recent filings with ids. Forms: 10-K, 10-Q, 8-K, amendments, 20-F, 40-F.
Parsed sections
GET /api/v1/filings/{id}/sections # JSON: sections[] with id, title, markdown, chars
GET /api/v1/filings/{id}/sections?format=md # one markdown document
GET /api/v1/filings/{id}/sections?section=item-1a # a single sectionXBRL facts
GET /api/v1/filings/{id}/facts # revenue, net income, EPS, assets, cash, debt, shares, opex, capex, operating cash flow
GET /api/v1/filings/{id}/facts?all=1 # every reported period for those concepts (Pro and Business)Keys and limits
curl -H "x-api-key: YOUR_KEY" https://filings.tools/api/v1/filings?ticker=AAPL
Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Over the limit returns 429 with a pricing link. Get a key from pricing. Reading filings on the site never counts against the API.
Your own standing
GET /api/v1/me
Returns whether you are calling anonymously or with a key, your daily ceiling, how much is left, and when it resets. Counters run per UTC day. Reading this does not use any of your allowance.
{
"product": "filings",
"caller": "key",
"plan": "filings_pro_monthly",
"limitKind": "calls_day",
"unit": "calls",
"limit": 50000,
"remaining": 49873,
"used": 127,
"resetIso": "2026-09-21T00:00:00.000Z",
"persistent": true
}persistent says whether the count is held in shared storage. When false it is held per instance and a deploy resets it.
Terms
Source documents are public domain SEC filings. Attribution to filings.tools is requested on the free tier. No warranty; verify against the original on sec.gov before relying on a number.