SEC EDGAR Filings Scraper & API - 10-K, 10-Q, 8-K by Ticker avatar

SEC EDGAR Filings Scraper & API - 10-K, 10-Q, 8-K by Ticker

Pricing

from $5.11 / 1,000 filing returneds

Go to Apify Store
SEC EDGAR Filings Scraper & API - 10-K, 10-Q, 8-K by Ticker

SEC EDGAR Filings Scraper & API - 10-K, 10-Q, 8-K by Ticker

For equity research, fintech products and compliance teams: company filings from the SEC's own EDGAR API by ticker or CIK, with the full history and not just the recent window. EDGAR keeps about 1,000 filings in its main response - for Apple that hides 1,246 of 2,246 filings, 55.5% of the history.

Pricing

from $5.11 / 1,000 filing returneds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

SEC EDGAR Filings Scraper & API

For equity research, competitive intelligence, compliance monitoring and filing-driven alerts: company filings from the SEC's own EDGAR API, by ticker or CIK, as flat rows. No API key, no scraping, no proxy.

Stop at EDGAR's main response and you lose most of the history. EDGAR puts about the newest 1,000 filings in filings.recent and everything older in separate files, and nothing marks the cut. Measured against the live API on 2026-09-10 for Apple (CIK 320193): 1,000 filings in filings.recent back to 2015-07-22, and 1,246 more in the older file from 1994-01-26 to 2015-07-20 — 1,246 of 2,246, or 55.5% of the history, missing if you stop there. (It is not exactly 1,000 every time either: Apple returns 1,000, Cheniere Energy 1,007.) One switch reads the older files too.

The form filter is applied before the row limit, so asking for 100 10-K filings gives you up to 100 10-K filings — not whatever 10-Ks happen to fall inside the first 100 rows. That matters because of how lopsided the mix is: of Apple's 1,000 most recent filings, 589 are Form 4 insider transactions and only 34 are 10-Q.

Tickers are messier than they look, and this Actor handles it. The SEC writes BRK-B, UHAL-B, BF-B544 tickers contain a hyphen — and its own list holds 10,407 tickers for 8,013 companies, because 1,441 companies have more than one. AAPL and 320193 are the same company, so naming both collects it once rather than charging you twice. An unresolvable ticker, a CIK EDGAR answers 404 for, and a run where the SEC's ticker list itself could not be read each come back as their own row with the reason — never as "no filings".

Export as JSON, CSV or Excel.

{
"companies": ["AAPL", "MSFT", "BRK.B"],
"forms": ["10-K", "10-Q", "8-K"],
"includeFullHistory": true
}

What this fixes about the raw API

Everything below was measured against the live API on 2026-09-10, not read from documentation.

1. The main response holds only the most recent 1,000 filings

EDGAR puts about the newest 1,000 filings in filings.recent and everything older in separate files listed under filings.files. Nothing marks the cut. (It is not exactly 1,000 every time - Apple returns 1,000, Cheniere Energy returns 1,007 - so counting on the number is a mistake too.) Read only the main response and you get a table that looks complete and is not.

Apple (CIK 320193)
In filings.recent1,000 filings, back to 2015-07-22
In the older file1,246 filings, 1994-01-26 to 2015-07-20
Missing if you stop at recent1,246 of 2,246 - 55.5% of the history

Turn on includeFullHistory and the older files are read too. Every row carries filingSource, which says whether it came from the recent block or from a named older file, so the split can be checked rather than trusted.

2. Share classes are written with a hyphen, and the same company can be named twice

The SEC's list writes BRK-B, UHAL-B, BF-B - 544 tickers contain a hyphen and exactly one contains a dot - while every finance interface people actually use writes BRK.B. A dot is accepted here and converted, so the form you type is not the reason a company comes back as unknown.

And AAPL and 320193 are the same company. Naming both collects it once: the resolved CIK is remembered, and the second mention is skipped rather than fetched and charged again.

3. Tickers and companies are not one to one

The SEC's own list holds 10,407 tickers for 8,013 companies: 1,441 companies have more than one, because share classes get their own symbol (UHAL and UHAL-B, AEM and AEMRF). Counting tickers as companies overstates by about 30 per cent. Every row carries tickers as an array of all symbols the SEC maps to that CIK, not just the one you asked for.

4. Form 4 drowns everything else

Of Apple's 1,000 most recent filings, 589 are Form 4 insider transactions and only 34 are 10-Q. A form filter is not a nicety here. forms matches the form type exactly and case-insensitively, and the row limit is applied after filtering, so asking for 100 10-K filings gives you up to 100 10-K filings rather than whatever 10-Ks happen to fall inside the first 100 rows.

5. A ticker the SEC does not list is not a company without filings

An unresolvable ticker, a CIK EDGAR answers 404 for, a run where the SEC's ticker list itself could not be read, and a request that simply failed each come back as their own row that says which of the four happened. The ticker-list failure gets its own wording, because saying "that ticker is not in the SEC's list" when the list was never read is a false claim about the SEC. None of them is charged, and none of them is reported as "no filings". The 404 body is XML rather than JSON, which is a common way for a JSON-only reader to crash.

What you get

One row per filing: companyName, cik, tickers, exchanges, sicCode, sicDescription, stateOfIncorporation, fiscalYearEnd, then form, filingDate, reportDate, acceptanceDateTime, act, fileNumber, items, accessionNumber, primaryDocument, primaryDocDescription, sizeBytes, isXBRL, isInlineXBRL, filingSource, and two working links - documentUrl to the filing itself and filingIndexUrl to its folder.

The folder name in those URLs is the accession number with its hyphens removed. Leaving them in returns 404 for every row, which is the sort of thing that is easy to ship and hard to notice.

Input

FieldWhat it does
companiesTickers such as AAPL, or CIK numbers such as 320193. CIKs work for companies with no ticker. With the whole input empty, the example companies AAPL and MSFT are used and every row says so in note. Form types or dates without a company return one unpaid bad-input row instead.
formsForm types to keep - 10-K, 10-Q, 8-K, DEF 14A, 4, 13F-HR. Empty or left out means every form: no form type is added on your behalf.
includeFullHistoryOff by default. Turn it on to read the older filing files as well as the recent block - one extra request per file. Without it you get the recent block only, which for Apple is everything back to 2015 - except that when filedSince or filedUntil reaches back before the recent block, the older files covering those dates are read anyway, so a date range is never cut short silently. That matters for banks: JPMorgan's recent block covers only about a year.
filedSince / filedUntilDate bounds such as 2024-01-01. Filings with no readable date are excluded when set.
maxFilingsPerCompanyRow limit per company, applied after filtering. You are charged only for rows you receive.
maxRetriesAttempts per request. HTTP 404 is permanent and is never retried.

Requests are paced to stay inside the SEC's published limit of ten per second, and every request identifies itself with a contact address as the SEC's access policy asks.

Source and licence

SEC EDGAR submissions API (data.sec.gov) and the SEC company ticker list (www.sec.gov). Works of the US federal government are in the public domain. This Actor makes plain HTTPS requests to the documented JSON endpoints; it does not scrape any web page and needs no API key or proxy.