SEC EDGAR Scraper · Filings, Financials & Full-Text Search
Pricing
from $2.20 / 1,000 filing returneds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share

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:
| SIC | Industry |
|---|---|
| 2836 | Biological products |
| 3571 | Electronic computers |
| 6022 | State commercial banks |
| 6798 | Real estate investment trusts |
| 7372 | Prepackaged software |
| 2834 | Pharmaceutical preparations |
| 1311 | Crude 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.
What to search
Give at least one of these three. Companies is the fastest and most precise.
| Field | Type | Accepts | What it does |
|---|---|---|---|
companies | list | one value per line | One 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"]. |
fullTextQuery | string | free text | Search the text of filings themselves. Wrap a phrase in double quotes to match it exactly, for example "material weakness". Covers filings from 2001 onward. |
sic | string | free text | Return 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.
| Field | Type | Accepts | What it does |
|---|---|---|---|
formTypes | list | one value per line | Which 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"]. |
filedFrom | string | YYYY-MM-DD | Earliest filing date to return, as YYYY-MM-DD. Prefilled with "2024-01-01". |
filedTo | string | YYYY-MM-DD | Latest filing date to return, as YYYY-MM-DD. Leave empty for today. |
stateOfIncorporation | string | free text | Two-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.
| Field | Type | Accepts | What it does |
|---|---|---|---|
includeFinancials | true/false | checkbox | Add 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. |
includeFilingHistory | true/false | checkbox | By 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. |
maxFilings | integer | 1 to 100000 | Hard ceiling on the rows this run produces, and therefore on what it costs. You are charged per filing returned. Prefilled with 50. |
maxFilingsPerCompany | integer | 1 to 10000 | Spreads the result set across companies instead of exhausting the first one. Leave empty for no per-company limit. |
requestsPerSecond | integer | 1 to 10 | Politeness 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}
Filter by full-text search
{"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
| Field | Type | What it is |
|---|---|---|
cik | string | SEC Central Index Key for the filer, zero-padded to ten digits. Stable for the life of the company. |
companyName | string | Registrant name exactly as recorded by the SEC. |
ticker | string | Primary trading symbol. Null for private filers and funds that have none. |
exchange | string | Primary listing venue. |
sic | string | Standard Industrial Classification code assigned by the SEC. |
sicDescription | string | Plain-language name of the SIC code. |
stateOfIncorporation | string | Two-letter code for where the company is incorporated, not where it operates. |
fiscalYearEnd | string | Month and day the fiscal year closes, as MMDD. |
entityType | string | SEC filer classification. |
accessionNumber | string | Unique identifier for this filing. Use it to deduplicate across runs. |
formType | string | SEC form. Amendments carry a /A suffix. |
filingDate | string | Date the filing was accepted by EDGAR, as YYYY-MM-DD. |
reportDate | string | End of the fiscal period the filing covers, as YYYY-MM-DD. Null for forms that cover no period. |
acceptanceDateTime | string | Exact timestamp EDGAR accepted the filing. Use this, not the filing date, to order same-day filings. |
items | string | Comma-separated item numbers disclosed, for 8-K filings. Null for other forms. |
fileNumber | string | SEC file number the filing was made under. |
sizeBytes | integer | Total size of the filing submission in bytes. |
isXBRL | true/false | Whether the filing carries structured XBRL financial data. |
primaryDocument | string | Filename of the main document inside the submission. |
primaryDocDescription | string | SEC label for the primary document. |
filingIndexUrl | string | Human-readable index page listing every document in the submission. |
documentUrl | string | Direct link to the primary document. |
matchedFullTextQuery | string | The full-text query this filing matched. Present only on runs that used full-text search. |
financials | object | Latest annual figures from the company's own XBRL filings. Present only when 'Attach key financials' is enabled. |
retrievedAt | string | UTC 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
Is scraping SEC EDGAR legal?
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
- sec edgar scraper archive — every entity this Actor has observed
- All reapx datasets — 20 sources, tens of thousands of pages
- llms.txt · feed.json · feed.xml — the machine-readable index, for agents
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
- You set the filters below, or none at all.
- The Actor calls the source's own public endpoint and pages through the results.
- 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.
- 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.