SEC EDGAR Full-Text Search: Filings by Keyword and Form
Pricing
from $1.50 / 1,000 sec filing matcheds
SEC EDGAR Full-Text Search: Filings by Keyword and Form
Search the full text of SEC EDGAR filings by keyword or phrase, form type and date. One row per filing with company, form, filing date and a link to the matching document, plus an alert mode that only returns new filings.
Pricing
from $1.50 / 1,000 sec filing matcheds
Rating
0.0
(0)
Developer
Adriana Voss
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Search the full text of SEC filings for a word or phrase, filtered by form type and date, and get one row per filing. Each row has the company, CIK, form, filing date, period, and a link to the matching document on sec.gov. Use it to find every 10-K that mentions "going concern", every 8-K about a "cybersecurity incident", or every filing that names a supplier. Turn on monitoring and run it on a schedule to get only filings that are new since your last run, charged per filing and free on a quiet day.
Who uses it: analysts and screeners watching risk language, compliance and due-diligence teams, journalists, and agents that need "which filings say X" as structured rows.
Related actors: for one company's filing list use SEC EDGAR Company Lookup; for 8-K events by item number use SEC 8-K Event Alerts. This actor searches what filings say, across all companies.
How to use
- In the Apify Console. Open the actor page and click Start — the
queriesfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~sec-edgar-full-text-search-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"queries":["going concern"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
Input
{"queries": ["going concern"]}
One word or phrase per line, matched against the full text of SEC filings and their exhibits. Put a phrase in double quotes for an exact match. Each line is a separate search; a filing that matches several is returned once. Accepted formats: going concern, "material weakness", "cybersecurity incident".
Searching form 10-K also returns its amendments (10-K/A). Quote a phrase for an exact match. Several lines are separate searches; a filing that matches more than one comes back once, with matchedQueries listing which. The index holds one hit per document, so a 10-K and its exhibits are merged into a single filing row (matchedDocuments says how many matched).
Output
One row per filing, for example:
| query | found | status | searchSummary | filingCount | truncated | monitorStatus | filings | accessionNumber | companyName | ticker | cik | form | filedAt | periodEnding | documentType | fileDescription | sicCode | businessLocation | incorporationState | matchedDocuments | matchedQueries | documentUrl | filingIndexUrl | isNew | firstSeenAt | scrapedAt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| going concern | true | OK | <all filings (full list)> | <is this filing new?> | 1970-01-01T00:00:00.000Z |
A search with no match comes back as one row with "found": false and is never charged. Fields SEC does not publish for a filing (for example periodEnding on most 8-Ks) are null, never 0 or an empty string.
Only filings in SEC EDGAR full-text search coverage are searchable; SEC publishes it from 2001 onward.
Pricing
Pay-per-event. A flat per-run fee covers session/proxy warmup; you're billed
per item only when data is actually found and returned — see
.actor/pay_per_event.json for exact prices. A miss is never charged.
Example runs
Paste any of these into the Input tab and press Start. All three return rows with no key, no token and no account of your own beyond an Apify login.
10-Ks that mention "going concern", last 30 days. The default shape.
{"queries": ["going concern"],"forms": ["10-K"],"sinceDays": 30,"maxResults": 20}
8-Ks about a cybersecurity incident in a fixed window.
{"queries": ["\"cybersecurity incident\""],"forms": ["8-K"],"startDate": "2026-09-01","endDate": "2026-10-11","maxResults": 50}
Material weakness language across 10-K and 10-Q, with monitoring on.
{"queries": ["\"material weakness\""],"forms": ["10-K", "10-Q"],"sinceDays": 7,"onlyNewSinceLastRun": true}
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~sec-edgar-full-text-search-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"queries":["going concern"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~sec-edgar-full-text-search-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"queries":["going concern"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~sec-edgar-full-text-search-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"queries":["{{search}}"]}, mapping the row's search into the queries array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "sec edgar full text search" — the agent will find and run this actor.