SEC EDGAR Filing Extractor for AI Agents
Pricing
Pay per usage
SEC EDGAR Filing Extractor for AI Agents
SEC EDGAR Filing Extractor for AI Agents: citation-ready chunks (company, form, filing date, SEC document URL, excerpt) from public EDGAR filings. Stateless — no tracker/checkpoints. Public SEC data only — no credentials, proxies, or LLMs. FREE listing.
Stateless SEC EDGAR filing extractor optimized for AI-agent consumption. The user brings tickers, CIKs, and/or company names plus form types; the Actor returns parsed, citation-ready chunks of recent EDGAR filings — company name, form, filing date, report date, accession number, primary document, document URL, text excerpt, item section, and text length — ready to paste into an AI assistant.
What it is for
Concrete workflows the Actor supports:
- Equity analyst — peer risk-factor comparison. Pull the latest 10-K for
each company in a peer group (tickers or company names), then read the
textChunkof each filing side by side. Each chunk starts at an Item heading (e.g. Item 1 Business, Item 1A Risk Factors, Item 7 MD&A) when one appears early in the document, and every chunk carries itsdocumentUrlso the analyst can cite the exact SEC source. - Compliance desk — material-event watchlist alerting. Feed a watchlist of
CIKs with
formTypes: ["8-K"]and aminFilingDate/maxFilingDatewindow to pull all current reports filed in a period. One structured run returns every matching filing with its excerpt; nothing is stored between runs, so the desk can re-run the same input on a schedule without any watchlist state. - AI-assistant builder — citation-ready chunks. A single Actor run returns
one dataset item per filing, each with
documentUrl(the public SEC Archives URL of the primary document) plus a deterministic excerpt. Paste the chunks into an assistant and cite each one by itsdocumentUrl— an MCP-style data source backed by a single structured run. - M&A analyst — insider screening around a deal. Screen Form 4 / 3 / 5 beneficial-ownership filings (plus 8-Ks) for the target and acquirer tickers over the last 30 days to see which insiders bought or sold ahead of or after an announcement. Each item carries the insider-relevant fields (form, filing date, accession, document URL) for follow-up in Form 4 detail.
- Quant researcher — insider-flow feed. Pull Form 4 filings across a universe of tickers to build an insider buying/selling flow series. One run emits one dataset item per Form 4 with citation-ready excerpt and SEC document URL, ready to load into a spreadsheet or model.
What kind of product this is
- Kind B agent tool (MCP-style data source): lets an AI assistant pull real EDGAR filing data through a single structured run.
- Kind A bring-your-own-data extractor: you bring the tickers/CIKs/company names; the Actor does the extraction job on that public data.
What this is NOT
This is explicitly not a tracker: there are no checkpoints, no delta alerts, no watchlist state, and nothing is remembered between runs. Each run is stateless and independent. The Actor is free when there is nothing to return (an empty dataset costs nothing).
Data sources
Public SEC data only, via official SEC endpoints:
- https://www.sec.gov/files/company_tickers.json — ticker/company-name -> CIK resolution
- https://data.sec.gov/submissions/CIK{CIK}.json — company recent filings feed
- https://www.sec.gov/Archives/edgar/data/... — filing primary documents
No credentials, no proxies, no scraping of rate-limited or anti-bot pages, and no commercial inference (no LLMs) inside the product. Requests are paced to respect SEC rate guidance (~10 requests/s), and one failing ticker, CIK, or company name never aborts the whole run.
Search terms (store discovery)
Users find this Actor on the Apify Store with terms such as:
- SEC EDGAR Filing Extractor for AI Assistants
- SEC EDGAR filing extractor
- SEC EDGAR extractor
- EDGAR extractor
- SEC filing data for AI assistants
- EDGAR filing data for AI assistants
- SEC 10-K 10-Q 8-K extractor
- SEC filings for AI assistants
- Form 4 insider filings
The Store title and description carry the core terms ("SEC EDGAR Filing Extractor", "SEC EDGAR filings", "citation-ready chunks for AI assistants"); this section lists them for reference when updating the listing metadata.
Example runs
Each example is valid Actor input you can paste into the Apify Store input editor. Every run emits one dataset item per extracted filing.
Default run — two tickers, default forms (10-K, 10-Q, 8-K), 90-day lookback:
{"tickers": ["AAPL", "MSFT"],"formTypes": ["10-K", "10-Q", "8-K"],"lookbackDays": 90,"maxResultsPerTicker": 10,"maxResultsTotal": 200,"textChunkMaxChars": 1800}
Watchlist of tickers and CIKs — one record per filing. Pull recent filings for a mixed watchlist (tickers plus raw CIKs), capping output at 50 items:
{"tickers": ["AAPL", "MSFT", "BRK.A"],"ciks": ["0000320193", "0000789019"],"formTypes": ["10-K", "10-Q", "8-K"],"lookbackDays": 90,"maxResultsTotal": 50}
Company names with a date window. Resolve company names to CIKs via
company_tickers.json and pull all 8-Ks in a calendar month:
{"companyNames": ["Apple Inc.", "Microsoft Corp"],"formTypes": ["8-K"],"minFilingDate": "2026-10-01","maxFilingDate": "2026-10-31","maxResultsTotal": 50}
Compliance desk — material-event watchlist alerting. All current reports for a CIK watchlist in a period; stateless, so the desk re-runs the same input on a schedule with no stored watchlist state:
{"ciks": ["0000320193", "0000789019", "0001067983"],"formTypes": ["8-K"],"minFilingDate": "2026-10-01","maxFilingDate": "2026-10-31","maxResultsTotal": 100}
M&A — insider screening around a deal. Form 4 / 3 / 5 beneficial-ownership filings plus 8-Ks for target and acquirer tickers over the last 30 days:
{"tickers": ["TGT", "ACQR"],"formTypes": ["4", "3", "5", "8-K"],"lookbackDays": 30,"maxResultsPerTicker": 25,"maxResultsTotal": 100}
Quant — insider-flow feed. Form 4 filings across a universe of tickers for insider buying/selling flow analysis:
{"tickers": ["AAPL", "MSFT", "GOOGL", "AMZN", "META", "BRK.A", "JPM", "V", "UNH", "XOM"],"formTypes": ["4"],"lookbackDays": 90,"maxResultsPerTicker": 100,"maxResultsTotal": 1000}
Input
See actor/input-schema.json and .actor/input_schema.json. Provide at
least one of tickers, ciks, or companyNames.
| Field | Type | Default | Description |
|---|---|---|---|
tickers | array of strings | — | SEC tickers, e.g. ["AAPL", "MSFT", "BRK.A"] (max 100) |
ciks | array of strings | — | SEC CIKs, up to 10 digits, e.g. ["0000320193"] (max 100) |
formTypes | array of strings | ["10-K","10-Q","8-K"] | 10-K, 10-Q, 8-K, 13F-HR, 4, 3, 5, SD, 10-KT, 10-QT |
companyNames | array of strings | — | Company names resolved to CIKs via company_tickers.json (case-insensitive exact match on the registered title; prefix match fallback; first match wins). Max 25. Can be combined with or replace tickers/ciks. |
lookbackDays | integer | 90 | Days back from today (1-365). Ignored when minFilingDate and maxFilingDate are both set. |
minFilingDate / maxFilingDate | string (YYYY-MM-DD) | — | Date range replacing lookbackDays when both are given. |
maxResultsTotal | integer | 200 | Hard cap on total dataset items per run (1-1000). |
maxResultsPerTicker | integer | 10 | Max chunks per ticker/CIK per run (1-100). |
textChunkMaxChars | integer | 1800 | Max excerpt size per filing (500-8000). |
Example (default run):
{"tickers": ["AAPL", "MSFT"],"formTypes": ["10-K", "10-Q", "8-K"],"lookbackDays": 90,"maxResultsPerTicker": 10,"maxResultsTotal": 200,"textChunkMaxChars": 1800}
Example (company names → CIK resolution, date range):
{"companyNames": ["Apple Inc.", "Microsoft Corp"],"formTypes": ["8-K"],"minFilingDate": "2026-10-01","maxFilingDate": "2026-10-31","maxResultsTotal": 50}
Output
One dataset item per extracted filing. See actor/output-schema.json and
.actor/dataset_schema.json.
Fields per item:
| Field | Type | Description |
|---|---|---|
ticker | string|null | User-supplied ticker (only for ticker-driven runs) |
cik | string | 10-digit zero-padded SEC CIK |
companyName | string | Company name from the SEC submissions feed |
form | string | SEC form type |
filingDate | string | Filing date (YYYY-MM-DD) |
reportDate | string|null | Report period date (YYYY-MM-DD) |
accessionNumber | string | SEC accession number |
primaryDocument | string | Primary document filename |
documentUrl | string (uri) | Public SEC Archives URL of the primary document — cite this |
textChunk | string | Deterministic excerpt, HTML stripped, capped at textChunkMaxChars |
textLength | integer | Length of the full stripped document text before excerpting |
itemSection | string|null | Item heading the excerpt starts at (Item 1, Item 1A, Item 7, …), or null |
retrievedAt | string | UTC extraction timestamp (ISO 8601) |
documentUrl is the public SEC Archives URL of the filing's primary
document — cite it alongside the chunk. textChunk is a deterministic
excerpt: it starts at an Item heading (Item 1, Item 1A, Item 7, …) when one
appears early in the document, otherwise at the document opening. It is
empty when the document could not be read; the item is still emitted with
its citation fields. itemSection names the heading the chunk starts at,
and textLength gives the full document length before excerpting.
Example output items
10-K (Apple Inc.):
{"ticker": "AAPL","cik": "0000320193","companyName": "Apple Inc.","form": "10-K","filingDate": "2026-10-27","reportDate": "2026-09-26","accessionNumber": "0000320193-26-000123","primaryDocument": "aapl-20260926.htm","documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000123/aapl-20260926.htm","textChunk": "Item 1. Business. Apple Inc. designs, manufactures and markets smartphones, personal computers, tablets, wearables and accessories, and sells a variety of related services.","textLength": 245010,"itemSection": "Item 1","retrievedAt": "2026-11-03T04:00:00+00:00"}
8-K (Apple Inc., real output from live run E8BNXP5lgBiNWafr2, build 0.1.23):
{"ticker": "AAPL","cik": "0000320193","companyName": "Apple Inc.","form": "8-K","filingDate": "2026-11-02","reportDate": "2026-11-02","accessionNumber": "0000320193-26-000024","primaryDocument": "aapl-20261102.htm","documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000024/aapl-20261102.htm","textChunk": "aapl-20261102 false 0000320193 0000320193 2026-11-02 2026-11-02 0000320193 us-gaap:CommonStockMember ... UNITED STATES SECURITIES AND EXCHANGE COMMISSION ... FORM 8-K CURRENT REPORT ... Apple Inc. ...","textLength": 3987,"itemSection": null,"retrievedAt": "2026-11-03T06:17:35+00:00"}
Company-name resolution example: input "companyNames": ["Apple Inc."] resolves via company_tickers.json (exact case-insensitive title match) to CIK 0000320193; output items carry ticker: null (company-name-driven) and cik: "0000320193".
All dates and chunks above are illustrative examples of the output shape; they are not verified adoption or revenue claims. The E8BNXP5lgBiNWafr2 item above is truncated for readability; the full item is in that run's default dataset.
Limits
- Max 100 tickers/CIKs per run (combined
tickers+ciks); max 25companyNames. - Max 100 chunks per ticker/CIK per run; hard cap of 200 total items per run.
- Lookback window 1-365 days (default 90). Only filings in the SEC's recent submissions feed are scanned — very old filings outside that feed are not covered.
- Date range (
minFilingDate/maxFilingDate) replaceslookbackDayswhen both are given. - Requests are paced at ~8 requests/s; runs fan out across at most 3 concurrent requests.
- Excerpts are capped at
textChunkMaxChars(default 1,800; allowed 500-8,000).
Monetization decision (documented)
Decision: pay-per-event (PPE) pricing enabled via the Apify API on 2026-11-03 CET.
Verification (via PUT + GET /v2/actors/BoRHIjgH4qa9XzdvK, HTTP 200 both):
isPublic: true, listing public and live,notice: NONE.pricingModel: PAY_PER_EVENTwithpricingInfos:apify-actor-start$0.0001 per runapify-default-dataset-item$0.005 per extracted filing, primary event, title "SEC filing alert"apifyMarginPercentage: 0.2(Apify share)
- Payout/billing is not configured on this account; KYC/payout is an owner step at payout time (POLICY #3). No account creation, payment, or KYC was performed by the builder.
No revenue or adoption claims. Verified revenue is $0 and unverified until a payout ledger shows otherwise (recorded as "unverified"). The 14-day kill test (baseline below) measures whether the listing earns its first external user/bookmark or paid run from a non-owner buyer by ~2026-11-17 CET; otherwise the product is killed or pivoted.
Owner step (not done by the builder): complete payout/billing setup at https://console.apify.com/actors/BoRHIjgH4qa9XzdvK/publication when the owner is ready to receive payouts. KYC happens only at payout time.
Quality gate (live, verified)
Run the public default input
{"tickers": ["AAPL", "MSFT"], "formTypes": ["10-K", "10-Q", "8-K"], "lookbackDays": 90}
on the live public listing:
- Run id:
lfMEGUPzk9HTgUxEo(ActorBoRHIjgH4qa9XzdvK, build0.1.26/latest, started2026-11-03T06:44:21.141Z, finished2026-11-03T06:44:24.859Z) - Status:
SUCCEEDED, exit code 0, build0.1.26 - Dataset items: 5 (> 0), fetched from
defaultDatasetId - Server runtime: 3.718s — well under the 5-minute bound
Verified 2026-11-03 CET via the Apify API (POST /v2/actors/BoRHIjgH4qa9XzdvK/runs, GET /v2/actor-runs/lfMEGUPzk9HTgUxEo, GET /v2/datasets/{defaultDatasetId}/items).
Prior gate run (build 0.1.25, then-latest): i27849uaTvEzOGdzf — SUCCEEDED, 5 items, 3.842s (2026-11-03T06:34:12Z).
Fixes in build 0.1.25:
- The failed run
mubbEyyZ0lkz4EDok(build0.1.21, exit code 91): its INPUT record nested the real fields under an"input"key, sotickerswas invisible and_normalize_inputraisedValueError. The Actor now unwraps a nested"input"— runjM1qFYXCX6jze0S3Owith that exact input now SUCCEEDS and returns AAPL + MSFT filings; this task's own double-wrapped-input checkO3oOceKneFRC0HW1q(build0.1.26) SUCCEEDED with 5 items too. - Run-wide
maxResultsTotalcap now counts only emitted items (previously scanned-but-filtered entries burned cap slots).
Every schema input variant was verified live on build 0.1.26 under task t_bd9e95f7 — tickers, ciks, companyNames (→ CIK resolution), formTypes incl. 13F-HR/4/3/5/SD, min/max filing-date range (empty and hitting windows), maxResultsTotal cap, textChunkMaxChars — all SUCCEEDED; run IDs and outcomes are recorded in that task's completion comment. Not reproducible with well-formed input; every run on builds 0.1.23–0.1.26 since 05:50 CET succeeded.
Local checks (no network, deterministic):
pytest actor/tests # 36 passedruff check actor/ # clean
14-day kill test (falsifiable experiment)
Goal: prove or disprove external demand for this non-tracker product before any monetization or further investment.
- Start: 2026-11-03 CET (day 0).
- End: 2026-11-17 CET (14-day observation window).
- Baseline recorded at start (2026-11-03 CET):
totalUsers=2,users30d=1(owner only),bookmarkCount=0,totalRuns=50,lastRunStartedAt=2026-11-03T06:16:46.584Z(pre gate run). - Re-measured at start of task t_bd9e95f7 (2026-11-03 CET):
totalRuns=79,users30d=1(owner only, unverified),bookmarkCount=0, revenue$0(unverified — no payout ledger),lastRunStartedAt=2026-11-03T06:34:54Z. Listing is now PAY_PER_EVENT (pricing set via Apify API, see Monetization decision above). - Tracked (read-only via
GET /v2/actors/BoRHIjgH4qa9XzdvK, no new accounts):users30d/totalUsers— any increase above the owner signals an external user.bookmarkCount— any bookmark ≥ 1 signals external interest.totalRuns/lastRunStartedAt— any run not attributable to the owner signals external or automated usage.
- Pass criterion: ≥ 1 external user/bookmark OR ≥ 1 paid run within 14 days.
- Fail criterion: none of the above by 2026-11-17 CET → kill or re-price.
- Checkpoints: day 7 (2026-11-10 CET) and day 14 (2026-11-17 CET) — record users/bookmarks/runs each time.
Claims statement
All claims in this README are limited to what the product verifiably does: it reads public SEC EDGAR data through official endpoints and returns citation-ready chunks. This README contains no revenue, user, or adoption claims, because none are verified.