📄 SEC EDGAR Filings Scraper avatar

📄 SEC EDGAR Filings Scraper

Pricing

from $3.50 / 1,000 sec filing records

Go to Apify Store
📄 SEC EDGAR Filings Scraper

📄 SEC EDGAR Filings Scraper

Scrape SEC EDGAR filings for any public company by ticker or CIK. 10-K, 10-Q, 8-K, S-1, DEF 14A, Form 4, 13F. Normalized JSON, ISO dates, form-category enum, AI-ready markdown. Watchlist mode emits only new filings. Export, run via API, schedule, or integrate with other tools.

Pricing

from $3.50 / 1,000 sec filing records

Rating

0.0

(0)

Developer

Skootle

Skootle

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

SEC EDGAR Filings hero

TL;DR

Monitor SEC EDGAR filings for any public company by ticker or CIK. 10-K, 10-Q, 8-K, S-1, DEF 14A, Form 4, 13F, and every other form. Returns clean structured JSON with form-category enum, ISO 8601 dates, direct primary-document URLs, and a 300-500 character markdown summary per filing. Watchlist mode emits only NEW filings since the previous run, so daily schedules become a clean diff feed of new disclosures. Built on SEC's official EDGAR submissions API. No authentication beyond a contact email in the User-Agent (SEC's own requirement).


Try it on a small dataset, then let us know what you think in a review.


What does SEC EDGAR Filings Monitor do?

SEC EDGAR Filings Monitor extracts SEC filings for any public company. You give it a list of stock tickers (or SEC CIKs for filers without tickers — funds, insiders, foreign issuers); it returns one record per filing with: form name, normalized form-category enum, accession number, filing date, period date, primary document URL, file metadata, items list (8-K item codes like 2.02, 5.02), XBRL flags, plus a joined snapshot of company metadata (name, ticker, exchange, SIC code, SIC description, fiscal year end).

The actor pulls from SEC's official data.sec.gov/submissions/CIK<cik>.json endpoint and the public ticker → CIK map, with a compliant User-Agent containing your contact email per SEC's API guidelines. Built on the same SEC infrastructure that powers the EDGAR website itself, so reliability matches SEC's own uptime.

Watchlist mode (watchlistMode: true) makes this scraper schedulable. State persists across runs in the actor's key-value store, so a daily cron only emits filings NEW since the last run.

Why scrape SEC EDGAR?

SEC EDGAR is the canonical source of public-company financial disclosures. Every 10-K, 10-Q, 8-K, S-1, proxy filing, insider Form 4, and 13F holdings disclosure flows through EDGAR within minutes of being accepted by the SEC. Buy-side analysts, equity researchers, compliance teams, M&A advisors, and AI-powered investment platforms all need a live feed of new filings.

The official EDGAR API is free and public, but it's columnar (parallel arrays per filing field) and returns the most recent 1,000 filings per company in a peculiar shape. This actor handles the normalization: each filing becomes one well-typed record with ISO timestamps, a form-category enum (so you don't have to map 200+ form names client-side), and the company joined per row.

Who needs this?

  • Equity research analysts monitoring a portfolio of tickers for new 10-K, 10-Q, and 8-K disclosures
  • Insider-trading signal pipelines filtering formCategory: 'insider_transaction' (Form 4, 5, 3) on watchlist tickers
  • 13F-tracking quants monitoring institutional holders (Berkshire, Renaissance, Citadel, hedge funds)
  • IPO and capital-markets desks filtering formCategory: 'registration' and prospectus for S-1, S-1/A, 424B filings
  • Compliance and corporate-actions desks watching 8-K events for material developments
  • Proxy-season governance researchers filtering DEF 14A across the S&P 500 in March-May
  • AI agents and LLM apps ingesting filings as a structured feed for downstream summarization, sentiment, or alerting
  • Financial-news aggregators breaking stories minutes after EDGAR posts

How to use SEC EDGAR Filings Monitor

  1. Open the Input tab on the actor page
  2. Add tickers (e.g., AAPL, MSFT, NVDA) to the tickers field, OR raw CIKs to ciks for filers without tickers
  3. Optionally set formFilter to specific forms (e.g., ["10-K", "10-Q", "8-K"]) or formCategoryFilter to category enums (e.g., ["annual_report", "current_report"])
  4. Set filingsPerCompany (default 20) and maxItems (default 50, conservative for the 5-minute auto-test)
  5. Optionally set daysLookback to limit to recent filings (e.g., daysLookback: 30 for last 30 days)
  6. Optionally enable watchlistMode for daily scheduled runs that only return new filings
  7. Click Start or call via the Apify REST API or CLI

You can run on demand from the Console, schedule it with Apify's cron, call via API, or integrate with Make, Zapier, n8n, Slack, Google Sheets.

How much will scraping SEC EDGAR cost?

This actor is priced per event:

  • Actor Start: $0.01 once per run
  • SEC filing record: tiered, charged per record written
Apify plan$/1000 records
FREE$30.00
BRONZE$25.50
SILVER$21.00
GOLD$18.00
PLATINUM$18.00
DIAMOND$16.20

A typical daily portfolio watchlist on 25 tickers with filingsPerCompany: 20 returns ~50-100 records on day 1, then 5-20 per day in watchlist mode. Roughly $0.90-$1.80 per daily run on the GOLD plan. Premium tier matches the value: this is real-time financial intelligence, not a commodity scrape.

Yes, EDGAR is explicitly designed for public access. The SEC publishes API access guidelines requesting only that callers send a User-Agent with a contact email and stay under 10 requests/second. This actor honors both: the User-Agent includes the maintainer's email by default (override via contactEmail input), and rate-limiting keeps it well under the 10/s ceiling.

There is no copyright on the filings themselves — they are public-record disclosures filed by registrants with the SEC, and federal law explicitly puts them in the public domain. Use the data freely for research, analytics, AI training, or commercial products.

Examples

Example 1: Daily watchlist on Apple

{
"tickers": ["AAPL"],
"filingsPerCompany": 20,
"watchlistMode": true,
"maxItems": 20
}

Example 2: 10-K and 10-Q filings only across the FAANG portfolio

{
"tickers": ["META", "AMZN", "AAPL", "NFLX", "GOOGL"],
"formFilter": ["10-K", "10-K/A", "10-Q", "10-Q/A"],
"filingsPerCompany": 10,
"maxItems": 50
}

Example 3: Insider Form 4 monitoring on the S&P-50 mega-caps

{
"tickers": ["AAPL", "MSFT", "NVDA", "GOOGL", "AMZN", "META", "TSLA", "BRK.B", "JPM", "JNJ"],
"formCategoryFilter": ["insider_transaction"],
"filingsPerCompany": 50,
"watchlistMode": true,
"maxItems": 500
}

Example 4: 13F holdings disclosures for top hedge funds (CIKs)

{
"ciks": ["1067983", "1029160", "1336528", "1167483"],
"formFilter": ["13F-HR", "13F-HR/A"],
"filingsPerCompany": 5,
"maxItems": 20
}

CIK 1067983 is Berkshire Hathaway. Use SEC's EDGAR full-text search to find any filer's CIK.

Example 5: 8-K material-events monitoring (M&A, exec changes, restatements)

{
"tickers": ["MSFT", "GOOGL", "META", "AAPL", "NVDA", "TSLA"],
"formCategoryFilter": ["current_report"],
"watchlistMode": true,
"filingsPerCompany": 30
}

Example 6: IPO-pipeline monitoring (S-1 and S-1/A across recent filers)

{
"tickers": ["RDDT", "ARM", "INSM", "BRK.B"],
"formCategoryFilter": ["registration", "prospectus"],
"daysLookback": 365,
"filingsPerCompany": 20
}

Example 7: Proxy-season DEF 14A scrape

{
"tickers": ["AAPL", "MSFT", "GOOGL", "AMZN", "META", "JPM", "BAC", "WFC"],
"formCategoryFilter": ["proxy"],
"daysLookback": 120,
"filingsPerCompany": 5
}

Example 8: Last 7 days of any filings, any company, premium token

{
"tickers": ["AAPL"],
"daysLookback": 7,
"filingsPerCompany": 100
}

Input parameters

FieldTypeDefaultDescription
tickersstring[]["AAPL"]Stock tickers. Resolved to CIK via SEC's official ticker map.
ciksstring[][]Use for filers without tickers (private filers, funds, insiders).
formFilterstring[][]Exact-match form names. Empty = all.
formCategoryFilterstring[][]Filter by category enum. Empty = all.
filingsPerCompanyint201-1000
daysLookbackint00 = no date filter; otherwise only filings on or after (today - N days).
watchlistModeboolfalseIdempotent diff against KV-stored seen accession numbers.
maxItemsint50Hard cap on total filings.
contactEmailstringmaintainerSent in the SEC User-Agent header per SEC requirements.

Form category enum

Each filing carries formCategory from this enum (so you don't have to map 200+ form names downstream):

CategoryForms it covers
annual_report10-K, 10-K/A, 20-F, 40-F
quarterly_report10-Q, 10-Q/A
current_report8-K, 8-K/A, 6-K
registrationS-1, S-1/A, S-3, S-4, F-1
prospectus424B1, 424B2, 424B3, 424B4, 424B5
proxyDEF 14A, DEFA14A, PRE14A
insider_transaction3, 4, 4/A, 5
institutional_holdings13F-HR, 13F-HR/A, 13D, 13G, SC13D, SC13G
amendmentany form ending in /A not classified above
otherevery other form on EDGAR

SEC EDGAR output format

sec_filing

FieldTypeDescription
outputSchemaVersionstringVersioned literal ('2026-05-08')
recordTypeliteral'sec_filing'
recordIdstringsec:filing:<accession-clean> (idempotent, cross-run dedupe-friendly)
accessionNumber, accessionNumberCleanstringSEC's official ID (with dashes + cleaned)
url, primaryDocumentUrl, filingIndexUrlstringDirect links to the document and EDGAR index
form, formCategory, isAmendmentstring/enum/boolForm identity + classification
filingDate, reportDate, acceptanceDateTimeISO 8601All timestamps standardized
primaryDocument, primaryDocDescriptionstringFilename + SEC-supplied description
fileNumber, filmNumberstringEDGAR file/film IDs
itemsstring[]8-K item codes (e.g., ["2.02", "9.01"])
isXBRL, isInlineXBRLboolXBRL availability flags
sizeintBytes
companyobjectJoined company metadata: cik, cikPadded, name, ticker, exchange, sicCode, sicDescription, fiscalYearEnd
fieldCompletenessScoreint 0-100Self-filtering signal
agentMarkdownstring300-500 char LLM-ready summary

SEC EDGAR scraper output example

{
"outputSchemaVersion": "2026-05-08",
"recordType": "sec_filing",
"recordId": "sec:filing:000032019325000118",
"accessionNumber": "0000320193-25-000118",
"form": "10-K",
"formCategory": "annual_report",
"isAmendment": false,
"filingDate": "2025-11-01",
"reportDate": "2025-09-28",
"primaryDocDescription": "10-K",
"primaryDocumentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000118/aapl-20250928.htm",
"items": [],
"isXBRL": true,
"company": {
"cik": "320193",
"cikPadded": "0000320193",
"name": "Apple Inc.",
"ticker": "AAPL",
"exchange": "Nasdaq",
"sicCode": "3571",
"sicDescription": "Electronic Computers",
"fiscalYearEnd": "0928"
},
"fieldCompletenessScore": 100,
"agentMarkdown": "**📄 10-K · $AAPL · Apple Inc.**\n> 10-K\n- 🗂 form: 10-K (annual_report)\n- 📅 filed: 2025-11-01 · period: 2025-09-28\n- 🏢 Electronic Computers · Nasdaq\n- 🔗 https://www.sec.gov/Archives/edgar/data/320193/000032019325000118/aapl-20250928.htm"
}

During the Actor run

The actor first fetches SEC's ticker → CIK map (one call) if you provided tickers. Then for each CIK it calls data.sec.gov/submissions/CIK<cik>.json, which returns the most recent ~1,000 filings in a columnar shape. The actor normalizes each filing into a record, applies your filters (formFilter, formCategoryFilter, daysLookback), validates against a Zod schema, and pushes.

Each request carries User-Agent: Skootle Apify Actors <contactEmail> per SEC requirements. Inter-request delay: 110ms (well under SEC's 10/s ceiling).

The actor writes three things to its key-value store:

  1. OUTPUT — compact run summary: companies queried, filings saved, watchlist deltas, error counts
  2. AGENT_BRIEFING — markdown digest with form-mix counts and the top 10 material filings
  3. WATCHLIST_STATE — (only when watchlistMode: true) seen accession numbers, capped at 10,000

FAQ

How does SEC EDGAR Filings Monitor work?

The actor calls SEC's official EDGAR submissions API (data.sec.gov/submissions/CIK<cik>.json) for each CIK in your input, normalizes the columnar response into one record per filing, applies your filters, and pushes the dataset.

Can I monitor filings for new disclosures only?

Yes. Set watchlistMode: true. The first run emits everything; subsequent runs emit only filings new since the previous run. Schedule with the Apify cron scheduler.

Can I filter to specific form types?

Two ways: formFilter for exact-match form names (e.g., ["10-K", "10-Q"]), or formCategoryFilter for category groupings (e.g., ["annual_report", "quarterly_report"]). Combine both for narrow filters.

Can I use this with the Apify API?

Yes. POST to https://api.apify.com/v2/acts/skootle~sec-edgar-filings/runs with your input as JSON body and your Apify token as the Authorization: Bearer header.

Can I integrate with Make / Zapier / n8n / Slack?

Yes. From the actor page, click Integrations and pick your destination.

Can I get filings from before EDGAR's recent window?

This actor returns the most recent ~1,000 filings per company (the submissions/recent window EDGAR exposes). For deeper historical pulls, use SEC's full-index files at https://www.sec.gov/Archives/edgar/full-index/.

Can I get the full text of each filing?

This actor returns metadata + a direct URL to the primary document. To download document contents, pipe the primaryDocumentUrl to a downstream HTTP fetcher (e.g., the Apify Web Crawler or a Make.com HTTP step).

Can I find a CIK by company name?

This actor accepts both tickers and CIKs as input. To look up a CIK by name, use SEC's EDGAR full-text search or the company_tickers.json map (also fetched by this actor when you supply tickers).

Is the data delayed?

No — EDGAR exposes filings as soon as the SEC accepts them, typically within minutes of the filer's submission. This actor reads the live API, not a delayed cache.

Why does this actor cost more than free EDGAR scrapers?

Free actors trade reliability and feature depth for cost. This actor ships a versioned schema, idempotent record IDs, the joined company metadata, the formCategory enum (saves you from mapping 200+ form names), agentMarkdown per filing, watchlist diff mode, and continuous maintenance. If you're feeding the data into a portfolio-monitoring pipeline or AI agent, those features pay back the per-record cost in saved engineering time.

Your feedback

Hit a bug or want a feature? Open an issue on the Issues tab rather than the reviews page, and we'll fix it fast (typically within 48 hours).

Why choose SEC EDGAR Filings Monitor

  • Form-category enumannual_report, quarterly_report, current_report, registration, proxy, insider_transaction, institutional_holdings, prospectus, amendment, other. No need to maintain a 200+ form-name lookup table.
  • Joined company metadata per filing — every record has company.{cik, name, ticker, exchange, sicCode, sicDescription, fiscalYearEnd}. No second query needed.
  • Watchlist diff mode — only emits NEW filings since the last run. Schedule daily without paying for duplicates.
  • SEC-compliant from day one — User-Agent with contact email, sub-second rate limit, follows SEC's published API guidelines.
  • Versioned schemaoutputSchemaVersion: '2026-05-08' literal on every record; downstream pipelines never break silently.
  • Idempotent record IDssec:filing:<accession> stable across runs.
  • Agent-grade outputagentMarkdown (300-500 chars) drop-into-LLM ready; fieldCompletenessScore for self-filtering.
  • Continuous maintenance — when EDGAR's API changes (rare), the actor adapts within 24-48 hours.

Other Skootle actors you might want to check

Support and contact

File issues on this actor's page (Issues tab) — replies within 48 hours. For feature requests, drop them in the same tracker tagged enhancement.