SEC EDGAR Full-Text Search | 16 Fields, Since 2001, No Key avatar

SEC EDGAR Full-Text Search | 16 Fields, Since 2001, No Key

Pricing

from $0.60 / 1,000 filing hits

Go to Apify Store
SEC EDGAR Full-Text Search | 16 Fields, Since 2001, No Key

SEC EDGAR Full-Text Search | 16 Fields, Since 2001, No Key

Search the full text of every SEC EDGAR filing since 2001 across all companies. Find any phrase or risk factor in 10-K, 10-Q, 8-K, S-1 filings. Filter by form and date. Clean JSON, no API key. Works in Claude, ChatGPT and any MCP agent.

Pricing

from $0.60 / 1,000 filing hits

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

SEC EDGAR Full-Text Search: 16 Fields, Since 2001, No Key

šŸ’° From $0.60 / 1,000 results.

Pay only for results delivered. Browse all Actors.

Search the full text of every SEC filing since 2001 by keyword and get 16 structured fields back, including the company, CIK, form type and a direct document URL.

Why use this SEC EDGAR full-text search scraper

Most SEC actors start from a ticker. This one starts from a phrase.

It calls the SEC's own full-text search index, the service behind efts.sec.gov, which searches inside filing documents rather than across filing metadata. Ask for "material weakness in internal control" or "going concern" or a competitor's product name and you get back every filing whose text contains it, no matter who filed it or what form it was.

That inverts the usual research workflow. Instead of "what did Apple file", you can ask "who mentioned this risk", "which companies name this supplier" or "who disclosed this since March". You do not need to know the companies in advance, which is the whole point.

No API key. The SEC's fair-access policy asks only for a descriptive User-Agent carrying a contact email, which is what the contactEmail field is for. Set it to a real address you own.

Coverage runs from 2001, which is where EDGAR's full-text index begins.

Search every filing for a phrase

The simplest run. query is the only required field. Exact-phrase behaviour follows the SEC's own full-text search syntax, so wrap phrases in quotes inside the string when you want them treated as one unit.

{
"query": "\"material weakness\"",
"maxResults": 200,
"contactEmail": "you@yourcompany.com"
}

Restrict the search to specific form types

formTypes maps to the SEC's forms filter. Matching is on the form code, so 8-K also catches its variants.

{
"query": "cybersecurity incident",
"formTypes": [
"8-K"
],
"maxResults": 500,
"contactEmail": "you@yourcompany.com"
}

Monitor a phrase over a date window

Supply either or both dates and the actor sends a custom dateRange. Missing bounds default to 2001-01-01 and today. Schedule this daily with a rolling window and you have a disclosure alarm.

{
"query": "\"going concern\"",
"formTypes": [
"10-K",
"10-Q"
],
"dateFrom": "2026-01-01",
"dateTo": "2026-08-01",
"maxResults": 1000,
"contactEmail": "you@yourcompany.com"
}

Find who names a company or product

Competitive and supply-chain intelligence: search for a company or product name and see who discloses a relationship with it.

{
"query": "\"Taiwan Semiconductor\"",
"dateFrom": "2025-01-01",
"maxResults": 300,
"contactEmail": "you@yourcompany.com"
}

What data you get back

16 fields per matching filing.

FieldWhat it is
companyPrimary filer name
all_companiesEvery filer name on the filing, as an array
ciksEvery CIK on the filing, as an array
formForm type, for example 10-K, 8-K, S-1
file_dateDate the filing was submitted
period_endingReporting period end, where the form has one
accession_numberEDGAR accession number
file_typeThe specific document type that matched
file_descriptionThe SEC's description of that document
items8-K item codes, where applicable
sicStandard Industrial Classification code
biz_locationBusiness address location
biz_stateBusiness address state
inc_stateState of incorporation
filing_urlDirect URL to the matched document on sec.gov
scraped_atISO timestamp of capture

A final _type: "summary" record reports total_available, the count of filings matching your query across the whole index, alongside how many you actually pulled. That number tells you whether to narrow the query or raise maxResults.

How it works

The actor pages efts.sec.gov/LATEST/search-index with your query, form filter and date range, 100 hits per page. The service caps out at an offset of 10,000, which is the ceiling on how deep any single query can go, so a query with more matches than that needs to be split by date window or form type.

Every request carries a descriptive User-Agent built from your contactEmail, which is what the SEC's fair-access policy asks for. 429 and 5xx responses are retried with capped backoff.

Each hit is pushed to the dataset before the charge fires, and the charge is gated on that push.

Who uses SEC EDGAR full-text search data

Risk and disclosure monitoring. Standing daily searches for "material weakness", "restatement", "going concern" or "impairment charge" across 10-K and 10-Q filings.

Competitive intelligence. Find every public company that names a competitor, a supplier or a technology in its filings, without knowing the list in advance.

Legal and compliance research. Locate precedent language across thousands of filings and jump straight to the source document via filing_url.

Financial RAG pipelines. filing_url, accession_number and form give you clean, citable retrieval targets for an LLM pipeline.

What it costs

One pay-per-event charge, filing-hit-scraped, billed per filing hit that actually lands in your dataset. Your rate depends on your own Apify discount tier:

Your Apify tierPer filing hitPer 1,000
FREE$0.0035$3.50
BRONZE$0.00315$3.15
SILVER$0.0028$2.80
GOLD / PLATINUM / DIAMOND$0.0025$2.50

Nothing else is billed. Failed requests, blocked pages, empty searches and error records are never charged, so a run that returns no filing hits costs nothing. There is no subscription and no monthly minimum.

Run it on a schedule

Scheduled runs are the pattern most people end up on: smaller, more frequent runs finish faster, keep the data fresh, and cost exactly the same per record as one big run.

  1. On this actor's page, click ... -> Schedule Actor (or Console -> Schedules -> Create new).
  2. Pick a frequency. @daily suits most standing queries.
  3. Your saved input is reused on every run and each run appends to the dataset.
  4. Wire the dataset to Google Sheets, Slack, or a webhook from the Integrations tab so new rows reach you without you looking.

FAQ

Do I need an SEC API key? No. EDGAR full-text search is open. The SEC asks only for a descriptive User-Agent with a contact email, which is what contactEmail supplies. Use a real address.

How far back does the search go? 2001, which is where EDGAR's full-text index starts. Filings older than that exist in EDGAR but are not full-text searchable.

How many results can one query return? The SEC's index caps pagination at an offset of 10,000. If total_available in the summary exceeds that, split the query by date range or form type.

Does it search inside the document text or just the metadata? Inside the document text. That is the difference between this actor and a ticker-driven filings scraper.

What query syntax does it accept? Whatever the SEC's own full-text search accepts, passed through unchanged, including quoted phrases and boolean operators.

Does it return the full filing text? No, it returns the match metadata plus filing_url. For the document body, feed those URLs to the SEC EDGAR Filings Scraper with includeDocumentText enabled, or to the RAG Website Crawler.

What if nothing matches? The run logs it, writes a summary with zero hits and charges nothing.

Use it from Claude, ChatGPT and any MCP agent

Hosted MCP endpoint, no install, OAuth on first connect:

https://mcp.apify.com/?tools=themineworks/sec-edgar-fulltext-search

Claude Desktop / Cursor config with token auth:

{
"mcpServers": {
"sec-fulltext": {
"url": "https://mcp.apify.com/?tools=themineworks/sec-edgar-fulltext-search",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Or call it from code with the Apify client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('themineworks/sec-edgar-fulltext-search').call({
"query": "\"material weakness\"",
"formTypes": [
"10-K"
],
"maxResults": 100,
"contactEmail": "you@yourcompany.com"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Disclaimer: This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the U.S. Securities and Exchange Commission. It uses the SEC's public EDGAR full-text search service in line with the SEC's fair-access policy. Nothing here is investment advice.

Found a bug or want a field added? Open an issue from the actor's Apify Console page or reach out through the The Mine Works profile.

Last verified: 2026-08