How to get SEC filings as data

EDGAR hands you every US filing as JSON, free and keyless. What the XBRL endpoints hold, what they do not, and the rate limit that stops the naive loop.

EDGAR publishes every US filing as JSON, free, with no account and no API key; the ceiling is ten requests a second and a User-Agent that names you. A submissions endpoint returns a company's filing index, and three XBRL endpoints return tagged financial facts from the 10-K, 10-Q, 8-K, 20-F, 40-F and 6-K series. Form 4 and 13F are in neither, so insider and institutional data come from the raw filing XML or from quarterly flat files.

The short way

Every filing a company has made comes back as one JSON document, with no key and no account — but the request has to introduce itself:

import requests

headers = {"User-Agent": "Your Name your.email@example.com"}

cik = "0000320193"  # ten digits, leading zeros included
url = f"https://data.sec.gov/submissions/CIK{cik}.json"

filings = requests.get(url, headers=headers).json()
recent = filings["filings"]["recent"]

# parallel arrays, newest first
for form, date, accession in zip(recent["form"], recent["filingDate"], recent["accessionNumber"]):
    print(date, form, accession)

Two things in there are doing more work than they look. The User-Agent header is not decoration: the SEC's own sample is Sample Company Name AdminContact@<sample company domain>.com, alongside Accept-Encoding: gzip, deflate, and it asks you to declare it on every request. And the CIK is zero-padded to ten digits, because EDGAR is organised by CIK rather than by ticker — the mapping file is a separate download keyed by an index position, with cik_str, ticker and title in each entry, and joining it is your job.

If it is the reported numbers you want rather than the filing index, the XBRL endpoints return them already tagged: companyconcept for one concept at one company, companyfacts for everything one company has tagged, and frames for one concept across every filer in a period.

What the options are

The source, and nothing between you and it. SEC EDGAR is the filing system itself, and four surfaces matter to somebody building rather than browsing: the submissions endpoint per company, the three XBRL endpoints, full-text search from 2001 onward, and the quarterly flat files. The SEC gives a typical processing delay of under a second for submissions and under a minute for the XBRL APIs, which makes this the fastest route in the catalogue as well as the cheapest one. What it does not give you is a parser.

Bulk, when you want the corpus rather than a company. The same product publishes nightly archives of the submissions and company-facts datasets, refreshed at about 3:00 a.m. Eastern. Anything that wants everything belongs here rather than in a loop over endpoints, and the arithmetic is the reason: ten requests a second against tens of thousands of registrants is measured in days.

A commercial layer over the same filings. sec-api.io sells the parsing: a query API over 20 million filings from 1993 onward with twenty-odd filterable properties, an extractor that returns a named item out of a 10-K rather than a document you then parse, an XBRL-to-JSON converter, and a websocket that pushes new filings. From $55 a month, $49 annually, on a single-key personal licence. Read the tier table before the feature list — full-text search, Form ADV, 13D/G, N-PORT, N-CEN and N-PX are all marked unavailable on the cheap plan, and redistribution exists only on an unpriced Enterprise tier.

An assistant doing the reading. SEC EDGAR MCP is an AGPL-3.0 server over these same free endpoints, exposing twenty-one tools: ticker-to-CIK lookup, filings by form and date, 10-K and 10-Q section extraction, an 8-K item reader, XBRL statements, and Forms 3, 4 and 5 parsed into transactions. It requires SEC_EDGAR_USER_AGENT with a real name and email, and defaults to the SEC's ten-per-second ceiling. The licence is the commercially material fact: network-serve a modified copy and its users are owed that source, and the alternative is a commercial licence with no published price. The rest of that shelf is in MCP servers and AI agents.

One form, done properly. If the question is really 13F, WhaleWisdom has it parsed back to the quarter ending 31 March 2001 behind a signed REST API, with N-PORT constituents since 2019 alongside. A registered free account reaches the last eight quarters; Standard at $300 a year opens the history and meters it at 50 funds and 50 stocks per 90 days. 13F.info is free and has no API at all, but it is MIT-licensed and the ingestion code is public, which is a different way to end up with the same table. OpenInsider does the Form 4 half free with a 40-field screener and, again, no API. The rest are in insider, 13F and congressional trade trackers.

The numbers inside the filing rather than the filing. Daloopa extracts segment splits, operating KPIs, guidance and GAAP-to-non-GAAP bridges out of filings, press releases and investor presentations, each figure hyperlinked to the page it came from. That is the material XBRL never tagged, and it is quote-only — the free account is one data sheet download inside a two-week window.

Where this breaks

Ten requests a second, and a header that names you. The SEC publishes a maximum access rate of ten requests per second and says it is carefully monitored to preserve equitable access. It reserves the right to limit request rates, and says that any request identified as part of a botnet or an automated tool outside the acceptable policy will be managed to ensure fair access for all users. There is no key to lose, which means the only thing that can be withdrawn is your address's access. A single-threaded backfill that politely sleeps is the correct shape here, and anything wider should be reading the nightly archives instead.

The XBRL endpoints are financial facts, not filings. They cover the 10-Q, 10-K, 8-K, 20-F, 40-F and 6-K series and their variants, which means a great deal of what people actually want is absent by design: Forms 3, 4 and 5, 13F holdings, 13D and 13G stakes, and — inside the forms that are covered — the risk factors, the MD&A and every other block of prose. Those are the document, and getting them means fetching and parsing it, which is precisely what the paid layers and the MCP server sell.

The submissions endpoint is not the whole history. Its compact arrays hold at least one year's filings or the 1,000 most recent, whichever is more. If the entity has filed more than that, a files array points at additional JSON documents with the date range each one covers. A script that reads recent and stops is a script that silently truncates the oldest filer in your universe while working perfectly on the newest.

Amended and restated are two different problems. The first is easy to see and easy to miss: the form array carries the suffix, so 8-K/A, 3/A and 144/A sit in the index next to the originals, and neither retracts the other. Filtering on form == "10-K" drops every amendment; filtering on startswith("10-K") double-counts the year. The second problem is quieter. The frames endpoint aggregates one fact for each reporting entity that is last filed and most closely fits the period requested, and the SEC warns that users should be mindful of different reporting start and end dates for facts inside a frame — so a frame is a mix of vintages, not a snapshot of what was known on a date. The Financial Statement Data Sets are the other extreme: presented without change from the as-filed reports, with no standardisation and no restatement applied. Whether you want as-first-reported or as-currently-restated is a decision you have to make, and neither surface makes it for you.

Full-text search starts in 2001, and it is a search. It covers all EDGAR filings submitted electronically since 2001, including attachments and exhibits, which is genuinely more than most people expect. What it is not is a query language: natural-language search is unsupported, and the wildcard cannot lead or sit inside a word, or appear in an exact phrase or a boolean search at all. Anything filed before 2001 is in the archives as a document you can fetch by CIK, form and date, and not as text you can search.

The flat files land a quarter behind. The convenience is real — Forms 3, 4 and 5 flattened from XML, 13F holdings as tables — and so is the lag. Insider Transactions run from January 2006 and Form 13F from July 2013, both updated quarterly, with the 13F sets run for the prior three months following the end of February, May, August, November; the Financial Statement Data Sets start in January 2009 and are quarterly too. The SEC attaches the same disclaimer to all of them: the data is derived from what individual filers provided, accuracy is not guaranteed, and the sets are not a substitute for the filings. So the choice is a parser plus sub-second latency, or no parser and up to a quarter of delay. There is no third option that is both.

Nothing is normalised across filers. A 13F is what the manager typed. Names, CUSIPs and share classes disagree between filings of the same security, and a company's own XBRL tag choices drift across years. Reconciling that is not a bug in EDGAR — it is the work every paid vendor on this page is actually charging for.

If you outgrow this

When the delay is the problem, the next purchase is a push rather than a poll. sec-api.io streams new filings over a websocket, and its own pricing page puts that at under 300 milliseconds after a filing becomes public; Daloopa offers webhooks for new and restated data, which is the same idea aimed at the numbers.

When you want statements rather than documents, stop parsing. Financial Modeling Prep, Intrinio and Fiscal.ai sell standardised financials by API for a published monthly figure — fine for an income statement, and useless for the metric that only ever appeared on slide 16. The rest of that shelf is in fundamental data and research platforms.

When the question is timing rather than content, the answer is not a vendor. When a trade shows up in the public record sets out the deadline behind each form — two business days for a Form 4, 45 days after quarter end for a 13F — because no API can hand you a filing that has not been made yet.

When a person is going to read it, BamSEC is the opposite trade: no API at all, $69 a month billed annually, and filings relabelled with table downloads for a human doing the reading. Quartr and the Quartr API sit beside it for earnings calls, transcripts and slide decks, which are the company material EDGAR never held.

The tools that do this

In the order this page recommends trying them. Paid placement does not affect this order.

  1. SEC EDGAR

    The source, free and keyless — a submissions index per company, XBRL facts, full-text search since 2001 and quarterly flat files. Ten requests a second.

    Every US filing since 1994, free and keyless — the limit is ten requests a second.

    FreeFree tier

  2. sec-api.io

    The same filings as queryable JSON, with section extraction and a websocket push, from $55 a month. Redistribution is Enterprise-only and unpriced.

    Every EDGAR filing since 1993 as JSON, plus a websocket push of new ones.

    $55/mo

  3. SEC EDGAR MCP

    An AGPL server handing an assistant 10-K sections, XBRL facts and parsed Forms 3, 4 and 5, so the reading happens outside your context window.

    SEC filings and XBRL financials as MCP tools, under AGPL or a paid commercial licence.

    FreeFree tierOpen source

  4. WhaleWisdom

    13F only, parsed back to the first quarter of 2001 behind a signed REST API. A free registered key reaches eight quarters; history starts at $300 a year.

    Institutional 13F holdings back to 2001, queryable from a signed REST API.

    $300/yrFree tier

  5. Daloopa

    Not the filing but the numbers inside it — segment splits, KPIs and guidance, each linked to its source page. Quote only, and sold to research desks.

    Filings and slide-deck KPIs, machine-extracted and dropped into your own Excel model.

    Free tier onlyFree tier

FAQ

Do I need an API key or an account for the EDGAR APIs?

No. The SEC states that these APIs do not require any authentication or API keys. What they do require is a declared User-Agent header naming you and giving a contact address, and the published access ceiling is ten requests a second. There is no paid tier to buy and no commercial licence to negotiate, because these are public records a filing requirement puts there.

Can I get Form 4 or 13F out of the XBRL endpoints?

No, and it is the most expensive wrong assumption about EDGAR. The companyconcept, companyfacts and frames endpoints carry tagged financial facts from the 10-Q, 10-K, 8-K, 20-F, 40-F and 6-K series and their variants. Insider transactions and institutional holdings live in the raw filing XML, in full-text search, or in the quarterly flat files the SEC publishes separately.

How far back does each surface go?

They all start in different places. Full-text search covers electronically submitted filings from 2001 onward. The Insider Transactions data sets begin in January 2006, the Form 13F data sets in July 2013, and the Financial Statement Data Sets in January 2009. Older filings still exist in the archives as documents rather than as parsed data, which is a different job.

Why pay a vendor when the source is free?

Because access is not the cost. Writing and maintaining a parser for four hundred form types, reconciling identifiers a filer typed by hand, and backfilling twenty years of documents at ten requests a second is the work that commercial layers are charging for. If you want one form for a handful of companies, the free route is genuinely the shorter one.

Does EDGAR hold congressional stock trades?

No. STOCK Act periodic transaction reports go to the Clerk of the House and the Secretary of the Senate, not to the SEC, and they are not on EDGAR at any address. Tools that carry them are joining a separate public record to this one.

Sources

  1. Accessing EDGAR Data U.S. Securities and Exchange Commission, read
  2. Using EDGAR application programming interfaces U.S. Securities and Exchange Commission, read
  3. EDGAR Full-Text Search Frequently Asked Questions U.S. Securities and Exchange Commission, read
  4. Insider Transactions Data Sets U.S. Securities and Exchange Commission, read
  5. Form 13F Data Sets U.S. Securities and Exchange Commission, read
  6. Financial Statement Data Sets U.S. Securities and Exchange Commission, read

The catalogue next door

This page names a handful of cards. The rest of them are in Fundamental Data & Stock Research Platforms, each filled in against the same schema, with the fields to narrow it yourself.

Last updated . Corrected in place: this is a reference page, not a dated post.