SEC EDGAR Scraper: Filings, Form 4, 13F, XBRL
Pricing
from $0.70 / 1,000 filing index rows
SEC EDGAR Scraper: Filings, Form 4, 13F, XBRL
SEC EDGAR scraper for structured filings: 10-K/10-Q/8-K sections as Markdown, parsed Form 4 insider trades, 13F holdings, Form D and XBRL financials as clean rows. Watchlist monitor with Slack alerts. Official endpoints, pay per filing from $0.001.
Pricing
from $0.70 / 1,000 filing index rows
Rating
0.0
(0)
Developer
Andrew Boiko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
SEC EDGAR Scraper turns raw filings into data you can use: parsed Form 4 insider trades, 13F institutional holdings, Form D offerings, clean annual and quarterly financial statements from XBRL, and 10-K, 10-Q and 8-K text split by Item and converted to Markdown for LLM pipelines. It also monitors a watchlist and sends new filings to Slack or any webhook.
Everything comes from the official SEC endpoints (submissions, company facts, full-text search, the latest-filings feed and the Archives folder). No API key, no login, no HTML scraping of search pages, no blocks. You pay per filing, from $0.001.
What does SEC EDGAR Scraper: Filings, Form 4, 13F, XBRL do?
Pick a mode, list tickers or CIK numbers, and the Actor returns structured rows:
| Mode | What you get | Billed event |
|---|---|---|
filings | Filing index rows: form, filing and report dates, accession number, 8-K item codes, document URL | filing-row |
parse | Form 4 insider transactions (non-derivative and derivative, owner, role, price, shares, A/D code), 13F-HR holdings (issuer, CUSIP, value, shares), Form D basics | parsed-form |
markdown | 10-K, 10-Q and 8-K converted to Markdown, split by Item (1A Risk Factors, 7 MD&A, 2.02 and so on), tables kept as Markdown tables | filing-markdown |
financials | Annual and quarterly income statement, balance sheet and cash flow rows built from XBRL company facts, plus a CSV file | financials-pull |
monitor | Only filings that are new since the last run, state kept in a named key-value store, optional Slack or webhook POST | filing-row |
search | EDGAR full-text search results as filing rows | filing-row |
latest | Newest filings from the SEC latest-filings feed, optionally limited to your watchlist | filing-row |
Tickers are resolved to CIK through the official company_tickers.json file. You can also pass CIK numbers directly, which is how you point the parse mode at an institution for 13F filings.
Why use SEC EDGAR Scraper: Filings, Form 4, 13F, XBRL?
- Parsed, not raw. Many EDGAR tools stop at the filing index or raw HTML. This Actor parses the Form 4 and 13F XML tables, and it splits long reports into Item sections you can feed to an LLM one section at a time, with an optional token budget per section.
- Cheap per filing. One billed event covers one whole filing: $0.003 for a parsed Form 4 or 13F (a 13F can hold thousands of holdings), $0.01 for a full 10-K as Markdown. Typical paid SEC data APIs and chunk-priced tools cost more for the same volume, and there is no monthly fee here.
- Built-in watchlist and alerts. The
monitormode remembers what it has already seen and posts only new filings to Slack or any HTTPS webhook. Schedule it every 15 minutes with an Apify schedule. - Polite to SEC by design. A declared User-Agent with your contact email and a hard limit of 8 requests per second (SEC allows 10), with retries and backoff on 429 and 5xx.
- Works for agents. Array input, flat rows and token budgets suit MCP tools and trading or research agents. Output is public filing data only.
How much does it cost to scrape SEC EDGAR?
Pay per event. Prices per single event in USD, by Apify plan:
| Event | FREE | BRONZE | SILVER | GOLD |
|---|---|---|---|---|
filing-row (one filing index row) | $0.0010 | $0.0009 | $0.0008 | $0.0007 |
parsed-form (one Form 4, 13F-HR or Form D parsed) | $0.0030 | $0.0027 | $0.0024 | $0.0021 |
filing-markdown (one 10-K, 10-Q or 8-K as Markdown) | $0.0100 | $0.0090 | $0.0080 | $0.0070 |
financials-pull (one company, all statements) | $0.0100 | $0.0090 | $0.0080 | $0.0070 |
Examples at FREE prices: 1,000 filing rows = $1.00. 1,000 parsed Form 4 filings = $3.00. 100 annual reports as Markdown = $1.00. 100 companies' financial statements = $1.00. Apify's own run start event is separate and not added by this Actor.
Fair-use notes:
- Free Apify plan users get up to 25 results per run. The run then ends normally with the message "Free tier limit reached (25 results). Upgrade to a paid Apify plan for unlimited results."
- Set
maxItemsto cap results per run, and Apify'smaxTotalChargeUsdto cap spend. The Actor stops gracefully when either limit is reached. - You are never charged for failed filings, filings that could not be parsed, empty results or duplicates.
- With
flattenRowsthe output has one row per transaction or holding, but billing stays one event per filing.
Input
Main fields (all have defaults, a run with no input works):
| Field | Type | Meaning |
|---|---|---|
contactEmail | string | Your email, sent in the SEC User-Agent. Required by SEC rules. The placeholder you@example.com works but logs a warning. |
mode | select | filings, parse, markdown, financials, monitor, search, latest |
companies | array | Tickers or CIKs, for example ["AAPL","MSFT","1067983"] |
formTypes | array | 10-K, 10-Q, 8-K, 4, 13F-HR, D, S-1, DEF 14A ... |
includeAmendments | boolean | Also return /A forms |
dateFrom, dateTo | string | Filing date range, YYYY-MM-DD |
maxFilingsPerCompany | integer | Newest first, default 10 |
maxItems | integer | Cap on billed results for the run |
searchQuery | string | Full-text query for search mode |
sections | array | Item codes to keep in markdown mode, for example ["1A","7"] |
maxTokensPerSection | integer | Truncate each section to about this many tokens |
includeFullMarkdown | boolean | Add one combined Markdown string |
flattenRows | boolean | One row per transaction, holding or financial fact |
maxHoldingsPerFiling | integer | Keep only the N largest 13F holdings |
statements, periods, yearsBack, deriveQ4 | various | financials mode options |
monitorName, stateStoreName, lookbackDaysFirstRun, webhookUrl, resetState | various | monitor mode options. webhookUrl is stored as a secret. |
maxRequestsPerSecond | integer | Never above 8 |
proxyConfiguration | object | Off by default. Turn on only if SEC answers 403 or 429 for your IP range. |
Example 1: latest filings index for three tickers
{"contactEmail": "you@yourcompany.com","mode": "filings","companies": ["AAPL", "MSFT", "NVDA"],"formTypes": ["10-K", "10-Q", "8-K"],"maxFilingsPerCompany": 20}
Example 2: insider trading data as one row per transaction
{"contactEmail": "you@yourcompany.com","mode": "parse","companies": ["TSLA"],"formTypes": ["4"],"maxFilingsPerCompany": 25,"flattenRows": true}
Example 3: watchlist alerts for new 8-K and Form 4 filings to Slack
{"contactEmail": "you@yourcompany.com","mode": "monitor","companies": ["AAPL", "NVDA", "AMD"],"formTypes": ["8-K", "4"],"monitorName": "tech-watchlist","lookbackDaysFirstRun": 3,"webhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ"}
Output example
Illustrative output, shortened. Field values are examples, not live data.
Filing row (filings, search, latest, monitor):
{"recordType": "filing","cik": "0000320193","ticker": "AAPL","companyName": "Apple Inc.","accessionNumber": "0000320193-26-000010","form": "8-K","filingDate": "2026-10-10","reportDate": "2026-10-09","items": ["2.02", "9.01"],"filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000010/a8k.htm"}
Form 4 transaction (parse with flattenRows):
{"recordType": "form4-transaction","ticker": "AAPL","ownerName": "COOK TIMOTHY D","ownerRole": "Director, Chief Executive Officer","table": "non-derivative","security": "Common Stock","transactionDate": "2026-10-01","transactionCode": "S","acquiredDisposed": "D","shares": 1000,"pricePerShare": 250.5,"valueUsd": 250500,"sharesOwnedAfter": 3280000,"tenb51Plan": true}
Markdown section (markdown):
{"recordType": "filing-markdown","form": "10-K","sectionCount": 2,"estimatedTokensTotal": 11800,"sections": [{ "part": "I", "item": "1A", "title": "Risk Factors", "estimatedTokens": 7400, "markdown": "Competition is intense..." }]}
Financial row (financials with flattenRows):
{"recordType": "financial-row","statement": "income","concept": "Revenue","xbrlTag": "RevenueFromContractWithCustomerExcludingAssessedTax","periodType": "annual","fiscalYear": 2025,"periodEnd": "2025-09-27","value": 391035000000,"derived": false,"form": "10-K"}
Every run also writes an OUTPUT record with counts, charged events, an estimate of the charge at FREE prices and any warnings. In financials mode a financials-<ticker>.csv file is stored in the key-value store as well.
How to use SEC EDGAR Scraper: Filings, Form 4, 13F, XBRL (tutorial)
- Open the Actor and type your own email into
contactEmail. SEC asks every automated client to identify itself. - Choose a
mode. For insider trading data chooseparsewith form type4. For holdings of a fund chooseparse, form type13F-HRand the fund's CIK. For report text choosemarkdown. - Add tickers or CIKs to
companiesand setmaxFilingsPerCompanyandmaxItemsso the cost is predictable. - Click Start. Open the Output tab for the dataset table, or the key-value store for the
OUTPUTsummary and CSV files. - Export as JSON, CSV or Excel, call it from the API, or put it on an Apify schedule. For alerts, use
monitormode and paste a Slack webhook URL.
Tips: for an LLM, use markdown with sections: ["1A","7"] and maxTokensPerSection: 6000. For spreadsheets, use flattenRows: true. In financials mode, Q4 values are derived as full year minus Q1 to Q3 and are marked derived: true.
Run via API
Synchronous call that returns dataset items:
curl -X POST "https://api.apify.com/v2/acts/tiger19935~sec-edgar-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"contactEmail":"you@yourcompany.com","mode":"parse","companies":["NVDA"],"formTypes":["4"],"maxFilingsPerCompany":10,"flattenRows":true}'
Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('tiger19935/sec-edgar-scraper').call({contactEmail: 'you@yourcompany.com',mode: 'markdown',companies: ['MSFT'],formTypes: ['10-K'],sections: ['1A', '7'],maxTokensPerSection: 6000,maxFilingsPerCompany: 1,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].sections.map((s) => s.title));
MCP: the Actor takes array input and returns flat JSON, so it works as a tool through the Apify MCP server. Add tiger19935/sec-edgar-scraper to the tools list of the Apify MCP server and your agent can call it with the same input as above.
Integrations
- n8n and Make: use the Apify node or module, run the Actor, read the dataset. Trigger on a schedule or a webhook.
- Zapier: use the Apify app, action "Run Actor", then map dataset fields into your Zap.
- Google Sheets: use the Apify integration to export each run to a sheet, ideal with
flattenRows. - Slack and webhooks:
monitormode posts{ "text": ..., "filings": [...] }to any HTTPS URL, compatible with Slack incoming webhooks. You can also use Apify run webhooks. - MCP agents: call it from Claude, ChatGPT or custom agents through the Apify MCP server.
Legal / ethical use
This Actor reads public filings from sec.gov through the official data endpoints. SEC fair-access rules require a declared User-Agent and at most 10 requests per second. The Actor identifies itself with your contactEmail and stays at 8 requests per second or below. Do not raise the load by running many copies in parallel from one IP. Filings contain names of company officers and directors as published by the SEC. If you store or publish personal data, you are responsible for your own compliance, for example with GDPR. The Actor does not log in anywhere and does not access private data.
The data is public filing data only. It is not financial, investment, legal or tax advice, and parsed or derived values (for example the derived Q4 figures or the 13F value basis) should be checked against the original filing before you rely on them.
FAQ and support
Is it using official SEC data? Yes. It uses the EDGAR submissions, company facts and full-text search endpoints, the latest-filings feed and the Archives folder, with a declared User-Agent and rate limiting below the SEC limit.
Can I use it for trading agents? Yes. Outputs are structured, flat rows are available, sections can be token-budgeted, and the Actor works as an MCP tool. It delivers data, not signals.
Does it give financial advice? No. It delivers public filing data only.
Do I need an API key? No. You only need to provide an email address for the SEC User-Agent.
How do I get 13F holdings for a fund?
Use mode: "parse", formTypes: ["13F-HR"] and the fund manager's CIK in companies. Since 2023 the SEC reports 13F values in whole dollars. For older filings the Actor multiplies the reported thousands by 1,000 and says so in valueBasis.
Why does a Form 4 search by ticker show the company's filings? Form 4 filings are listed under the issuer company as well as under the insider. Searching by the issuer ticker returns insider trades in that company.
Why are some Item sections missing?
Item headings in EDGAR documents are not standardized. If no headings are detected, the whole document is returned as one section and a warning is added. Use includeFullMarkdown or open an issue with the filing URL.
Why did the run stop at 25 results? You are on the Apify free plan, which is capped at 25 results per run. Upgrade to a paid plan to remove the cap.
Why do I get HTTP 403 or 429 from SEC?
Use a real contactEmail, keep maxRequestsPerSecond low and avoid parallel runs from the same IP. If your IP range is throttled, enable proxyConfiguration.
Support: open a ticket in the Issues tab of this Actor. Replies come within 12 hours. Please include the run link and the filing URL if a filing does not parse.
More tools by the same author
- Prozorro & TED Tenders Scraper - public tenders from Ukraine and the EU
- Billing & Payment Stack Detector - which payment gateway a website uses
- Website Technology Detector - tech stack of any site
- Decision-Maker Contacts - people and roles at a company
Related searches
sec edgar scraper, sec edgar api, form 4 insider trading data, 13f holdings api, 10-k to markdown, xbrl financial data, sec filings monitor, edgar full text search, insider transactions csv, 8-k alerts, sec filings for llm, company financials api.