SEC EDGAR Scraper - Filings by Keyword, Ticker or CIK avatar

SEC EDGAR Scraper - Filings by Keyword, Ticker or CIK

Pricing

from $1.94 / 1,000 items

Go to Apify Store
SEC EDGAR Scraper - Filings by Keyword, Ticker or CIK

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

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

2 days ago

Last modified

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.

InputA search phrase, or a list of tickers and CIKs
OutputOne row per matching filing document: form, company, CIK, ticker, filing and report dates, accession number, document name and description, link
Ceiling10,000 filings per run
Account neededNone, 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 getField
The form typeform
The company, its CIK and its tickercompanyName, cik, ticker
When it was filed, and the period it coversfilingDate, reportDate
The SEC's id for the filingaccessionNumber
The document that matched, and the SEC's label for itprimaryDocument, description
A direct link to the documentfilingUrl

โ–ถ๏ธ How to scrape SEC EDGAR

  1. Open SEC EDGAR Scraper and click Try for free.
  2. Leave Mode on full-text search and type a phrase into Search query, or switch to company filings and fill in Tickers or CIKs.
  3. Set Max filings. Start around 50 to see the row shape.
  4. Narrow it with Form types and the two date fields if you want, then click Start.
  5. 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
}
FieldDefaultWhat it is
modesearchsearch for the full-text index, company for filing histories. Anything else is treated as search.
querynone, the form starts with artificial intelligenceThe phrase to search for. Needed in search mode, ignored in company mode.
tickersemptyTickers like AAPL, or numeric CIKs, mixed freely. Needed in company mode, ignored in search mode.
formsemptyComma-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.
startDateemptyYYYY-MM-DD. Only filings filed on or after this date.
endDateemptyYYYY-MM-DD. Only filings filed on or before this date.
maxItems100The total for the whole run, up to 10,000. Not a per-company figure.
notionConnectornoneOptional. Writes each row into your Notion once the run finishes.
notionParentIdnoneOptional. The Notion data source to write into.
proxyConfigurationoffOptional 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"
}
FieldHow to read it
formThe form type, such as 10-K, 8-K or 20-F.
cikThe SEC's company number, zero-padded to ten digits. Stable, unlike a ticker.
tickerOften null in search mode. Always filled in company mode.
reportDateThe period the filing covers, which is not the date it was filed. Often null in search mode.
accessionNumberThe SEC's id for the filing. Pair it with primaryDocument to dedupe across runs.
primaryDocumentThe file inside the filing that matched. The row above is an exhibit, not the 20-F itself.
descriptionThe SEC's own label for that document. Often null in search mode.
filingUrlDirect 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.

RowHow to spot itBilled
A filingok: true and an accessionNumberyes
A diagnosticok: false and an errorCodeno

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.

CodeWhat it means
BAD_INPUTsearch mode with no query, or company mode with no tickers. The row says which.
NO_RESULTSThe request worked and nothing matched your phrase, forms or dates.
NOT_FOUNDSome tickers or CIKs did not resolve. The unresolved field lists them, and the companies that did resolve still returned rows.
RATE_LIMITEDThe SEC asked for a slower pace than the run could keep. Try a smaller run.
SERVER_ERRORThe SEC answered with a server error. Usually passes.
BLOCKEDThe SEC refused the request. Re-run it.
NETWORKThe 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, reportDate and description are frequently null, because the SEC's full-text index does not carry them. Use company mode when you need full records.
  • One row per matching document. A filing with several matching exhibits produces several rows.
  • company mode 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, OR and 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 wantUse
Stock, ETF, index, FX and crypto quotes with daily price historyYahoo Finance Scraper
Coin prices, market caps and rankingsCoinGecko Scraper
Price, liquidity and volume of a DEX trading pairDexScreener Pair Price & Liquidity Scraper
The daily Crypto Fear and Greed reading, back to 2018Crypto Fear and Greed Index Scraper
Large Polymarket trades and the wallets behind themPolymarket Whale Tracker
Company filings by keyword, ticker or CIKThis one
Stock trades members of Congress discloseCongress Stock Trades Scraper
Indian mutual fund NAVs, today's or back to 2010Indian 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.

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.