SEC Scraper | EDGAR Filings and Company Data
Pricing
from $1.66 / 1,000 filings
SEC Scraper | EDGAR Filings and Company Data
Extract SEC EDGAR filings by ticker, CIK, company name or full-text keyword: 10-K, 10-Q, 8-K, Form 4, Form D, S-1, 13F and more, with dates, decoded 8-K items, linked exhibits and the filer's profile (SIC industry, state, addresses, EIN). No login or API key needed. Export to JSON, CSV or Excel.
Pricing
from $1.66 / 1,000 filings
Rating
0.0
(0)
Developer
SilentFlow
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
SEC Scraper
Every SEC EDGAR filing, with the company behind it, as one clean row. List the filings of your watchlist, search the full text of 10-K, 10-Q and 8-K filings and their exhibits by keyword, or pull this week's Form D and S-1 filings, each row with the press release or exhibit linked and the filer's profile attached. 100 filings in 14 seconds, no account, no API key.
How it works

- Type companies or keywords. Paste tickers, CIKs or company names one per line (
AAPL,320193,Berkshire Hathaway) to list their filings. Type keywords instead ("artificial intelligence") to search inside every filing on EDGAR. Leave both empty to get the latest filings of the form types you pick. Filter by form type and filing date. - Get one row per filing. Each row carries the filing (form, dates, decoded 8-K items, primary document, exhibits with direct links) and the filer's company profile (tickers, exchanges, SIC industry, state of incorporation, filer category, fiscal year end, addresses, phone, EIN, former names). Export to JSON, CSV or Excel, or pull it through the API on a schedule.
โจ Why teams choose this over other SEC scrapers
Copying accession numbers out of EDGAR tabs? Running a filings script that stops the day SEC changes a rule? Getting 16 fields per filing and no way to search inside the documents?
- ๐งพ 46 fields per filing, 40 filled on a typical row. The most used SEC actors of the Store return 16 and 19 fields per filing. Here every row also carries the filer's SIC industry, industry group, state of incorporation, filer category, fiscal year end, business and mailing addresses, phone, EIN and former names, plus the decoded 8-K items and the list of exhibits. Measured on the default run (Apple and Tesla, 100 filings, September 23, 2026): 40.4 fields filled per row.
- ๐ Three ways in, one form, no mode switch. Companies (tickers, CIKs and names mixed in one list), full-text keywords across every filing since 2001, or the latest filings of the form types you choose. Give companies and keywords together and the search runs inside those companies' filings only. The most used free SEC actor has no full-text search and asks you to pick a search type first.
- ๐ Every EDGAR form type. Type the form exactly as EDGAR names it:
10-K,8-K,4,D,S-1,DEF 14A,13F-HR,SC 13D,6-K,20-F,144, or leave the list empty for all of them. 100 form types come with a plain-words description on the row. The second most used SEC actor of the Store reads one form type, the leader offers a list of 16. - ๐ The exhibit you need, linked. With documents on, an 8-K row lists its EX-99.1 press release, investor presentation, graphics and XBRL files with type, size and direct URL. No more opening the filing index to find the one file that matters.
- ๐ท๏ธ 8-K items decoded.
2.02becomesResults of Operations and Financial Condition,5.02becomesDeparture or Election of Directors and Certain Officers. Form D exemption codes are decoded too (06CisRule 506(c)). Filter your feed on the event, not on a number. - ๐ธ Priced per filing delivered, below the other paid SEC actors of the Store. The current rate is on the Monetization tab of this page.
- ๐ No account, no API key, no setup. EDGAR is public. The Actor reads it the way SEC asks automated tools to, and runs from the prefilled form as is.
- โฑ๏ธ Fast enough to run every hour. 100 filings of two companies with their exhibits in 14 seconds. 40 Form D filings of the week in 5 seconds. 30 full-text hits with documents in 8 seconds.
- ๐งญ A watchlist shared fairly. Several companies split the cap one filing each in turn, newest first, so a filer with a long history never crowds out the others.
- โ Rows only, never error rows. Every row is a filing. A run that finds nothing says why on the run itself: unknown company, nothing in the period, or SEC unreachable.
๐ฏ What you can do with SEC EDGAR data
| Team | What they build |
|---|---|
| Equity research | A daily 8-K feed of 200 covered companies with the item codes decoded and the earnings press release linked on every row |
| Quant and data engineering | A filings table keyed on cik and accessionNumber, refreshed on a schedule, joined to price data by ticker |
| M&A and private equity | Weekly lists of 2.01 acquisitions, 5.02 executive changes and SC 13D activist stakes across a sector's tickers |
| Venture scouts and sales teams | This week's Form D private placements with the issuer's address, phone, state of incorporation and the filing document, before they reach the databases |
| Compliance and governance | Proxy statements (DEF 14A), late filing notices (NT 10-K) and auditor changes (4.01) for a peer group, with the official filing index linked |
| Thematic research | Every 10-K and 10-Q that mentions "supply chain", "tariffs" or "cybersecurity incident" this year, with the company profile beside each hit |
| Financial journalism | The latest S-1 registration statements and 424B4 prospectuses, with the exhibits list to reach the underwriting agreement |
| AI and LLM products | Filing metadata and direct document URLs to feed a retrieval pipeline, one JSON shape for every mode |
๐ฅ Input parameters
Type at least one company or one keyword, or leave both empty for the latest filings of the chosen form types. Everything else is optional.
| Field | Type | Default | What it does |
|---|---|---|---|
companies | list | AAPL, TSLA | Tickers, CIKs or company names, one per line. Each company's filings are listed newest first with its profile on every row. With keywords, the search runs inside these companies only. |
keywords | list | empty | Words or phrases to find inside filings and exhibits. Quotes keep a phrase together; AND, OR, NOT combine terms. One row per matching filing, with the document that matched. |
maxItems | integer | 100 | How many filings to save. No fixed limit; the full-text index answers up to 10,000 filings per query. |
๐ Filters
| Field | Type | Default | What it does |
|---|---|---|---|
formTypes | list | 10-K, 10-Q, 8-K | Form types to keep, as EDGAR names them. Amendments are separate types (10-K/A). Empty means every form type. |
dateFrom | string | empty | Earliest filing date, 2026-01-01. In latest-filings mode, empty means the last 7 days. |
dateTo | string | empty | Latest filing date, 2026-06-30. Empty means today. |
๐ Output
| Field | Type | Default | What it does |
|---|---|---|---|
includeDocuments | boolean | true | Lists the files of each filing (primary document, exhibits, graphics, XBRL) with type, size and direct link. One extra read per filing. |
โ๏ธ Advanced
| Field | Type | Default | What it does |
|---|---|---|---|
debugMode | boolean | false | Adds detailed lines to the run log. |
๐ Output data
One row per filing. A row from the default run (Apple, 8-K), documents trimmed to three:
{"id": "0000320193-26-000018","url": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000018/0000320193-26-000018-index.htm","accessionNumber": "0000320193-26-000018","form": "8-K","formDescription": "Current report of material events","filingDate": "2026-07-30","reportDate": "2026-07-30","acceptanceDateTime": "2026-07-30T20:30:28.000Z","act": "34","fileNumber": "001-36743","filmNumber": "261223821","items": ["2.02", "9.01"],"itemDescriptions": ["Results of Operations and Financial Condition", "Financial Statements and Exhibits"],"size": 417360,"isXBRL": true,"isInlineXBRL": true,"primaryDocument": "aapl-20260730.htm","primaryDocumentDescription": "8-K","documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000018/aapl-20260730.htm","fullTextUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000018/0000320193-26-000018.txt","documents": [{ "sequence": 1, "description": "8-K", "name": "aapl-20260730.htm", "type": "8-K", "size": 38350, "url": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000018/aapl-20260730.htm" },{ "sequence": 2, "description": "EX-99.1", "name": "a8-kex991q3202606272026.htm", "type": "EX-99.1", "size": 173484, "url": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000018/a8-kex991q3202606272026.htm" },{ "sequence": 7, "description": null, "name": "aapl-20260730_g1.jpg", "type": "GRAPHIC", "size": 1264, "url": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000018/aapl-20260730_g1.jpg" }],"documentsCount": 8,"cik": "0000320193","companyName": "Apple Inc.","ticker": "AAPL","tickers": ["AAPL"],"exchanges": ["Nasdaq"],"sic": "3571","sicDescription": "Electronic Computers","industry": "Technology","entityType": "operating","filerCategory": "Large accelerated filer","fiscalYearEnd": "09-26","stateOfIncorporation": "CA","ein": "942404110","phone": "(408) 996-1010","website": null,"businessAddress": { "street1": "ONE APPLE PARK WAY", "street2": null, "city": "CUPERTINO", "state": "CA", "zip": "95014", "country": null },"mailingAddress": { "street1": "ONE APPLE PARK WAY", "street2": null, "city": "CUPERTINO", "state": "CA", "zip": "95014", "country": null },"formerNames": [{ "name": "APPLE INC", "from": "2007-01-10T05:00:00.000Z", "to": "2019-08-05T04:00:00.000Z" },{ "name": "APPLE COMPUTER INC", "from": "1994-01-26T05:00:00.000Z", "to": "2007-01-04T05:00:00.000Z" }],"companyUrl": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000320193","keyword": null,"matchedDocument": null,"matchedDocumentType": null,"matchedDocumentUrl": null,"scrapedAt": "2026-09-23T09:20:59Z"}
A row from a keyword search ("artificial intelligence" in 10-K filings since June 2026) has the same shape, plus the search context:
{"id": "0001493152-26-027796","url": "https://www.sec.gov/Archives/edgar/data/1498148/000149315226027796/0001493152-26-027796-index.htm","form": "10-K","formDescription": "Annual report","filingDate": "2026-06-09","acceptanceDateTime": "2026-06-09T00:18:03.000Z","documentUrl": "https://www.sec.gov/Archives/edgar/data/1498148/000149315226027796/form10-k.htm","cik": "0001498148","companyName": "Artificial Intelligence Technology Solutions Inc.","ticker": "AITX","keyword": "\"artificial intelligence\"","matchedDocument": "form10-k.htm","matchedDocumentType": "10-K","matchedDocumentUrl": "https://www.sec.gov/Archives/edgar/data/1498148/000149315226027796/form10-k.htm"}
Unknown values are null, never empty strings. id and url are stable: the accession number and the permanent filing index page. acceptanceDateTime and scrapedAt are RFC 3339 timestamps in UTC; filingDate and reportDate are calendar dates as EDGAR reports them.
๐๏ธ Data fields
46 fields per row. documents[] entries carry 6 more each, businessAddress and mailingAddress 6 each, formerNames[] 3 each.
| Group | Fields |
|---|---|
| Identity (5) | id (accession number), url (filing index page, permanent), accessionNumber, form, formDescription (plain words, 100 forms known) |
| Filing (17) | filingDate, reportDate (period or event date), acceptanceDateTime, act (33 or 34), fileNumber, filmNumber, items (8-K item codes or Form D exemption codes), itemDescriptions, size (bytes of the full submission), isXBRL, isInlineXBRL, primaryDocument, primaryDocumentDescription, documentUrl (primary document), fullTextUrl (complete submission text), documents (with includeDocuments), documentsCount |
| Company (19) | cik (10 digits), companyName, ticker, tickers, exchanges, sic, sicDescription, industry (SEC industry office), entityType, filerCategory (large accelerated filer, smaller reporting company...), fiscalYearEnd (MM-DD), stateOfIncorporation, ein, phone, website, businessAddress, mailingAddress, formerNames, companyUrl (EDGAR company page) |
| Search context (4) | keyword (the phrase that matched, null outside keyword mode), matchedDocument, matchedDocumentType (10-K, EX-99.1...), matchedDocumentUrl |
| Meta (1) | scrapedAt |
documents[]: sequence, description, name, type (8-K, EX-99.1, GRAPHIC, EX-101.SCH, XML), size, url. The complete submission text file is not repeated in the list, it is fullTextUrl.
Company fields come from the filer's EDGAR profile, so rows found by keyword or in the latest feed carry them too. Funds and shell companies often have no ticker, SIC or EIN; those fields are null.
๐ Examples
Get the latest 10-K, 10-Q and 8-K filings of a watchlist
{"companies": ["AAPL", "MSFT", "NVDA", "AMZN"],"formTypes": ["10-K", "10-Q", "8-K"],"maxItems": 200}
Track 8-K events of the last quarter with the press release linked
{"companies": ["TSLA", "META", "GOOGL"],"formTypes": ["8-K"],"dateFrom": "2026-06-01","maxItems": 150,"includeDocuments": true}
Find every 10-K that mentions artificial intelligence this year
{"keywords": ["\"artificial intelligence\""],"formTypes": ["10-K"],"dateFrom": "2026-01-01","maxItems": 500,"includeDocuments": false}
Search a phrase inside the filings of specific companies
{"companies": ["Berkshire Hathaway", "MSFT", "1318605"],"keywords": ["\"supply chain\" AND tariffs"],"formTypes": ["10-K", "10-Q"],"dateFrom": "2025-01-01","maxItems": 100}
Pull this week's Form D private placements
{"formTypes": ["D"],"maxItems": 500,"includeDocuments": false}
List insider transaction filings and institutional holdings reports
{"companies": ["NVDA", "Berkshire Hathaway"],"formTypes": ["4", "13F-HR", "SC 13G"],"dateFrom": "2026-01-01","maxItems": 300}
Get the S-1 registration statements and final prospectuses of the month
{"formTypes": ["S-1", "S-1/A", "424B4"],"dateFrom": "2026-09-01","dateTo": "2026-09-30","maxItems": 300}
๐ค Copy to your AI assistant
Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:
You have access to the SEC Scraper on Apify: silentflow/sec-scraperInput schema:- companies (array of strings): tickers, CIKs or company names. Default ["AAPL", "TSLA"].- keywords (array of strings): full-text phrases searched inside filings and exhibits. Quotes keep a phrase, AND/OR/NOT combine terms.- maxItems (integer, default 100): number of filings to save.- formTypes (array of strings, default ["10-K", "10-Q", "8-K"]): EDGAR form types to keep; empty = all.- dateFrom, dateTo (string, YYYY-MM-DD): filing date bounds. Latest-filings mode (no companies, no keywords) defaults to the last 7 days.- includeDocuments (boolean, default true): list the files of each filing with type, size and URL.- debugMode (boolean, default false).Modes: companies only = filings of those companies; keywords only = full-text search; both = keywords inside those companies; neither = latest filings of formTypes.Output per filing (46 fields):- id, url, accessionNumber, form, formDescription (strings)- filingDate, reportDate (YYYY-MM-DD), acceptanceDateTime (RFC 3339), act, fileNumber, filmNumber (strings)- items, itemDescriptions (arrays of strings), size (integer), isXBRL, isInlineXBRL (booleans)- primaryDocument, primaryDocumentDescription, documentUrl, fullTextUrl (strings)- documents (array of {sequence, description, name, type, size, url}), documentsCount (integer)- cik, companyName, ticker (strings), tickers, exchanges (arrays), sic, sicDescription, industry, entityType, filerCategory, fiscalYearEnd, stateOfIncorporation, ein, phone, website (strings)- businessAddress, mailingAddress ({street1, street2, city, state, zip, country}), formerNames (array of {name, from, to}), companyUrl (string)- keyword, matchedDocument, matchedDocumentType, matchedDocumentUrl (strings, null outside keyword mode)- scrapedAt (RFC 3339)Unknown values are null. Use apify-client for Python or JavaScript.
๐ป Integrations
Build an 8-K event feed for a watchlist in Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("silentflow/sec-scraper").call(run_input={"companies": ["AAPL", "MSFT", "NVDA", "AMZN", "TSLA"],"formTypes": ["8-K"],"dateFrom": "2026-09-01","maxItems": 200,})for filing in client.dataset(run["defaultDatasetId"]).iterate_items():if "2.02" in (filing["items"] or []):press = next((d["url"] for d in filing["documents"] or [] if d["type"] == "EX-99.1"), filing["documentUrl"])print(f'{filing["filingDate"]} {filing["ticker"]:6} earnings release: {press}')
Turn this week's Form D filings into a lead list in Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('silentflow/sec-scraper').call({formTypes: ['D'],maxItems: 500,includeDocuments: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const leads = items.filter((f) => f.businessAddress?.state && f.itemDescriptions?.includes('Rule 506(c)')).map((f) => ({company: f.companyName,state: f.businessAddress.state,phone: f.phone,incorporated: f.stateOfIncorporation,filing: f.matchedDocumentUrl,}));console.table(leads);
Refresh a filings table every morning with the Apify CLI and a schedule
apify call silentflow/sec-scraper --input '{"companies": ["AAPL", "MSFT"], "formTypes": ["10-K", "10-Q", "8-K"], "maxItems": 50}'apify runs waitapify datasets get-items --format csv > filings.csv
Then create a schedule on the Actor page (daily after 6 pm New York time catches the whole day's filings) and add a webhook to push each finished run into your warehouse, Slack or Google Sheets.
๐ Performance
Measured on September 23, 2026, default settings unless stated.
| Run | Rows | Time |
|---|---|---|
| Two companies (AAPL, TSLA), 10-K, 10-Q, 8-K, documents on | 100 | 14 s |
Full-text "artificial intelligence" in 10-K since June, documents on | 30 | 8 s |
| Latest Form D filings of the week, documents off | 40 | 5 s |
"supply chain" inside three companies' 10-K and 10-Q | 25 | 2 s |
A company's list of filings is read in one call; the documents of a filing take one more each. Full-text searches read 100 hits per page. Runs use a fraction of the default 256 MB memory.
๐พ Data export
Download the dataset from the Output tab as JSON, CSV, Excel, XML or HTML, or pull it programmatically:
https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv&token=YOUR_TOKEN
The overview view shows company, form, filing date, decoded items, ticker and the two links; the companies view shows the filer columns (SIC, industry group, state, filer category, fiscal year end). Nested fields (documents, addresses, formerNames) flatten into columns in CSV and Excel.
๐ก Tips for best results
- Use tickers or CIKs for listed companies, names for the rest. A ticker resolves through SEC's own list; a name goes through EDGAR's filer index and the best match wins, so
Berkshire Hathawayfinds the parent, not its energy subsidiary. Check the log line that shows which filer was matched. - Name amendments explicitly.
10-Kdoes not include10-K/A; add both when you want originals and amendments. LeaveformTypesempty to see everything a company files, including Form 4 and 144. - Quote phrases in keywords.
"supply chain"finds the phrase;supply chainfinds either word. Combine withAND,OR,NOT, and narrow withformTypesand dates: the index stops at 10,000 filings per query. - Keep documents on for 8-K and 10-K, off for volume. The exhibits list is where the press release (EX-99.1) and the subsidiaries list (EX-21) live. For thousands of Form D or Form 4 rows, turn it off: the primary document link stays on every row.
- Give the cap what you need.
maxItemscounts filings across all companies, shared one each in turn. For a 20-company watchlist and the last three 8-Ks of each, setmaxItemsto 60 anddateFromto the quarter. - Schedule after the close. EDGAR accepts filings until 10 pm New York time; a daily run at 11 pm with
dateFromset to today catches the full day.
โ FAQ
Do I need an SEC API key or an account? No. EDGAR is a public system. The Actor identifies itself to SEC as its access policy asks and needs nothing from you.
Which companies can I look up? Any EDGAR filer: listed companies by ticker, any filer by CIK, and any filer by name (funds, private companies filing Form D, foreign issuers). Ticker lookups cover the companies SEC lists with a ticker; use the CIK for delisted or OTC names.
How fresh is the data? A filing appears in its company's list within minutes of acceptance by SEC. The full-text index used by keyword and latest-filings runs follows within about half an hour. Nothing is cached: every run reads EDGAR live.
What exactly does a keyword search cover?
The text of filings and their exhibits from 2001 onwards, the same index as EDGAR's full-text search. A filing with several matching documents gives one row, with the best matching document named in matchedDocument. Up to 10,000 filings per query; narrow the dates or forms for more.
Can I combine companies and keywords? Yes. With both, the keywords are searched inside the filings of those companies only, filtered by the same form types and dates.
What does the latest-filings mode return?
Without companies or keywords, the newest filings of the chosen form types, newest first, over the last 7 days unless you set dates. Set formTypes to D for private placements, S-1 for IPO registrations, 8-K for every current report of the day.
Is there a limit on the number of filings?
No fixed limit from the Actor. A company's history is read page by page as far as maxItems and the dates ask. The full-text index answers up to 10,000 filings per query.
Does it parse the financial statements or Form 4 transactions? Not in this version. Each row gives the filing and its documents, including the XBRL files and the Form 4 XML with direct links, so a downstream parser has everything it needs.
Why are some company fields empty?
Funds, trusts and shell companies often have no ticker, exchange, SIC code or EIN on EDGAR; those fields are null. website is rarely filled by SEC.
Are the URLs permanent?
Yes. url, documentUrl, fullTextUrl and every documents[].url point to the SEC Archives, which keep filings indefinitely.
Can I run it on a schedule with only new filings?
Yes. Schedule the Actor and set dateFrom to the day (or the week) you want; rows are deduplicated within a run by accession number, and id lets you deduplicate across runs in your own store.
What is a CIK?
The Central Index Key, SEC's permanent identifier of a filer. It is on every row as cik, 10 digits, and works as an input.
โ๏ธ Legal
This Actor extracts publicly available data from SEC EDGAR, a U.S. government system that publishes corporate disclosures for public use. It does not bypass any login, paywall or CAPTCHA, and it follows SEC's published fair access guidelines for automated tools. Users are responsible for complying with SEC.gov's terms and with applicable data protection laws (GDPR and CCPA where relevant). Company addresses and phone numbers in the output are those the filers disclose publicly; handle any personal data the documents themselves contain accordingly. The data is informational; verify it against the linked filing for regulated use cases.
๐ Related scrapers
- Company Data Scraper: emails, phones and tech stack of any company website
- Northdata Scraper: German and European company registry data
- BuiltWith Scraper: technology profiles and top sites
- ImportYeti Scraper: US customs records and suppliers
- Google News Scraper: news coverage of any company or topic
๐ฌ Support
Need something this scraper does not do yet? We ship features fast.
- Feature requests go straight to our backlog
- Enterprise needs? We do custom integrations and high-volume plans
- Pricing questions? Check the Monetization tab on the actor page
Response time: usually under 24 hours.
Check out our other scrapers: silentflow on Apify