SEC EDGAR Scraper - Filings by Keyword, Ticker or CIK
Pricing
from $1.94 / 1,000 items
SEC EDGAR Scraper - Filings by Keyword, Ticker or CIK
Search SEC EDGAR filings by phrase, or pull a company's filings by ticker or CIK. Each row holds the form type, company, CIK, filing and report dates, accession number, the matching document and a direct link to it. Full-text search returns one row per matching document. $2.00 per 1,000 filings.
Pricing
from $1.94 / 1,000 items
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Search every SEC EDGAR filing by phrase, or pull a company's filings by ticker or CIK, one row per document: the form type, the company, the CIK, the filing date, the accession number and a link straight to the document.
One thing to know before you budget a run: full-text search returns a row per matching document, not per filing. A 10-K whose exhibits all mention your phrase comes back as several rows, and each one is charged.
| Input | A search phrase, or a list of tickers and CIKs |
| Output | One row per matching filing document: form, company, CIK, ticker, filing and report dates, accession number, document name and description, link |
| Ceiling | 10,000 filings per run |
| Account needed | None, and no SEC key |
| Price | $2.00 per 1,000 filings, flat on every plan. The free plan's $5 a month covers about 2,500 |
๐ What SEC EDGAR Scraper does
In search mode it asks EDGAR's full-text index for your phrase and pages through the hits. Your
words go in as one quoted phrase, so artificial intelligence finds that pair of words together, not
documents that happen to contain both somewhere. There are no boolean operators and no wildcards.
In company mode you hand it tickers, CIKs or a mix of the two, and it reads each company's recent
filing history. These rows are fuller: the ticker, the report date and the document description are
all populated, because the company history carries them and the full-text index usually does not.
Both modes take the same form filter and the same date window, and both stop at the same run total.
What you get is filing metadata plus filingUrl, which points at the document itself rather than a
landing page, so you can hand it straight to whatever reads it next.
๐ What data you get from each SEC filing
| What you get | Field |
|---|---|
| The form type | form |
| The company, its CIK and its ticker | companyName, cik, ticker |
| When it was filed, and the period it covers | filingDate, reportDate |
| The SEC's id for the filing | accessionNumber |
| The document that matched, and the SEC's label for it | primaryDocument, description |
| A direct link to the document | filingUrl |
โถ๏ธ How to scrape SEC EDGAR
- Open SEC EDGAR Scraper and click Try for free.
- Leave Mode on full-text search and type a phrase into Search query, or switch to company filings and fill in Tickers or CIKs.
- Set Max filings. Start around 50 to see the row shape.
- Narrow it with Form types and the two date fields if you want, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
๐ฐ How much does it cost to scrape SEC EDGAR?
$2.00 per 1,000 filings. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 2,500 filings.
You pay per row delivered. Duplicate documents are dropped before they are counted, diagnostic rows are not charged, and a search that matches nothing is not charged. Set a maximum cost on the run and it stops when it gets there.
๐ฅ What you give it
{"mode": "search","query": "artificial intelligence","forms": "10-K,8-K","startDate": "2024-01-01","maxItems": 500}
{"mode": "company","tickers": ["AAPL", "TSLA", "0000320193"],"forms": "10-K","maxItems": 200}
| Field | Default | What it is |
|---|---|---|
mode | search | search for the full-text index, company for filing histories. Anything else is treated as search. |
query | none, the form starts with artificial intelligence | The phrase to search for. Needed in search mode, ignored in company mode. |
tickers | empty | Tickers like AAPL, or numeric CIKs, mixed freely. Needed in company mode, ignored in search mode. |
forms | empty | Comma-separated form types, such as 10-K,8-K. Empty means every form. Works in both modes. In company mode the match is exact, so 10-K does not pick up 10-K/A. |
startDate | empty | YYYY-MM-DD. Only filings filed on or after this date. |
endDate | empty | YYYY-MM-DD. Only filings filed on or before this date. |
maxItems | 100 | The total for the whole run, up to 10,000. Not a per-company figure. |
notionConnector | none | Optional. Writes each row into your Notion once the run finishes. |
notionParentId | none | Optional. The Notion data source to write into. |
proxyConfiguration | off | Optional network settings. Off by default, and a normal run does not need it. |
maxItems is a budget for the run, shared by every ticker in the list. Four tickers at
maxItems: 100 does not give you 100 each. The first company can spend the whole budget before the
fourth is reached, so put the ones you care about first.
๐ค What you get back
A real row from a run on 3 October 2026, for artificial intelligence:
{"ok": true,"form": "20-F","companyName": "Xiao-I Corp","cik": "0001935172","ticker": "AIXI","filingDate": "2023-04-28","reportDate": "2022-12-31","accessionNumber": "0001213900-23-033683","primaryDocument": "f20f2022ex4-19_xiaoicorp.htm","description": "ENGLISH TRANSLATION OF AI CLOUD PLATFORM SERVICE CONTRACT BETWEEN SHANGHAI XIAO-I ROBOT TECHNOLOGY CO., LTD. AND CUSTOMER F DATED JUNE 27, 2022","filingUrl": "https://www.sec.gov/Archives/edgar/data/1935172/000121390023033683/f20f2022ex4-19_xiaoicorp.htm"}
| Field | How to read it |
|---|---|
form | The form type, such as 10-K, 8-K or 20-F. |
cik | The SEC's company number, zero-padded to ten digits. Stable, unlike a ticker. |
ticker | Often null in search mode. Always filled in company mode. |
reportDate | The period the filing covers, which is not the date it was filed. Often null in search mode. |
accessionNumber | The SEC's id for the filing. Pair it with primaryDocument to dedupe across runs. |
primaryDocument | The file inside the filing that matched. The row above is an exhibit, not the 20-F itself. |
description | The SEC's own label for that document. Often null in search mode. |
filingUrl | Direct link to the document. null when the CIK or the file name was missing. |
๐งพ Reading the output
Two kinds of row land in your dataset, and ok tells them apart.
| Row | How to spot it | Billed |
|---|---|---|
| A filing | ok: true and an accessionNumber | yes |
| A diagnostic | ok: false and an errorCode | no |
The overview table in the Apify Console shows the filing columns only, so a diagnostic row looks blank there. Switch to the JSON or All fields view to read it.
| Code | What it means |
|---|---|
BAD_INPUT | search mode with no query, or company mode with no tickers. The row says which. |
NO_RESULTS | The request worked and nothing matched your phrase, forms or dates. |
NOT_FOUND | Some tickers or CIKs did not resolve. The unresolved field lists them, and the companies that did resolve still returned rows. |
RATE_LIMITED | The SEC asked for a slower pace than the run could keep. Try a smaller run. |
SERVER_ERROR | The SEC answered with a server error. Usually passes. |
BLOCKED | The SEC refused the request. Re-run it. |
NETWORK | The SEC was unreachable. Re-run it. |
๐ก What people use it for
- Finding every company that used a phrase in its filings, then reading the documents that came back.
- Pulling one company's 10-K and 8-K history for a model that needs the source text, not a summary.
- Watching a form type on a schedule, using the date fields so each run only picks up what is new.
- Building a CIK list for an internal database, since the CIK survives ticker changes and renames.
๐ง What it does not do
- Metadata and a link, never the text. The filing itself is not downloaded or parsed here.
- Full-text search stops at 10,000 results per query. That is the SEC's ceiling. Narrow a common phrase with a form filter or a date range instead of trying to page past it.
- Search rows are thin.
ticker,reportDateanddescriptionare frequentlynull, because the SEC's full-text index does not carry them. Usecompanymode when you need full records. - One row per matching document. A filing with several matching exhibits produces several rows.
companymode reads the recent filings block the SEC publishes per company. A start date further back than that block reaches returns fewer rows without saying so.- Dates are taken as given. An impossible date is not rejected, it just matches nothing.
- The query is one exact phrase. Quotes of your own,
AND,ORand wildcards are not interpreted. - A ticker that has been reused resolves to whichever company holds it today. Use a CIK to be certain.
๐งญ Which market data scraper do you need?
| If you want | Use |
|---|---|
| Stock, ETF, index, FX and crypto quotes with daily price history | Yahoo Finance Scraper |
| Coin prices, market caps and rankings | CoinGecko Scraper |
| Price, liquidity and volume of a DEX trading pair | DexScreener Pair Price & Liquidity Scraper |
| The daily Crypto Fear and Greed reading, back to 2018 | Crypto Fear and Greed Index Scraper |
| Large Polymarket trades and the wallets behind them | Polymarket Whale Tracker |
| Company filings by keyword, ticker or CIK | This one |
| Stock trades members of Congress disclose | Congress Stock Trades Scraper |
| Indian mutual fund NAVs, today's or back to 2010 | Indian Mutual Fund NAV Scraper |
โ Questions people ask
Do I need an SEC account or key?
No. EDGAR is a public government system and nothing here needs an account.
Why did four tickers give me fewer rows than I expected?
maxItems is one budget for the whole run. Raise it, or run the companies separately.
Why is the ticker empty on my search results?
The SEC's full-text index often does not publish it. Take the cik from the row and run company
mode on that.
Can I search for two phrases at once?
Not in one run. The query goes in as a single quoted phrase. Run them separately and join on
accessionNumber.
How do I pick up only new filings on a schedule?
Set startDate to the day you last ran it, and each run picks up what has been filed since.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code for
Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/sec-edgar-scraper. Either way the run
happens on your Apify account at the same price.
Is scraping SEC EDGAR legal?
EDGAR is published by the SEC for public use, and these are documents companies are required by law to file. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
๐ If something breaks
Open the Issues tab on the actor page. Send the run ID and the input you used. The errorCode on
the diagnostic row usually names the problem on its own.