· 12 min read
SEC EDGAR Filings Scraper: 25 Data Fields per Record (2026)
Each record carries 25 output fields, including direct URLs to the filing index, primary document, and the official EDGAR detail page. It is designed for analysts who need structured access to public company disclosures; users requiring deep parsing of InfoTable XML should use the SEC EDGAR 13F Institutional Holdings Scraper instead.
Try it: open SEC EDGAR Filings Scraper on Apify, sign in on the free plan and run the prefilled example.
Can you try SEC EDGAR Filings Scraper before paying?
Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.002 per result, that covers up to 2,500 results of SEC EDGAR Filings Scraper a month, before run-start charges and platform usage.
The example request further down caps maxItems at 500, so a first run returns at most 500 results and costs at most $1.00 in result charges. That is enough to see the real shape of the data before deciding anything.
SEC EDGAR Filings Scraper was last updated on 2026-08-10. It is one of 1,725 Actors CrawlerBros publishes on Apify, which together have 674,790 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.
What does it cost to run SEC EDGAR Filings Scraper?
Each result costs $0.002 on Apify's free plan, which is $2.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.
| Apify plan | Per result | Per 1,000 results |
|---|---|---|
| FREE | $0.002 | $2.00 |
| BRONZE | $0.00167 | $1.67 |
| SILVER | $0.00133 | $1.33 |
| GOLD | $0.001 | $1.00 |
| PLATINUM | $0.001 | $1.00 |
| DIAMOND | $0.001 | $1.00 |
The number of companies and selected filingTypes have the largest effect on your bill, as these determine the total number of filings returned. To control costs, use the maxItems and maxItemsPerCompany controls to cap your overall output. The example input limits a first run to at most 500 results, costing up to $1.00 in result charges.
How do you run SEC EDGAR Filings Scraper from the API?
The schema marks 1 of its 9 controls as required: companies. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.
Call the synchronous endpoint to start a run and receive dataset items in one request:
curl -X POST "https://api.apify.com/v2/acts/crawlerbros~sec-edgar-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies":["AAPL","MSFT"],"filingTypes":["10-K","10-Q","8-K"],"maxItemsPerCompany":50,"maxItems":500,"fetchPrimaryDocText":false,"userAgentEmail":"apify-actor@noreply.apify.com"}'
The same run from Python, using the official client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"companies": [
"AAPL",
"MSFT"
],
"filingTypes": [
"10-K",
"10-Q",
"8-K"
],
"maxItemsPerCompany": 50,
"maxItems": 500,
"fetchPrimaryDocText": False,
"userAgentEmail": "apify-actor@noreply.apify.com"
}
run = client.actor("crawlerbros~sec-edgar-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
And from Node.js:
import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
const input = {
"companies": [
"AAPL",
"MSFT"
],
"filingTypes": [
"10-K",
"10-Q",
"8-K"
],
"maxItemsPerCompany": 50,
"maxItems": 500,
"fetchPrimaryDocText": false,
"userAgentEmail": "apify-actor@noreply.apify.com"
}
const run = await client.actor('crawlerbros~sec-edgar-scraper').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.
Which SEC EDGAR Filings Scraper inputs matter, and which can you skip?
The companies and filingTypes controls are the primary drivers of the result set; use these to define your specific portfolio or disclosure needs. The userAgentEmail can typically be left at its default value unless you are performing very high-volume scraping.
companies(array): Tickers (e.g.AAPL,MSFT,GOOGL) or 10-digit CIKs (e.g.0000320193). The actor resolves tickers to CIKs automatically. Default:["AAPL","MSFT"].filingTypes(array): Which filing forms to include. Empty = all types. Default:["10-K","10-Q","8-K"].dateRangeFrom(string): Drop filings filed before this date.dateRangeTo(string): Drop filings filed after this date.maxItemsPerCompany(integer): Hard cap per company. Default:50.maxItems(integer): Global hard cap across all companies. Default:500.fetchPrimaryDocText(boolean): When true, also fetch the filing's primary document (HTML/TXT) and emit aprimaryDocTextfield. Adds ~1 extra HTTP request per filing. Useful for keyword searching across filing text. Default:false.containsKeyword(string): Only emit filings whose primary-document text contains this substring (case-insensitive). ImpliesfetchPrimaryDocText=true.userAgentEmail(string): SEC requires a contact email in every API request's User-Agent. Defaults to a generic Apify-actor address; override with your own email if scraping at high volume. Default:"apify-actor@noreply.apify.com".
What does SEC EDGAR Filings Scraper return?
The returned records are suitable for building automated alerts for insider trades or for tracking material event disclosures via 8-K filings. They provide detailed metadata and direct links but do not parse the full tabular data from 13F holdings.
cik(10-digit padded),cikInt,companyName,ticker,tickers[],exchange,sic,sicDescriptionfilingType- e.g.10-K,10-Q,8-K,4accessionNumber- SEC's unique filing IDfiledAt- date filedreportingPeriod- fiscal period the filing coversacceptedAt- exact timestamp of acceptanceprimaryDocFilename,primaryDocDescriptionprimaryDocUrl- direct link to the actual filing documentfilingIndexUrl- search results page on EDGARfilingDetailUrl- filing's detail page on EDGARsizeBytes,isXbrl,isInlineXbrlprimaryDocText(only whenfetchPrimaryDocText=true) - plain-text content of the filing, capped at 100k charsprimaryDocTextLengthrecordType: "filing",scrapedAt
These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.
How do you build the workflow end to end?
Open SEC EDGAR Filings Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.
- Populate the companies array with a list of stock tickers or 10-digit CIK numbers for your target entities.
- Select the specific filing types, such as 10-K or Form 4, from the filingTypes menu to narrow the scope.
- Set a value for dateRangeFrom in YYYY-MM-DD format to retrieve filings from a specific historical point onward.
- Adjust maxItemsPerCompany to control how many filings are collected for each company, preventing a single entity from dominating the output.
- Enable fetchPrimaryDocText if your analysis requires the raw narrative sections of the filings for keyword searches.
- Use the containsKeyword field to filter filings by a specific term found within their primary document text.
- If running at high volume, override the default userAgentEmail with your own contact address as required by the SEC.
- Execute the Actor and review the dataset for the primaryDocUrl field to confirm direct access to the original SEC documents.
How do you apply it? Three worked playbooks
These are SEC EDGAR Filings Scraper's own documented use cases, each worked through as an operating pattern rather than a description.
Use case 1: Equity research
Outcome: Pull every 10-K and 10-Q for a portfolio
Configure: Set companies to ['AAPL', 'MSFT'], filingTypes to ['10-K', '10-Q'], and maxItemsPerCompany to 20.
Working method: Start by pulling annual and quarterly reports for your core portfolio. Examine the reportingPeriod and filedAt dates to construct a chronological view of disclosures. Use the primaryDocUrl to access full documents for deeper analysis.
Deliverable: A structured dataset of annual and quarterly financial reports, with links to the original filings, ready for fundamental analysis.
Stop condition: The retrieved filings for a company extend beyond your required historical depth, indicating an overcollection of data.
Use case 2: Insider trade alerts
Outcome: Daily run on Form 4 filings for executives at watched companies
Configure: Set filingTypes to ['4'], dateRangeFrom to the current date, and userAgentEmail to your operational email address.
Working method: Schedule a daily run to capture new Form 4 filings. Filter the output by the filedAt timestamp to identify transactions filed in the last 24 hours. Cross-reference companyName and accessionNumber to track specific insider activities.
Deliverable: A daily report detailing new Form 4 insider transactions, including company and filer information, with direct links to SEC filings.
Stop condition: The filedAt date in the output shows records older than the last successful daily run, implying missed data or a scheduling issue.
Use case 3: Hedge fund replication
Outcome: 13F-HR filings to mirror prominent fund managers' positions
Configure: Set companies to ['0001067983'] (a sample CIK), filingTypes to ['13F-HR'], and maxItemsPerCompany to 5.
Working method: Identify the CIK for the fund manager you wish to track. Run the Actor and extract the filingIndexUrl to access the full holdings list for the most recent reporting period. Monitor for new accessionNumber values to identify updated disclosures.
Deliverable: A dataset of 13F-HR filing metadata for specified fund managers, including links to their holdings reports.
Stop condition: The accessionNumber in the output is identical to a previously processed filing, indicating no new reports were found.
What breaks, and how do you design around it?
The primaryDocText field is capped at 100,000 characters per filing. For annual reports or other lengthy documents, this means the text in your dataset may be truncated. If you need the complete text, download the original HTML directly using the provided primaryDocUrl.
When should you not use SEC EDGAR Filings Scraper?
Do not use this Actor if you need to extract specific line-item data from 13F hedge fund holdings, as it only returns filing metadata and links. Instead, use the SEC EDGAR 13F Institutional Holdings Scraper, which is designed to parse the actual XML tables. If your goal is specifically to track insider trading and you require pre-calculated transaction values and share counts, consider the OpenInsider Scraper, which provides a more refined dataset than raw Form 4 filings. This Actor is strictly for US-listed public entities and companies filing with the SEC; it cannot retrieve data for private companies or entities exclusively registered in foreign jurisdictions. For European corporate records, you should use a source like the Poland KRS Company Registry Scraper.
What should you check before trusting the output?
- Verify that the cik field is consistently a 10-digit padded string, including leading zeros, for accurate company identification.
- Check for the presence of the primaryDocText field when fetchPrimaryDocText is enabled; this field is capped at 100,000 characters.
- Monitor the acceptedAt timestamp to ensure the data latency meets your requirements for timely alerts.
- Validate that the filingType field in the output matches the types specified in your input filters.
- If the result count for any single company reaches maxItemsPerCompany, investigate whether historical data was truncated.
None of this proves a record is correct. It gives a scheduled SEC EDGAR Filings Scraper run defined points where it should stop instead of quietly passing bad data downstream.
Frequently asked questions
What is the cost for 1,000 SEC filing records?
On the free plan, 1,000 results cost $2.00 in result charges. Apify also bills platform usage each run consumes on top of these charges. Apify's free plan includes $5.00 of monthly usage, which covers up to 2,500 results of this Actor before run-start charges.
Can I search for specific keywords inside the 10-K or 8-K text?
Yes. When fetchPrimaryDocText is true and a string is entered in the containsKeyword field, the Actor will filter results to only those filings where the primary document text contains your specific term.
Does this scraper provide real-time SEC data?
Yes. The SEC processes filings within minutes of submission. This makes the Actor suitable for monitoring recent 8-K event disclosures or Form 4 insider transaction reports.
How do I avoid getting blocked by the SEC?
The SEC has a soft rate limit of 10 requests per second. The Actor honors SEC's 10-requests-per-second rate limit. For high-volume runs, the SEC requires a contact email in every API request's User-Agent; provide your own in userAgentEmail.
What is the difference between a CIK and an accession number in the output?
The cik is a 10-digit padded number that identifies the company. The accessionNumber identifies a specific filing. Each filing has a unique accession number.
Where to go next
When you are ready to run it, open SEC EDGAR Filings Scraper on Apify; the free plan covers up to 2,500 results a month.
Other Actors we maintain for related data:
- SEC EDGAR 13F Institutional Holdings Scraper: Browse institutional 13F holdings data from SEC EDGAR - track what top hedge funds and mutual funds own.
- OpenInsider Scraper: Scrape SEC Form 4 insider trading data from OpenInsider.com - browse recent purchases and sales, filter by ticker, date range, transaction type, and value.
- Poland KRS Company Registry Scraper: Look up companies, foundations, and associations in Poland's KRS (Krajowy Rejestr Sadowy) by KRS number.
- Hawaii Business Express Scraper: Search Hawaii's free public business registry (DCCA Business Registration Division) by name, exact file number, or record ID.
- ImportYeti Trade Intelligence Scraper: Scrape US import/export trade data from ImportYeti: companies, suppliers, shipments, top trading partners, trademarks, countries, and shipment recency.
Resources
Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-25.
Actor last updated by its maintainers on 2026-08-10.
Run outcome figures cover the 30 day public window ending 2026-09-25.
Featured actors
SEC EDGAR Filings Scraper
Scrape SEC EDGAR filings (10-K, 10-Q, 8-K, Form 4 insider trades, 13F holdings) for any US public company. HTTP-only via the SEC's public API. No login, no proxy, no auth.
Run on Apify ↗