Best SEC Filings APIs for AI Agents
Compare SEC filing APIs by document coverage, identifiers, timestamps, parsing, provenance, and failure handling.
Published: March 26, 2026 · By the QVeris Team
Featured Providers & Official Sources
Verify endpoint coverage, fields, freshness, entitlements, and licensing before production use.
A practical 2026 comparison of EDGAR, Financial Modeling Prep, Finnhub, and sec-api.io—plus the evidence contract, code, and validation controls a production filing agent needs.

On this page
TL;DR: choose by workflow, not by logo
SEC EDGAR is the source-of-record choice. FMP is practical when filings already sit inside a financial-data stack. Finnhub is useful when filings are one input in a broader market-data product. sec-api.io is the strongest specialist option here for complex search, streaming, exhibits, and section extraction. QVeris helps an agent discover and call the right tool; it does not replace source attribution.
Best for authoritative submissions and XBRL facts when your team can own parsing, caching, and access controls.
Best when you want symbol-, CIK-, or form-based filing discovery beside other normalized financial endpoints.
Worth testing when SEC filings must share authentication and operations with global company and market data.
Best fit for full-text queries, filing streams, exhibit retrieval, section extraction, and XBRL conversion.
Who this guide is for
This guide is for engineers building research copilots, event-monitoring agents, earnings workflows, compliance review, or retrieval systems that must answer with primary-source evidence. It assumes you can make HTTPS requests, store normalized JSON, and run a scheduled job or queue.
A descriptive User-Agent, a stable company-identity mapping, persistent evidence storage, retry and caching controls, and a policy for amendments and exhibits.
What an AI agent actually needs from a filing API
“Returns a 10-K” is not a sufficient requirement. A production agent must identify the issuer, distinguish filing dates from reporting periods, preserve amendments, retrieve the primary document and exhibits, and prove which source supported every claim.
- Identity: CIK as the stable SEC key; ticker and legal name as aliases.
- Discovery: filter by form, issuer, filing date, report date, and amendment status.
- Documents: primary HTML or text, filing index, exhibits, inline XBRL, and attachments.
- Evidence: accession number, canonical source URL, retrieval time, content hash, and cited section.
- Operations: documented limits, retries, caching, backfills, and predictable error behavior.
SEC filings APIs compared
| Option | Best use | Strength | Main trade-off |
|---|---|---|---|
| SEC EDGAR | Primary-source ingestion | No API key; submissions and XBRL data; real-time updates | You own identity mapping, parsing, caching, history files, and fair-access compliance |
| FMP Stable API | Managed finance applications | Search by symbol, CIK, or form beside broader financial endpoints | Plan limits and provider normalization must be validated for your workload |
| Finnhub | Filings within a wider global-data stack | One provider surface for company, market, and filing-related data | Confirm exact fields, history, entitlements, and throughput with a representative test set |
| sec-api.io | Advanced filing search and extraction | Query, full text, stream, download, exhibits, XBRL conversion, and item extraction | Commercial dependency; scope and pricing should be checked against usage |
Do not choose from a feature matrix alone. Run the same 25–50 filings through every shortlisted provider: recent and historical 10-Ks, 10-Qs, 8-Ks with exhibits, amendments, a renamed issuer, a ticker change, and at least one filing with custom taxonomy facts.
Provider notes: where each option wins
The Submissions API exposes filing history by 10-digit CIK. Company Facts and Company Concept expose standardized XBRL facts. APIs require no authentication and update throughout the day, but older filing history may live in additional files referenced by the response.
FMP documents Stable endpoints for filing search by symbol, CIK, and form type, as well as 8-K and financial filings. This is convenient when the same application already uses normalized company and financial data.
Finnhub can be attractive for teams already operating its token, SDK, and market-data workflows. Before committing, test amendment flags, exhibit links, full-text access, field stability, historical depth, and plan entitlements.
Its documentation covers metadata queries, full-text search, WebSocket streaming, filing and exhibit download, 10-K/10-Q/8-K item extraction, and XBRL-to-JSON. That can remove substantial parsing work from an agent pipeline.
Reference architecture for a source-backed filing agent
Map user text or ticker to a legal entity and store the zero-padded 10-digit CIK.
Filter by form, filing date, report date, and amendment policy. Keep the raw provider response.
Fetch the filing index, primary document, relevant exhibits, and structured facts. Do not assume the primary HTML contains every material attachment.
Create clean text and fact records while retaining accession number, source URLs, section boundaries, units, periods, and original payloads.
Reject identity mismatches, malformed accessions, missing sources, duplicate versions, and facts with incompatible units or periods.
Return the answer, quoted or structured evidence, filing metadata, and a canonical link a reviewer can open.
Step-by-step: fetch the latest 10-K from EDGAR
The SEC Submissions API is a good baseline because it forces the workflow to preserve first-party identifiers. Use a descriptive User-Agent with organization and contact information, cache responses, and stay below the SEC’s published fair-access ceiling.
curl --compressed \
-H "User-Agent: ResearchAgent/1.0 contact@example.com" \
-H "Accept-Encoding: gzip, deflate" \
"https://data.sec.gov/submissions/CIK0000320193.json"
import hashlib
import requests
from datetime import datetime, timezone
CIK = "0000320193"
HEADERS = {
"User-Agent": "ResearchAgent/1.0 contact@example.com",
"Accept-Encoding": "gzip, deflate",
}
submissions_url = f"https://data.sec.gov/submissions/CIK{CIK}.json"
data = requests.get(submissions_url, headers=HEADERS, timeout=30)
data.raise_for_status()
payload = data.json()
recent = payload["filings"]["recent"]
rows = [dict(zip(recent, values)) for values in zip(*recent.values())]
filing = next(row for row in rows if row["form"] == "10-K")
accession = filing["accessionNumber"]
accession_path = accession.replace("-", "")
cik_path = str(int(CIK))
primary = filing["primaryDocument"]
source_url = (
f"https://www.sec.gov/Archives/edgar/data/"
f"{cik_path}/{accession_path}/{primary}"
)
document = requests.get(source_url, headers=HEADERS, timeout=30)
document.raise_for_status()
evidence = {
"cik": CIK,
"accessionNumber": accession,
"form": filing["form"],
"filingDate": filing["filingDate"],
"reportDate": filing["reportDate"],
"primaryDocument": primary,
"sourceUrl": source_url,
"retrievedAt": datetime.now(timezone.utc).isoformat(),
"sha256": hashlib.sha256(document.content).hexdigest(),
}
This example intentionally selects only the exact form 10-K. If your workflow should include amendments, model 10-K/A as a separate version and define how it affects earlier conclusions.
Define an evidence contract before prompting the model
| Field | Why it matters |
|---|---|
cik |
Stable SEC entity identity; never rely on ticker alone. |
accessionNumber |
Unique filing identity and the key to the EDGAR archive path. |
form / isAmendment
|
Prevents a 10-K/A or 10-Q/A from silently replacing the original. |
filingDate / reportDate
|
Separates publication timing from the financial period being reported. |
sourceUrl / retrievedAt
|
Lets reviewers reproduce what the agent saw and when. |
sha256 |
Detects content drift and supports immutable audit records. |
section / quoteRange
|
Links generated claims to exact narrative evidence. |
taxonomy / concept / unit / period
|
Makes an XBRL fact interpretable rather than just numeric. |
Know which filing answers which question
Annual business, risk, audited financials, controls, and long-form narrative. Best for baseline company understanding.
Quarterly updates, interim financials, changing risks, and management discussion. Best for period-over-period monitoring.
Material events. The item number and exhibits often matter more than generic full-document summarization.
Amended filings. Preserve both versions, calculate the difference, and re-run affected claims.
Insider transactions. Parse transaction codes, ownership type, shares, prices, and footnotes.
Proxy statements covering governance, voting matters, ownership, and executive compensation context.
Validation checklist before an agent can answer
- The CIK maps to the intended legal entity, not merely a matching ticker string.
- The accession number has the expected format and resolves to a filing index or primary document.
- The form policy explicitly includes or excludes amendments.
- Filing date, report date, acceptance time, and fiscal period are not conflated.
- Required exhibits were retrieved and linked to the parent filing.
- XBRL facts agree on taxonomy, unit, duration or instant, dimensions, and period.
- Every generated claim has a source URL and exact evidence location.
- The stored hash and retrieval timestamp make the input reproducible.
Security, cost, and latency controls
SEC currently asks automated users to make no more than 10 requests per second in total and may block excessive or unclassified bots. Treat that number as a ceiling, not a target. Use a shared rate limiter, descriptive User-Agent, cache, exponential backoff, jitter, and bulk archives for large backfills.
Key document storage by accession number and URL. Revalidate metadata separately from the filing body.
One user request should not trigger uncontrolled per-section or per-fact downloads.
Commercial provider tokens belong in a secret manager, never in browser code or prompts.
Queue and validate documents first; let models consume a stable evidence store instead of live scraping.
Common failure modes and fixes
| Failure | Why it happens | Fix |
|---|---|---|
| Wrong company | Ticker-only identity or reused symbols | Resolve and persist the CIK plus legal name |
| Missing filing history | Only the recent Submissions array was read | Follow additional history files or use bulk archives |
| Duplicate conclusions | Original and amended forms were merged | Version by accession and model amendments explicitly |
| Incorrect financial fact | Unit, period, dimensions, or taxonomy ignored | Validate the full XBRL context before comparison |
| Unverifiable summary | Chunks lost document metadata | Attach evidence fields to every chunk and generated claim |
| 429 or blocked requests | Burst traffic, no identity, or inefficient crawling | Throttle centrally, identify the client, cache, and back off |
News, transcripts, and prices are supporting layers—not filing APIs
A news API explains market reaction. An earnings-call transcript adds management language. Price and volume data measure response. None of them replaces the filed document, accession number, amendment history, or SEC source URL. Retrieve the filing first, then join these datasets using issuer identity and event time.
QVeris implementation pattern: Discover → Inspect → Call
In an agent system, QVeris can sit above provider-specific endpoints as a discovery and routing layer. The agent discovers candidate SEC tools, inspects the input schema and provider metadata, then calls the selected tool with bounded arguments. The returned evidence object should still name the underlying provider and retain the original SEC source.
Search by capability: filing discovery, XBRL facts, section extraction, exhibits, or real-time alerts.
Check required identifiers, date semantics, response schema, source fields, limits, and error behavior.
Invoke the smallest sufficient query, validate the response, and write the result into the evidence contract.
Frequently asked questions
Is the SEC EDGAR API free?
Yes. data.sec.gov APIs require no API key. Automated access must still follow SEC fair-access guidance, identify the client, and avoid excessive traffic.
Which SEC filing API is best for an AI agent?
There is no universal winner. EDGAR is best for first-party provenance, FMP for managed finance workflows, Finnhub for a broader provider stack, and sec-api.io for advanced filing-native search and extraction.
Can I use a ticker instead of a CIK?
A provider may accept tickers for convenience, but production records should resolve and store the CIK because tickers can change or be reused.
What should an SEC filing citation contain?
At minimum: CIK, accession number, form, filing date, source URL, retrieval timestamp, and the exact section, exhibit, or XBRL fact used.
How should amendments be handled?
Store forms such as 10-K/A and 10-Q/A as separate versions, compare them with the original, and re-evaluate only the claims affected by the change.
Are XBRL facts enough?
No. XBRL supports comparable facts, but narrative sections, footnotes, exhibits, policies, and event context still require filing documents.
Do news and transcript APIs count as SEC filing APIs?
No. They add context but cannot replace the primary filing or its source identifiers.
Where does QVeris fit?
QVeris is an agent-facing tool discovery and routing layer. The selected SEC or commercial provider remains the source of record.
Official sources and next steps
Provider features and access rules can change. Verify current documentation, entitlements, and terms before production use.
Build the evidence layer before the answer layer
Use QVeris to discover and inspect agent-ready tools, then keep the SEC filing, provider identity, and evidence contract visible throughout the workflow.
Read the REST API Guide