SEC EDGAR Scraper · Filings, Financials & Full-Text Search avatar

SEC EDGAR Scraper · Filings, Financials & Full-Text Search

Pricing

from $2.20 / 1,000 filing returneds

Go to Apify Store
SEC EDGAR Scraper · Filings, Financials & Full-Text Search

SEC EDGAR Scraper · Filings, Financials & Full-Text Search

SEC EDGAR Scraper extracts SEC filings (10-K, 10-Q, 8-K, Form 4 insider trades, 13F holdings, 13D/G, S-1) by ticker, CIK, or SIC code with full-text search and XBRL financial statements.

Pricing

from $2.20 / 1,000 filing returneds

Rating

0.0

(0)

Developer

Tarek Etman

Tarek Etman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

reapX — public sources in, addressable records out

SEC EDGAR Scraper · Filings, Financials & Full-Text Search

SEC EDGAR Scraper is a comprehensive SEC EDGAR filings scraper and API that extracts US public company filings (10-K, 10-Q, 8-K, Form 4 insider trades, 13F holdings, 13D/G activist stakes, S-1, Form D) and XBRL financial statements from the SEC EDGAR database. Search by ticker symbol, CIK number, SIC industry code, or full-text keyword search across filings.

Maintained by reapX. Every row cites the Apify run that produced it — nothing is inferred, modelled or filled in, and a field absent from the source is absent from the row. The extracted archive for this source is browsable at reapx.dev/data/sec-edgar-scraper/ and mirrored as an open dataset on Hugging Face and Kaggle. Questions: reapxdev@proton.me

EDGAR is free and public, but it is four separate interfaces with different shapes, a columnar JSON format that is awkward to read, and a hard rate limit. This Actor handles all of that and hands you a flat table.

Search SEC EDGAR filings by company ticker or CIK

Put tickers or CIK numbers in the Companies field, one per line. Tickers are resolved against the SEC's own ticker-to-CIK mapping, so AAPL, 0000320193, and 320193 all reach Apple.

By default the search covers the most recent 1,000 filings per company, which runs several years back for most registrants. Turn on Search the full filing history to reach everything filed since 1994.

Search SEC filings by industry (SIC code)

Leave Companies empty and set an SIC industry code instead. The Actor discovers every registrant in that industry and returns their filings. Useful codes:

SICIndustry
2836Biological products
3571Electronic computers
6022State commercial banks
6798Real estate investment trusts
7372Prepackaged software
2834Pharmaceutical preparations
1311Crude petroleum and natural gas

Combine it with State of incorporation to narrow to, for example, Delaware-incorporated REITs.

Full-text search across SEC filings

The Full-text search field searches the text of the filings themselves, not just their metadata. Wrap a phrase in double quotes to match it exactly:

  • "material weakness" finds companies disclosing internal control failures
  • "going concern" finds auditor doubt about survival
  • "restatement of previously issued" finds accounting restatements

Full-text coverage begins in 2001. Combine it with form types and a date range to scope the search.

SEC financial data from XBRL

Turn on Attach key financials and every row gains the company's latest reported revenue, net income, total assets, total liabilities, shareholders equity, operating income, cash, and diluted EPS. The figures come from the company's own XBRL submissions, and each one records the fiscal year and the form it was taken from, so you can see how current it is.

What data you get

Every row contains:

Company - CIK, company name, ticker, exchange, SIC code and industry name, state of incorporation, fiscal year end, entity type

Filing - accession number, form type, filing date, period end date, exact acceptance timestamp, 8-K item numbers, SEC file number, submission size, whether it carries XBRL

Documents - primary document filename and description, a link to the filing index, and a direct link to the document

Optional - the key financials block, and the full-text query the filing matched

Four output views are provided: Filings, Companies, Financials, and Documents. Export as JSON, CSV, Excel, or XML.

Supported SEC form types

10-K and 10-Q for annual and quarterly reports, 8-K for current reports, 20-F and 40-F for foreign issuers, S-1 and 424B4 for IPOs, S-3 and S-4 for shelf and merger registrations, DEF 14A for proxy statements, 13F-HR for institutional holdings, SC 13D and SC 13G for ownership stakes, Forms 3, 4 and 5 for insider transactions, 6-K, 11-K, SD, and N-CSR.

Selecting a form also returns its amendments. Choosing 10-K gives you 10-K/A as well.

Input configuration

Every field is optional. The prefilled values below are what runs if you press Start without changing anything.

Give at least one of these three. Companies is the fastest and most precise.

FieldTypeAcceptsWhat it does
companieslistone value per lineOne ticker or CIK per line, for example AAPL, MSFT, or 0000320193. Leave empty if you are searching by industry code or by full text instead. Prefilled with ["AAPL", "MSFT", "NVDA"].
fullTextQuerystringfree textSearch the text of filings themselves. Wrap a phrase in double quotes to match it exactly, for example "material weakness". Covers filings from 2001 onward.
sicstringfree textReturn filings from every company in one industry. For example 2836 is biological products, 6798 is REITs, 7372 is prepackaged software.

Filters

Narrow the result set. Every filter is optional.

FieldTypeAcceptsWhat it does
formTypeslistone value per lineWhich filings to return. Selecting a form also returns its amendments, so 10-K includes 10-K/A. Leave empty to get annual, quarterly and current reports. Prefilled with ["10-K", "10-Q"].
filedFromstringYYYY-MM-DDEarliest filing date to return, as YYYY-MM-DD. Prefilled with "2024-01-01".
filedTostringYYYY-MM-DDLatest filing date to return, as YYYY-MM-DD. Leave empty for today.
stateOfIncorporationstringfree textTwo-letter code, for example DE for Delaware or NY for New York. Filters companies by where they are incorporated, not where they operate.

Output

What each row contains and how many rows you get.

FieldTypeAcceptsWhat it does
includeFinancialstrue/falsecheckboxAdd the latest reported revenue, net income, assets, liabilities, equity, operating income, cash and diluted EPS to every row, taken from the company's own XBRL data. Adds roughly eight extra requests per company.
includeFilingHistorytrue/falsecheckboxBy default only the most recent 1,000 filings per company are searched, which covers several years for most companies. Turn this on to search everything back to 1994.
maxFilingsinteger1 to 100000Hard ceiling on the rows this run produces, and therefore on what it costs. You are charged per filing returned. Prefilled with 50.
maxFilingsPerCompanyinteger1 to 10000Spreads the result set across companies instead of exhausting the first one. Leave empty for no per-company limit.
requestsPerSecondinteger1 to 10Politeness against sec.gov, which permits at most 10 per second. Lower this if you see the source refusing requests.

Pricing

Pay per event. The primary event is Filing returned (filing-returned), charged at $0.004 per event on the free plan, falling to $0.002 on the highest tier.

One SEC filing delivered as a complete row. Blocked sources, empty result sets and unrecognised companies are never charged.

Minimum charge cap per run: $0.05.

Tiered discounts apply automatically on every paid Apify plan. Platform usage is absorbed by the Actor, so the per-event price is the whole price.

Usage examples

The prefilled run, which is what Start does with nothing changed

{
"companies": [
"AAPL",
"MSFT",
"NVDA"
],
"formTypes": [
"10-K",
"10-Q"
],
"filedFrom": "2024-01-01",
"includeFinancials": false,
"includeFilingHistory": false,
"maxFilings": 50,
"requestsPerSecond": 8
}

Filter by companies (tickers or cik numbers)

{
"companies": [
"AAPL",
"0000789019"
],
"formTypes": [
"10-K",
"10-Q"
],
"filedFrom": "2024-01-01",
"includeFinancials": false,
"includeFilingHistory": false,
"maxFilings": 50,
"requestsPerSecond": 8
}
{
"companies": [
"AAPL",
"MSFT",
"NVDA"
],
"formTypes": [
"10-K",
"10-Q"
],
"filedFrom": "2024-01-01",
"includeFinancials": false,
"includeFilingHistory": false,
"maxFilings": 50,
"requestsPerSecond": 8,
"fullTextQuery": "\"material weakness\""
}

Filter by sic industry code

{
"companies": [
"AAPL",
"MSFT",
"NVDA"
],
"formTypes": [
"10-K",
"10-Q"
],
"filedFrom": "2024-01-01",
"includeFinancials": false,
"includeFilingHistory": false,
"maxFilings": 50,
"requestsPerSecond": 8,
"sic": "2836"
}

Filter by form types

{
"companies": [
"AAPL",
"MSFT",
"NVDA"
],
"formTypes": [
"10-K"
],
"filedFrom": "2024-01-01",
"includeFinancials": false,
"includeFilingHistory": false,
"maxFilings": 50,
"requestsPerSecond": 8
}

Output example

One row, exactly as the actor wrote it to the dataset:

{
"cik": "0000019617",
"companyName": "JPMORGAN CHASE & CO",
"ticker": "JPM",
"exchange": "NYSE",
"sic": "6021",
"sicDescription": "National Commercial Banks",
"stateOfIncorporation": "DE",
"fiscalYearEnd": "1231",
"entityType": "operating",
"accessionNumber": "0001193125-26-258539",
"formType": "SCHEDULE 13D/A",
"filingDate": "2026-06-05",
"reportDate": null,
"acceptanceDateTime": "2026-06-05T13:29:59.000Z",
"items": null,
"fileNumber": null,
"sizeBytes": 310479,
"isXBRL": false
}

That row carries 24 fields in total; 18 are shown.

Fields on every row

FieldTypeWhat it is
cikstringSEC Central Index Key for the filer, zero-padded to ten digits. Stable for the life of the company.
companyNamestringRegistrant name exactly as recorded by the SEC.
tickerstringPrimary trading symbol. Null for private filers and funds that have none.
exchangestringPrimary listing venue.
sicstringStandard Industrial Classification code assigned by the SEC.
sicDescriptionstringPlain-language name of the SIC code.
stateOfIncorporationstringTwo-letter code for where the company is incorporated, not where it operates.
fiscalYearEndstringMonth and day the fiscal year closes, as MMDD.
entityTypestringSEC filer classification.
accessionNumberstringUnique identifier for this filing. Use it to deduplicate across runs.
formTypestringSEC form. Amendments carry a /A suffix.
filingDatestringDate the filing was accepted by EDGAR, as YYYY-MM-DD.
reportDatestringEnd of the fiscal period the filing covers, as YYYY-MM-DD. Null for forms that cover no period.
acceptanceDateTimestringExact timestamp EDGAR accepted the filing. Use this, not the filing date, to order same-day filings.
itemsstringComma-separated item numbers disclosed, for 8-K filings. Null for other forms.
fileNumberstringSEC file number the filing was made under.
sizeBytesintegerTotal size of the filing submission in bytes.
isXBRLtrue/falseWhether the filing carries structured XBRL financial data.
primaryDocumentstringFilename of the main document inside the submission.
primaryDocDescriptionstringSEC label for the primary document.
filingIndexUrlstringHuman-readable index page listing every document in the submission.
documentUrlstringDirect link to the primary document.
matchedFullTextQuerystringThe full-text query this filing matched. Present only on runs that used full-text search.
financialsobjectLatest annual figures from the company's own XBRL filings. Present only when 'Attach key financials' is enabled.
retrievedAtstringUTC timestamp this row was collected from EDGAR.

4 named dataset views ship with it: Filings, Companies, Financials, Documents. They drive the Output tab in Console and the Output block on the Actor's .md page.

FAQ

EDGAR is a public disclosure system operated by the U.S. Securities and Exchange Commission, and its data is published for exactly this purpose. The SEC asks that automated clients declare themselves with a User-Agent header and stay under 10 requests per second. This Actor does both.

Does the SEC have an official API?

The SEC publishes JSON endpoints for company submissions and XBRL company facts, an Elasticsearch-backed full-text search, and a company browse interface. They are free and need no key. They are also four different shapes with different pagination, which is what this Actor reconciles.

How do I get all filings for a company?

Put its ticker or CIK in Companies, leave Form types empty, clear the date range, and turn on Search the full filing history. Raise Maximum filings to return to cover the count you expect.

How far back does the data go?

Filing metadata reaches 1994. Full-text search of filing contents reaches 2001. XBRL financial data generally begins around 2009.

How do I find a company's CIK number?

You do not need it. Enter the ticker and the Actor resolves it. If a company has no ticker, search by SIC code or by name in full-text search.

Can I monitor for new filings?

Yes. Schedule the Actor with a recent date in Filed on or after and deduplicate on accessionNumber, which is unique and permanent per filing.

Why did my run return fewer rows than I asked for?

Either fewer filings matched your filters, or the run's maximum cost setting capped it. The run's status message says which.


Unofficial - not affiliated with SEC EDGAR. Collects public data only. reapx. Contact reapxdev@proton.me.

The full published archive

Each archive page carries Dataset JSON-LD, a canonical URL and the identifiers used, so an agent can resolve an entity without running anything. Nothing on those pages is estimated or modelled.

🧪 Example input

A real, runnable configuration — this is an actual input this Actor has run with.

{
"companies": [
"AAPL",
"MSFT",
"NVDA",
"GOOGL",
"AMZN",
"META",
"JPM",
"BAC",
"WFC",
"C",
"GS",
"MS"
],
"formTypes": [
"SC 13D"
],
"filedFrom": "2023-01-01",
"maxFilings": 60,
"includeFinancials": false,
"includeFilingHistory": false,
"requestsPerSecond": 8
}

📄 Sample output

One real row from a real run of this Actor, unedited.

{
"cik": "0000019617",
"companyName": "JPMORGAN CHASE & CO",
"ticker": "JPM",
"exchange": "NYSE",
"sic": "6021",
"sicDescription": "National Commercial Banks",
"stateOfIncorporation": "DE",
"fiscalYearEnd": "1231",
"entityType": "operating",
"accessionNumber": "0001193125-26-258539",
"formType": "SCHEDULE 13D/A",
"filingDate": "2026-06-05",
"reportDate": null,
"acceptanceDateTime": "2026-06-05T13:29:59.000Z",
"items": null,
"fileNumber": null,
"sizeBytes": 310479,
"isXBRL": false,
"primaryDocument": "xslSCHEDULE_13D_X02/primary_doc.xml",
"primaryDocDescription": null,
"filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/19617/000119312526258539/0001193125-26-258539-index.htm",
"documentUrl": "https://www.sec.gov/Archives/edgar/data/19617/000119312526258539/xslSCHEDULE_13D_X02/primary_doc.xml",
"matchedFullTextQuery": null,
"retrievedAt": "2026-08-02T23:14:35Z"
}

How it works

  1. You set the filters below, or none at all.
  2. The Actor calls the source's own public endpoint and pages through the results.
  3. Every row is pushed to the dataset as it is built, not buffered to the end — so a run that hits its time limit still returns everything it collected up to that point.
  4. You are charged per row returned, so the maximum-results field is also your cost cap.

💬 Your feedback

Found a bug, or need a field this does not return yet? Open an issue on the Actor's Issues tab, or write to reapxdev@proton.me. Bugs get fixed and reasonable field requests get added.