SEC EDGAR Full-Text Search Scraper avatar

SEC EDGAR Full-Text Search Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
SEC EDGAR Full-Text Search Scraper

SEC EDGAR Full-Text Search Scraper

Search all SEC filings (10-K, 8-K, S-1, etc.) by any keyword or phrase via EDGAR full-text search. Extract company name, ticker, CIK, form type, filing date, accession number, and file URL. No API key required.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

SEC EDGAR Full-Text Search Scraper — Search All SEC Filings by Keyword, Form Type & Date

Search SEC EDGAR's currently indexed full-text filings and extract structured company data, filing metadata and document links — no API key or login. Runs are bounded by maxResults, the Actor time budget and the SEC search index's own coverage and limits.

What does SEC EDGAR Full-Text Search Scraper do?

This actor queries the SEC EDGAR full-text search engine (efts.sec.gov) — the same engine powering the official EDGAR EFTS search interface — to find filings that match a keyword, quoted phrase, or supported Boolean expression. It supports form filters such as 10-K annual reports, 8-K material events, S-1 IPO prospectuses, 10-Q quarterly reports, DEF 14A proxy statements, and 20-F foreign private issuer filings.

The Actor paginates through results using the from parameter (100 raw document hits per page), collecting up to your maxResults cap. Because EFTS can return several matching documents from one filing package, the Actor deduplicates run-wide by accession number and keeps the first document in SEC's upstream order. It supplies a descriptive User-Agent, defaults to direct access, retries transient failures, and verifies suspicious proxy-origin empty responses through another route.

Who is it for?

  • Financial analysts and hedge funds tracking narrative shifts (AI risk, ESG disclosures, supply chain) across thousands of annual reports simultaneously.
  • Compliance and legal teams that need to monitor how specific regulatory language appears in filings across sectors.
  • Journalists and investigative reporters searching for companies mentioning specific topics, events, or counterparties.
  • Academic researchers building datasets of SEC disclosures for NLP, topic modeling, or event studies.
  • Corporate intelligence professionals doing competitive benchmarking by searching for competitor names or product mentions inside rival filings.

Use cases

  • Find every 10-K that mentions "artificial intelligence risk" and build a dataset of AI-related risk disclosures across all public companies.
  • Search for all 8-K filings mentioning a specific executive's name or a named acquisition target to reconstruct M&A timelines.
  • Track which companies filed S-1 prospectuses disclosing "cryptocurrency" holdings or revenue in a given year.
  • Pull all DEF 14A proxy statements referencing a specific activist investor or shareholder proposal language.
  • Monitor real-time filings for new disclosures about a specific geopolitical event, product recall, or regulatory investigation.

Why use SEC EDGAR Full-Text Search Scraper?

  • No API key required — queries the public EFTS endpoint used by EDGAR's own search UI.
  • 14 output fields per filing — company name, ticker, CIK, form type, filing date, period ending, accession number, document URL, EDGAR index page, description, locations, incorporation states, SIC codes, and relevance score.
  • Bulk pagination — scans up to the 10,000-hit EFTS result window in pages of 100 and returns unique filing accessions.
  • Flexible form filtering — filter by one or multiple form types (10-K, 8-K, S-1, etc.) or search across all forms.
  • Date range support — narrow results to a specific date window with dateFrom and dateTo.
  • Export to CSV, JSON, Excel — all results available via Apify's standard dataset export in any format.

What data can you extract?

The actor returns one row per matching filing accession with the following fields:

FieldTypeDescription
companyNamestringFull registered company name (e.g. "Apple Inc.")
tickerstringStock ticker symbol(s) (e.g. "AAPL", or "LAAI, VEST" for multiple)
cikstringSEC Central Index Key — unique company identifier
formTypestringSEC form type (10-K, 8-K, 10-K/A, S-1, etc.)
filingDatestringDate the filing was submitted (YYYY-MM-DD)
periodEndingstringPeriod the filing covers (YYYY-MM-DD), e.g. fiscal year end
accessionNostringAccession number (e.g. "0001477932-26-002727") — unique filing ID
fileUrlstringDirect URL to the first matched document in SEC's upstream order for that filing
edgarUrlstringEDGAR filing index page URL for the full filing package
fileDescriptionstringHuman-readable description of the document (e.g. "FORM 10-K ANNUAL REPORT")
bizLocationsstringBusiness/mailing address(es) from the filing header
incStatesstringState(s) of incorporation
sicsstringSIC industry code(s) for the company
relevanceScorenumber / nullUpstream relevance score when supplied (higher generally means a closer indexed match)

Example output record:

{
"companyName": "Apple Inc.",
"ticker": "AAPL",
"cik": "0000320193",
"formType": "10-K",
"filingDate": "2024-11-01",
"periodEnding": "2024-09-28",
"accessionNo": "0000320193-24-000123",
"fileUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm",
"edgarUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/000032019324000123-index.htm",
"fileDescription": "FORM 10-K",
"bizLocations": "Cupertino, CA",
"incStates": "CA",
"sics": "3571",
"relevanceScore": 18.5
}

How to use

Option A — Search by keyword across all forms

  1. Set query to your search phrase (e.g. "supply chain disruption").
  2. Leave forms empty (or remove it) to search all form types.
  3. Optionally set dateFrom and dateTo for a date window.
  4. Set maxResults to how many results you need.

Input JSON:

{
"query": "supply chain disruption",
"maxResults": 500
}

Option B — Target specific form types and date range

  1. Set query to your keyword.
  2. Set forms to the form types you want (e.g. ["10-K", "10-K/A"]).
  3. Set dateFrom and dateTo for the filing date window.

Input JSON:

{
"query": "cryptocurrency exposure",
"forms": ["10-K", "8-K", "S-1"],
"dateFrom": "2023-01-01",
"dateTo": "2024-12-31",
"maxResults": 1000
}

Input parameters

ParameterTypeDefaultDescription
querystringartificial intelligenceOptional full-text keyword or phrase; empty input uses the documented default
formsarray[]SEC form types to filter by. Empty = all forms
sortstringrelevanceUpstream relevance order, or client-side dateDesc / dateAsc after collection
dateFromstring""Filing date start filter (YYYY-MM-DD)
dateTostring""Filing date end filter (YYYY-MM-DD)
maxResultsinteger200Maximum unique filing accessions to return (1–10000)
proxyConfigurationobjectdirect (useApifyProxy: false)Optional Apify proxy settings

Full input JSON:

{
"query": "artificial intelligence risk",
"forms": ["10-K"],
"sort": "relevance",
"dateFrom": "2022-01-01",
"dateTo": "2024-12-31",
"maxResults": 200,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": []
}
}

Output example

{
"companyName": "Microsoft Corporation",
"ticker": "MSFT",
"cik": "0000789019",
"formType": "10-K",
"filingDate": "2024-07-30",
"periodEnding": "2024-06-30",
"accessionNo": "0000950170-24-087843",
"fileUrl": "https://www.sec.gov/Archives/edgar/data/789019/000095017024087843/msft-20240630.htm",
"edgarUrl": "https://www.sec.gov/Archives/edgar/data/789019/000095017024087843/000095017024087843-index.htm",
"fileDescription": "FORM 10-K",
"bizLocations": "Redmond, WA",
"incStates": "WA",
"sics": "7372",
"relevanceScore": 22.4
}

Tips for best results

  • Use quoted phrases for exact matches (e.g. "deepfake risk") to find filings that use that precise language.
  • Combine with date filters to track how disclosure language evolved over time — compare 2021 vs. 2024 for the same query.
  • Filter by 8-K for real-time event disclosures — 8-K filings are submitted within 4 business days of a material event.
  • Use 10-K for annual risk factor analysis — annual reports contain the most detailed risk disclosures in Item 1A.
  • CIK is your stable ID — use it to look up all filings by a company at https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK={cik}.
  • Start broad, then narrow — run with all forms and a wide date range first to understand result volume, then add filters.
  • Cross-reference the accessionNo — it uniquely identifies the filing; use it to fetch exhibit lists or the full filing index.
  • High relevance score = closer keyword match — sort by relevanceScore descending for the most on-topic results.
  • For foreign companies, filter by form type 20-F (annual) or 6-K (periodic reports for foreign private issuers).
  • Use larger maxResults values for broader samples, while accounting for EFTS's 10,000 raw-hit window and the Actor's four-minute pagination budget.

Integrations

Connect SEC EDGAR Full-Text Search Scraper to your existing workflow:

  • Google Sheets — export dataset to Sheets via Apify's native Google Sheets integration; auto-refresh on a schedule.
  • Slack — configure webhooks to notify your team when new filings matching your query appear.
  • Zapier / Make — connect to 1000s of apps; trigger workflows when new filing data is available.
  • Webhooks — set up Apify webhooks to POST results to your own API endpoint on run completion.
  • Schedule — run weekly or daily to monitor new filings for your query terms as companies file.

API usage

cURL:

curl -X POST \
"https://api.apify.com/v2/acts/logiover~sec-edgar-fulltext-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query": "artificial intelligence risk",
"forms": ["10-K"],
"maxResults": 200
}'

Node.js (Apify client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/sec-edgar-fulltext-scraper').call({
query: 'artificial intelligence risk',
forms: ['10-K'],
maxResults: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/sec-edgar-fulltext-scraper").call(run_input={
"query": "artificial intelligence risk",
"forms": ["10-K"],
"maxResults": 200,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with AI agents (MCP)

SEC EDGAR Full-Text Search Scraper is compatible with the Apify MCP server, allowing AI agents like Claude, GPT-4, and others to search SEC filings directly via tool calls. Connect the MCP server and your agent can answer questions like: "Find all 10-K filings from 2023 mentioning 'PFAS exposure' and list the companies by relevance score" — without any manual data extraction.

FAQ

Does this actor require an API key or login?

No. The SEC EDGAR full-text search endpoint (efts.sec.gov) is fully public and requires no authentication. The only requirement is a descriptive User-Agent header, which is set automatically.

How far back does the coverage go?

The SEC's current Full-Text Search FAQ describes coverage for electronically submitted EDGAR filings since 2001. Searchability still depends on what the SEC has indexed, and a query can match filing attachments such as exhibits as well as the main document.

How many results can I get per run?

The Actor can scan the first 10,000 raw document hits exposed by the EFTS result window. Set maxResults up to 10000; the final row count can be lower because documents sharing one accession are intentionally collapsed to one filing and because the four-minute pagination budget still applies. Each page fetches up to 100 raw hits.

Why do I get 0 results?

Check your query spelling and try broader terms. Very narrow phrases may have no exact matches. Also verify the form filter; SEC EFTS can include amendment variants (for example, 10-K/A) when a base form such as 10-K is selected. Inspect formType, then try removing form and date filters first.

Why are some fields null?

Not all filings have every metadata field populated. Foreign issuers often lack US state fields. Companies without a ticker (e.g. reporting-only entities) will have ticker: null.

Can I export results to CSV or Excel?

Yes. After the run, go to the dataset and click "Export" — choose CSV, JSON, Excel, or XML. You can also use the Apify API to fetch the dataset programmatically.

How fast is a run?

Runtime depends on result volume, SEC response time and retries. The Actor enforces a four-minute pagination budget and preserves any rows collected before that budget.

Is there a rate limit on the SEC EDGAR server?

The Actor sends a descriptive User-Agent, performs requests sequentially and backs off on throttling/service-unavailable responses. Upstream throttling can still occur, so callers should keep schedules and parallel runs conservative.

SEC EDGAR exposes public filing data for investor access. You remain responsible for following current SEC access guidance, respecting rate limits and assessing any downstream legal or compliance requirements for your use.

How often is EDGAR updated?

The SEC processes filings continuously on business days. New 8-K filings appear within hours of submission. Schedule this actor daily to capture new filings as they appear.

Can I search for multiple keywords at once?

Yes — EDGAR's full-text search supports boolean operators. Try "supply chain" AND "force majeure" or "cybersecurity" OR "data breach" in your query field.

What form types are available?

The input dropdown exposes common forms including 10-K, 10-Q, 8-K, S-1, 20-F, 6-K, DEF 14A, SC 13G, Form 4 and 13F-HR. Leave forms empty to search all form types covered by SEC EFTS.

This actor accesses the SEC EDGAR Full-Text Search System, a public U.S. government service provided by the Securities and Exchange Commission. All data returned is in the public domain and freely accessible per U.S. government open data policy. No login, scraping of private content, or circumvention of access controls is involved. Users are responsible for ensuring their use of financial disclosure data complies with applicable securities laws and their organization's policies.

📝 Changelog

2026-08-01

  • Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
  • Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.
  • Added stable run-wide accession-number deduplication for SEC EFTS document-level hits, retaining the first upstream-ranked document and applying maxResults to unique filings without changing input query/filter semantics.
  • Aligned README, input and dataset contracts with the unique-filing output and retained matched-document URL semantics.
  • Corrected README coverage, direct-proxy default, numeric example and query-language claims against current SEC documentation.

2026-08-01 — Health-check remediation

  • August 2026 monthly health-check remediation is in progress; this build contains fixes verified from empty/default, Console-default, targeted live probes, or field-level semantic review.
  • Defaulted to direct SEC EFTS access, verifies suspicious proxy-origin empty responses through another route, and fails explicitly when transport errors prevent all output.
  • Deduplicates SEC's document-level hits run-wide by accession number, keeps the first upstream-ranked matching document, and applies maxResults to unique filings without changing query/filter provenance.
  • The final four-input matrix verdict will be appended after post-build cloud revalidation.