SEC EDGAR Filings Scraper: 10-K, 10-Q, 8-K, Form 4
Pricing
from $0.54 / 1,000 filing returneds
SEC EDGAR Filings Scraper: 10-K, 10-Q, 8-K, Form 4
Get SEC EDGAR filings by ticker, CIK, company name or full-text keyword search, one row per filing: form, dates, accession number, SIC and document links. Adds Form 4 insider transactions, optional document text and only-new runs. No login, no key.
Pricing
from $0.54 / 1,000 filing returneds
Rating
0.0
(0)
Developer
Pradio Actors
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
What does SEC EDGAR Filings Scraper do?
SEC EDGAR Filings Scraper returns one row per SEC filing, 10-K, 10-Q, 8-K, Form 4 or any other form, for every company you name. Each row carries the form type, filed and report dates, accession number, SIC code, exchanges and a link to the primary document on sec.gov. Feed it tickers, CIK numbers, company names, EDGAR links or a full-text search phrase and press Start. A company that resolves to nothing costs nothing, and its row says why.
Each data row carries 41 fields. The table below lists 45, because four of them appear only on status rows. Filters narrow a run by form type and filing date. Form 3, 4 and 5 rows carry the insider named on the form and every transaction line. Extraction adds each 8-K's item codes, an excerpt, guidance sentences and a sentiment score. Document text adds the primary document as plain text. A scheduled run can return only the filings that are new since the last one. In a measured run over 498 companies the Actor had never seen, 99.2% resolved and produced 561,568 filing rows. Every returned row costs $0.001, a miss is free, and no login or key is needed.
Who uses SEC EDGAR Filings Scraper
| Buyer | What they run it for |
|---|---|
| Investors and analysts | Every new filing for the tickers they follow; 8-K rows can carry the release's excerpt, guidance sentences and a sentiment score. |
| Compliance and legal teams | A company's filing history and its primary documents as structured rows. |
| Data engineers | A list of tickers or CIKs turned into a filings dataset, exported or fed downstream. |
| Researchers | Disclosure and insider filings across companies, filterable by form type and filing date. |
Features
- Ticker, CIK and company-name lookup: names and tickers resolve through the SEC's own company ticker file. No login, no key, no browser.
- EDGAR link input: paste a submissions JSON URL, an Archives path or a browse link straight from sec.gov.
- Full-text keyword search:
querysearches the text of every EDGAR filing since 2001, the same search as the SEC's own full-text search page. Form type, filing dates and the companies you name narrow it. - Form 4 insider transactions: every Form 3, 4 and 5 row carries the reporting insider as named on the form and their relationship to the company. Each transaction line gives the date, code, shares, price, acquired or disposed, and shares owned after.
- Only new since last run:
onlyNewremembers which filings a search already returned, so a scheduled run delivers and bills only the new ones. - Document text:
includeDocumentTextadds each filing's primary document as plain text, cut atmaxDocumentChars. - Form-type filter:
formTypesreturns only the EDGAR forms you name, and amendments ride along, so8-Kalso returns8-K/A. - Filing-date window:
filedFromandfiledTobound the date a filing was submitted, in YYYY-MM-DD. - 8-K earnings extraction:
extractEarningsreads each 8-K row's primary document and adds the SEC item codes and names, a short excerpt, forward-looking guidance sentences and a sentiment score. - Recent filings and the filing archive: the recent feed per company, with older filing files read when your row cap calls for them.
- Caps that bound the bill:
maxItemsstops fetching and emitting at your limit, andmaxCompaniesPerSearchQuerybounds how many companies one name resolves to. - Proxy support: an optional Apify proxy, honoured as a single exit for the whole run.
- SEC fair access kept: a declared User-Agent and no more than 600 requests a minute, the SEC's published conditions for scripted access.
What you can count on
- You pay only for rows whose status is
ok. An entry the run cannot use is pushed as an unchargedITEM_STATUSrow that names it and says why. That covers a link off sec.gov, a ticker or name that resolves to nothing, a CIK with no submissions on file and a fetch that fails. - Every row is charged only after it is written to your dataset. A row you cannot see is never billed.
- A run that finds nothing returns one
PROFILE_NOT_FOUNDrow that says so, never an empty dataset. - A spending limit stops the run cleanly with a
STOPPED_EARLYrow saying how many rows were returned and how many were not. - Every run leaves a
RUN_SUMMARYrecord in its key-value store with the counts of rows fetched, pushed, charged, free and dropped as duplicates, so you can tell a short answer from a run that went wrong. - If the source changes what it answers, the run fails with the error in the log. It never returns rows full of nulls and calls it success.
- No value is invented: a field the source does not publish is null, and this page says which.
Why this one
- The most-used alternative on this platform (21 users in the last 30 days) was run on the same input,
AAPL, on 2026-09-19. It stopped at its own cap of 20 filing rows, and this one filled the cap of 100 it was given, so the two counts show the caps, not coverage. - Measured over 498 companies it had never seen, 99.2% of the lookups resolved into 561,568 filing rows. The 4 that missed are free status rows that say why.
- A returned filing row costs $0.001 and a run starts at $0.00005; status rows and dropped duplicates are free.
- Every row carries the sec.gov links, so the filing itself is one click away.
What data does SEC EDGAR Filings Scraper return?
One row per filing. This is a real row from a run over AAPL with extractEarnings on, an 8-K/A amendment Apple filed on 2026-09-01: the five fields at the bottom are what extraction adds. This filing reports executive pay and makes no forecast, so guidance_sentences is null.
{"status": "ok","company_name": "Apple Inc.","accession_number": "0001140361-26-035325","cik": "0000320193","ticker": "AAPL","form_type": "8-K/A","filed_date": "2026-09-01","report_date": "2026-04-17","acceptance_date_time": "2026-09-01T20:30:35.000Z","report_year": 2026,"fiscal_quarter": 3,"sic": "3571","sic_description": "Electronic Computers","state_of_incorporation": "CA","fiscal_year_end": "0926","exchanges": ["Nasdaq"],"primary_document": "ef20081427_8ka.htm","primary_doc_description": "8-K/A","document_url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126035325/ef20081427_8ka.htm","filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126035325/0001140361-26-035325-index.htm","index_url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126035325/index.json","sec_viewer_url": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=320193&type=8-K%2FA&dateb=&owner=include&count=40","size_bytes": 241262,"is_xbrl": true,"is_inline_xbrl": true,"file_number": "001-36743","film_number": "261351260","act_code": "34","entity_type": "operating","ein": "942404110","addresses": {"mailing": {"street1": "ONE APPLE PARK WAY","street2": null,"city": "CUPERTINO","stateOrCountry": "CA","zipCode": "95014","stateOrCountryDescription": "CA","isForeignLocation": 0,"foreignStateTerritory": null,"country": null,"countryCode": null},"business": {"street1": "ONE APPLE PARK WAY","street2": null,"city": "CUPERTINO","stateOrCountry": "CA","zipCode": "95014","stateOrCountryDescription": "CA","isForeignLocation": null,"foreignStateTerritory": null,"country": null,"countryCode": null}},"item_codes": ["5.02"],"item_names": ["Departure of Directors or Certain Officers; Election of Directors; Appointment of Certain Officers"],"excerpt": "Item 5.02 Departure of Directors or Certain Officers; Election of Directors; Appointment of Certain Officers; Compensatory Arrangements of Certain Officers . Apple Inc. (“Apple”) previously announced its Chief Executive Officer transition plan in its Current Report on Form 8-K filed on April 20, 2026 (the “Original Form 8-K”) . This Amendment to the Original Form 8-K (the “Form 8-K/A”) is being filed to disclose John Ternus’ new compensation arrangement in connection with his appointment to the role of CEO, and Tim Cook’s new compensation arrangement in connection with his appointment to the role of Executive Chair of Apple’s Board of Directors (the “Board”), in each case effective as of September 1, 2026 (the “Transition Date”). Other than as set forth in this Form 8-K/A, all information in the Original Form 8-K remains unchanged. Mr. Ternus’ annual salary was increased to $3 million on the Transition Date. The People and Compensation Committee of the Board also granted a prorated restricted stock unit (“RSU”) award for Mr. Ternus’ period of service as CEO in fiscal 2026 on the Transition Date. The prorated RSU award has a target value of $2.5 million. The People and Compensation","guidance_sentences": null,"sentiment": {"positive": 2,"negative": 2,"net": 0,"label": "neutral"},"insider_name": null,"insider_relationship": null,"transactions": null,"document_text": null,"row_type": "ROW"}
Every field, what it means and where on the SEC's submissions API it is read from:
| Field | What it is |
|---|---|
company_name | The company's registered name, from name in the submissions data. |
accession_number | The filing's accession number, the SEC's unique identifier for the submission, from the accessionNumber column of the filings feed. |
cik | The company's Central Index Key, the SEC's numeric filer identifier. |
ticker | The company's first listed stock ticker, from tickers; null when the filer has none. |
form_type | The SEC form code the filing was submitted as, such as 10-K, 8-K or 4, from form. |
filed_date | The date the filing was submitted, from filingDate. |
report_date | The period end the filing reports on, from reportDate; null where the form carries none. |
acceptance_date_time | When the SEC accepted the filing, from acceptanceDateTime. |
report_year | The calendar year of the filing's report date. |
fiscal_quarter | Which of the company's fiscal quarters the report date falls in, computed from reportDate and the company's fiscalYearEnd; null when either is missing. |
sic | The company's Standard Industrial Classification code, from sic. |
sic_description | The industry label for the SIC code, from sicDescription. |
state_of_incorporation | The state or country code where the company is incorporated, from stateOfIncorporation; null where the filer declares none. |
fiscal_year_end | The month and day the company's fiscal year ends, in MMDD, from fiscalYearEnd. |
exchanges | The stock exchanges the company lists on, from exchanges. |
primary_document | The file name of the filing's main document, from primaryDocument. |
primary_doc_description | The SEC's short label for the main document, from primaryDocDescription. |
document_url | A link to the filing's primary document on sec.gov, built from the accession number and primaryDocument. |
filing_url | A link to the filing's index page on sec.gov, which lists every file in the submission. |
index_url | A link to the filing's machine-readable index.json on sec.gov. |
sec_viewer_url | A link to this company's filings of the same form type in the SEC's browse view. |
size_bytes | The filing's size in bytes as the feed reports it, from size. |
is_xbrl | Whether the filing carries XBRL data, from isXBRL. |
is_inline_xbrl | Whether the filing carries inline XBRL, from isInlineXBRL. |
file_number | The SEC file number assigned to the filing, from fileNumber; null where EDGAR carries none, as on insider filings. |
film_number | The SEC film number for the filing, from filmNumber; null where EDGAR carries none, as on insider filings. |
act_code | The SEC's code for the Act of Congress the filing references, from act; null where EDGAR carries none, as on insider filings. |
entity_type | The SEC's category for the filer, such as operating, from entityType. |
ein | The company's Employer Identification Number, from ein in the submissions data. |
addresses | The company's mailing and business addresses as an object, from addresses in the submissions data. |
item_codes | The SEC item codes an 8-K reports under, such as 2.02. With extractEarnings on they come from the feed's items column, or from the Item headings in the primary document when the feed carries none; null on other forms and whenever the option is off. |
item_names | The Regulation S-K name of each item code, in the same order; null when the row carries no item codes. |
excerpt | A short excerpt of the 8-K primary document text, cleaned of markup and cover-page preamble. Never the full document: document_url always links it. Null unless extractEarnings read the document. |
guidance_sentences | Up to eight sentences from the 8-K primary document that use forward-looking words (guidance, outlook, expects, forecast, full year, next quarter and the like). Sentences about pay, bonuses or equity awards are left out even when they name a future year. Matching is by words, so read them before relying on them. Null unless extractEarnings read the document and such sentences exist. |
sentiment | A light positive/negative word-count score over the 8-K document text: {positive, negative, net, label}; null unless extractEarnings read it, and null when the text carries neither kind of word. |
insider_name | On a Form 3, 4 or 5 row: the reporting insider as named on the form, several joined with a semicolon. Null on other forms and when includeInsiderTransactions is off. |
insider_relationship | On a Form 3, 4 or 5 row: the relationship boxes the form ticks, such as Director or Officer (Chief Financial Officer). |
transactions | On a Form 3, 4 or 5 row: each line of the form's tables, with kind (transaction or holding), security_title, derivative, date, code, shares, price_per_share, acquired_disposed (A or D), shares_owned_after and direct_or_indirect (D or I). |
document_text | The filing's primary document as plain text, markup removed, cut at maxDocumentChars. Null unless includeDocumentText is on. |
status | ok on a data row; on an ITEM_STATUS row it is the miss verdict (bad_url, bad_input, not_found, fetch_failed). |
row_type | ROW on a data row; ITEM_STATUS on a per-entry miss, PROFILE_NOT_FOUND when the run found nothing, STOPPED_EARLY when the charge limit ended the run. |
reason | Present only on a status row: why the run returned no rows, or why it stopped early. |
rowsFetched | Present only on a status row: how many filing rows the run found before duplicates were dropped and maxItems was applied. |
rowsReturned | Present only on a status row: how many data rows are in the dataset. |
rowsRemaining | Present only on a status row: how many fetched rows were not returned. |
Two groups of fields are null on every row until you switch them on: document_text with includeDocumentText, and the five extraction fields with extractEarnings. Three other fields, file_number, film_number and act_code, are always null on Form 3, 4 and 5 rows. EDGAR publishes no file number, film number or Act for insider filings. On other form types they fill. The three insider fields fill only on Form 3, 4 and 5 rows. With extractEarnings on, the five extraction fields fill only on 8-K rows. item_codes and item_names can fill from the feed itself. excerpt, guidance_sentences and sentiment fill only when the document produced readable text. An 8-K whose document is data rather than prose, such as an XBRL instance, leaves the extraction fields null and unbilled. The dataset's Overview view leads with the columns you are likely to scan first, and the All fields view carries every field.
How much does it cost?
Three charged events, and nothing else:
| Charged event | Price |
|---|---|
filing-returned, one filing row written to your dataset | $0.001 per row |
earnings-extracted, one 8-K row whose primary document was read and produced text | $0.001 per row |
apify-actor-start, billed by Apify when a run starts: one event per GB of run memory, minimum one event. The default memory is under 1 GB, so a run at the default pays one. | $0.00005 per event |
A filing row is billed only after it is written to your dataset. An extraction is billed only when the 8-K's document produced text. A document that would not read, a row that is not an 8-K, a status row and a dropped duplicate all stay free. On Apify's paid plans the per-row price steps down by tier: Bronze, Silver, Gold and above.
| Filing rows returned | Filing cost | One run, with the start charge |
|---|---|---|
| 100 | $0.10 | $0.10005 |
| 1,000 | $1.00 | $1.00005 |
| 10,000 | $10.00 | $10.00005 |
With extractEarnings on, every extracted 8-K adds one earnings-extracted event on top of its filing row:
| What a run returns | What it bills |
|---|---|
| 100 filing rows, extraction off | 100 filing-returned ($0.10) + one start ($0.00005) |
| 100 filing rows, every one an 8-K whose document produced text | 100 filing-returned ($0.10) + 100 earnings-extracted ($0.10) + one start ($0.00005) |
| N filing rows, K of them extracted 8-Ks | N filing-returned + K earnings-extracted + one start |
A document that produced no text is not billed, so only the rows that gained the five fields cost the extra event.
The insider fields on Form 3, 4 and 5 rows and document_text add no event: a filing row costs the same with them or without. With onlyNew on, a filing an earlier run already returned is skipped, so it is neither returned nor billed again.
In companies, extraction off, at the measured 99.2% resolve rate and about 1,137 filings per answering company:
| Companies you name | About how many answer | Filing rows, about | You pay, about |
|---|---|---|---|
| 100 | 99 | 112,541 | $112.54 |
| 1,000 | 992 | 1,127,683 | $1,127.68 |
| 10,000 | 9,920 | 11,276,831 | $11,276.83 |
Those totals are filing rows only; with extraction on, add $0.001 for each 8-K document that produced text. A maxItems cap bounds the bill before the run starts either way: the same 100 companies at maxItems 1,000 cost at most $1.00 plus the $0.00005 start charge.
How do I use SEC EDGAR Filings Scraper?
- Open the Actor page and press Start.
- Type tickers, CIK numbers or company names into Search Queries (it comes with
AAPLfilled in), or paste EDGAR links into Start URLs. Narrow the result with Form Types and the filed-date window, or turn on Extract Earnings Releases to read each 8-K's document. - Rows land in the dataset as they are read. Export them as JSON, CSV or Excel, or read them over the API.
Example input (this is what produced the sample row above):
{"searchQueries": ["AAPL"],"extractEarnings": true,"maxItems": 100}
Over the Apify API:
curl -X POST "https://api.apify.com/v2/acts/Pradio~sec-edgar-filings/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" -H "Content-Type: application/json" -d "{\"searchQueries\": [\"AAPL\"], \"formTypes\": [\"8-K\"], \"extractEarnings\": true, \"maxItems\": 100}"
Input
| Input | Default | What it does |
|---|---|---|
searchQueries | ["AAPL"] | Tickers, CIK numbers or company names to look up. |
startUrls | none | EDGAR links that name a company. |
query | none | A full-text search phrase; every filing whose text matches it becomes a row. |
formTypes | empty (every form) | Only filings of these EDGAR form types are returned; amendments are included. |
filedFrom | none | Only filings submitted to the SEC on or after this date, in YYYY-MM-DD. |
filedTo | none | Only filings submitted to the SEC on or before this date, in YYYY-MM-DD. |
extractEarnings | off | Read each 8-K row's primary document and fill the five extraction fields. |
maxItems | 100 | The most filing rows a run returns. |
maxCompaniesPerSearchQuery | five | The most companies one name query may resolve to. A ticker or a CIK always resolves to exactly one. |
onlyNew | off | Skip filings an earlier run of the same search already returned. |
includeInsiderTransactions | on | Read each Form 3, 4 and 5 ownership file and fill the three insider fields. |
includeDocumentText | off | Add each filing's primary document as plain text in document_text. |
maxDocumentChars | 50000 | The most characters of document text one row carries. |
proxyConfiguration | none | Optional Apify proxy, used as one exit for the whole run. |
Search queries. A bare number is read as a CIK. Anything else is tried as a ticker first, then as a company-name match against the SEC's own company ticker file, up to maxCompaniesPerSearchQuery hits. A query that matches nothing becomes an uncharged ITEM_STATUS row naming it.
Start URLs. Accepted shapes: a submissions JSON URL such as https://data.sec.gov/submissions/CIK0000320193.json, an Archives path under sec.gov, or a browse link carrying a CIK parameter, which may itself be a ticker. A URL on any other host is an uncharged bad_url row, because this build reads sec.gov only.
Form types and the date window. formTypes keeps the rows to the EDGAR form codes you list, matched without case and with amendments included: 8-K returns 8-K and 8-K/A both. An empty list returns every form. filedFrom and filedTo bound filed_date, the day the filing was submitted, in YYYY-MM-DD. A date in any other shape returns one uncharged status row naming the input, because a window that cannot be read should not be guessed at.
Extract earnings. Off by default. When on, every 8-K row (8-K/A included) has its primary document fetched from sec.gov and read as text. item_codes and item_names fill from the feed's items column or the document's Item headings. excerpt carries a short cleaned passage and guidance_sentences picks the sentences with forward-looking language. sentiment scores the text as {positive, negative, net, label}. Each document that produced text bills one earnings-extracted event at $0.001; a document that produced none bills nothing and leaves the fields null.
Keyword search. Put a phrase in query and the run searches the text of every EDGAR filing since 2001 through the SEC's own full-text search, most relevant first. Wrap a phrase in double quotes to match it exactly. formTypes and the filed-date window narrow it, and companies in searchQueries or startUrls limit it to those filers. The search reaches the first 10,000 matching documents, so narrow a broad phrase with dates or forms. Each matching filing is one row in the usual shape, whichever of its documents matched.
{"query": "\"going concern\"","formTypes": ["10-K"],"filedFrom": "2026-01-01","maxItems": 200}
Insider transactions. On by default. Every Form 3, 4 and 5 row (amendments too) has its ownership file read from sec.gov. insider_name, insider_relationship and transactions carry what the form states: the owner's name as filed, the relationship boxes ticked, and each transaction or holding line. Form 3 reports holdings, so its lines carry kind: "holding" with no date, code or price. A price the form gives only as a footnote is null. file_number, film_number and act_code are always null on these rows, because EDGAR publishes none for insider filings. The insider fields add no charge; turn includeInsiderTransactions off to skip the extra read per row.
{"searchQueries": ["AAPL"],"formTypes": ["4"],"maxItems": 50}
A Form 4 row's insider fields look like this (other fields as in the sample above; file_number, film_number and act_code are null):
{"form_type": "4","insider_name": "Newstead Jennifer","insider_relationship": "Officer (SVP, GC and Government Affairs)","transactions": [{"kind": "transaction","security_title": "Common Stock","derivative": false,"date": "2026-09-15","code": "S","shares": 1438,"price_per_share": 330.19,"acquired_disposed": "D","shares_owned_after": 32914,"direct_or_indirect": "D"},{"kind": "transaction","security_title": "Common Stock","derivative": false,"date": "2026-09-15","code": "M","shares": 30104,"price_per_share": null,"acquired_disposed": "A","shares_owned_after": 63018,"direct_or_indirect": "D"},{"kind": "transaction","security_title": "Common Stock","derivative": false,"date": "2026-09-15","code": "F","shares": 16228,"price_per_share": 331.34,"acquired_disposed": "D","shares_owned_after": 46790,"direct_or_indirect": "D"},{"kind": "transaction","security_title": "Restricted Stock Unit","derivative": true,"date": "2026-09-15","code": "M","shares": 30104,"price_per_share": null,"acquired_disposed": "D","shares_owned_after": 180624,"direct_or_indirect": "D"}],"file_number": null,"film_number": null,"act_code": null}
Only new since last run.
With onlyNew on, the run remembers the accession number of every filing it delivered. The memory is a key-value store named sec-edgar-filings-only-new in your account, keyed by the search: the companies, the keyword, the form types and the dates. The next run of the same search skips those filings, so they are neither returned nor charged. Changing maxItems or the output switches keeps the memory; changing the search starts a fresh one. Only filings that reached your dataset are remembered, so a run cut short by your spending limit delivers the rest next time. The first run of a search returns everything, as usual.
{"searchQueries": ["AAPL", "MSFT", "NVDA"],"formTypes": ["8-K", "4"],"onlyNew": true,"maxItems": 500}
Document text.
With includeDocumentText on, each row's primary document is read from sec.gov and added to document_text as plain text. Markup, scripts and styles are removed, and the length is cut at maxDocumentChars (50,000 by default). A very large document, or one that will not read, leaves the field null. It is the primary document only; exhibits stay on filing_url.
{"searchQueries": ["TSLA"],"formTypes": ["10-Q"],"includeDocumentText": true,"maxDocumentChars": 200000,"maxItems": 4}
Worked examples
Use it to track every insider trade at a watchlist on a daily schedule, new ones only.
{"searchQueries": ["AAPL", "MSFT", "AMZN", "GOOGL"],"formTypes": ["4"],"onlyNew": true,"maxItems": 1000}
Use it to find which filers mentioned a topic in their 8-K and 10-Q filings this quarter.
{"query": "\"tariff\"","formTypes": ["8-K", "10-Q"],"filedFrom": "2026-07-01","filedTo": "2026-09-30","maxItems": 300}
Use it to pull 10-K annual reports as plain text for a reading or AI pipeline.
{"searchQueries": ["JPM", "BAC", "WFC"],"formTypes": ["10-K"],"filedFrom": "2024-01-01","includeDocumentText": true,"maxDocumentChars": 100000,"maxItems": 10}
Use it to read 8-K earnings releases with their guidance sentences and a sentiment score.
{"searchQueries": ["NVDA"],"formTypes": ["8-K"],"extractEarnings": true,"maxItems": 20}
Output
Every filing row carries row_type: "ROW" and status: "ok". To keep only filings, filter on row_type equal to ROW. Three other kinds of row can appear, and none is ever charged:
ITEM_STATUS: one of your entries could not be used. The row names it, andstatussays why (bad_url,bad_input,not_found,fetch_failed). Fix the entry and run it again.PROFILE_NOT_FOUND: nothing you sent matched a company or a filing. You get this one row instead of an empty dataset.STOPPED_EARLY: your spending limit ended the run.rowsReturnedsays how many filings you got androwsRemaininghow many were left; raise the limit and run again for the rest.
With extractEarnings on, the five extraction fields fill on each 8-K row whose primary document produced text. If your spending limit ends the extraction pass, the remaining 8-K rows ship as ordinary filing rows with those fields null, and no extraction event was billed for them.
For the run's totals, open RUN_SUMMARY in the run's key-value store: it repeats your input and gives rowsFetched, rowsPushed, rowsCharged, rowsUncharged and duplicatesDropped. Say you send 50 companies and 3 of them miss: the dataset holds every filing of the 47 that resolved, each one billed, plus 3 free ITEM_STATUS rows naming the misses. Each company brings many filings, so the billed count is the number of filing rows, not 47.
What can you do with the data?
Watch insider moves. Run a watchlist on a schedule with formTypes set to 4 and onlyNew on. Every new insider trade lands as a row with the insider, the relationship, the shares, the price and the holding after. Annual and quarterly reports and material-event reports arrive the same way, with the document a click away.
Read earnings releases without opening them. Set formTypes to 8-K and turn extractEarnings on. Each 8-K row then carries the SEC items it reports under, a short excerpt, the guidance sentences and a sentiment score. The full document stays a click away on document_url.
Feed a document pipeline. document_url and index_url point at the primary document and the machine-readable index on sec.gov, so a downstream step fetches only what it needs.
Screen an industry. sic and sic_description ride on every row, so filings group by the company's industry without a second lookup.
Use SEC EDGAR Filings Scraper with AI agents
Paste this line to give an agent the Actor as a tool:
claude mcp add --transport http apify "https://mcp.apify.com?tools=Pradio/sec-edgar-filings"
The agent can then look up companies and pull their filing rows itself.
Personal data
SEC filings are public regulatory disclosures published under U.S. securities-disclosure law by the Securities and Exchange Commission's EDGAR system, the source of every row. The people a filing may name, filers, officers, directors and insiders, appear in a business capacity, and the purpose of these rows is to index the disclosures, not the people.
A row carries facts, links and, when extraction is on, a short excerpt of an 8-K's primary document. With includeDocumentText on it also carries the primary document's text up to your character cap; exhibits and attachments stay on sec.gov, and every row's document_url points at the document itself.
On Form 3, 4 and 5 rows the insider fields carry what the form itself states. That is the owner's name as filed, the relationship the form ticks, and the transaction lines. Nothing is added from any other source, and the owner's address and identifiers on the form are not copied into the row. If a row names you and you want it removed, contact me through the Store and the deletion is honoured.
The SEC asks users to consider appropriate citation to the SEC as the source. This product uses no SEC or EDGAR logos or marks and claims no SEC endorsement or affiliation; EDGAR and EDGARLink are registered trademarks of the SEC. Automated access keeps the SEC's published fair-access conditions: a declared User-Agent and no more than 600 requests a minute.
Release notes
- 2026-09-25:
guidance_sentencesno longer picks up sentences about executive pay, bonuses or equity awards. 0.2: Full-text keyword search (query), Form 3, 4 and 5 insider transactions (insider_name,insider_relationship,transactions), only-new runs (onlyNew) and the primary document as plain text (includeDocumentText,maxDocumentChars). Existing inputs and fields are unchanged.0.1: SEC EDGAR filings by ticker, CIK, company name or EDGAR link, one row per filing. Form-type and filing-date filters, and optional 8-K earnings extraction. Caps bound the bill, and a miss costs nothing and says why.
Limits
- This build reads sec.gov only. A link on any other host is an uncharged
bad_urlrow. - Rows carry facts, links and, with extraction on, a short excerpt of an 8-K's primary document. The primary document's text rides on a row only when
includeDocumentTextis on, and only up tomaxDocumentChars; exhibits are never included. - Keyword search reaches the first 10,000 matching documents the SEC's full-text search returns, which covers filings from 2001 on. A filing outside a company's recent feed comes back with
acceptance_date_time,size_bytesand the XBRL flags null, because the search index does not carry them. - Insider fields read the XML ownership file. Paper-era insider filings with no XML leave them null.
- Extraction reads the 8-K's primary document only. An attached exhibit, such as the press release an 8-K references, is not part of the excerpt;
filing_urllists every file in the submission. - The five extraction fields are null on every non-8-K row and on every row when
extractEarningsis off. On an 8-K they fill only when the primary document produced readable text. A document that will not read or is too large leaves them null and bills no extraction event. sentimentis a word-count score, not an analyst: it counts positive and negative words in the document and stays null when it finds neither.- The recent feed is read for every company you name. Older filing files are fetched only while your
maxItemscap still needs rows, so an uncapped run returns the recent feed. - On insider filings (forms 3, 4 and 5),
file_number,film_numberandact_codeare null because EDGAR publishes none there. - A company-name query can match more than one filer.
maxCompaniesPerSearchQuerysets how many it may resolve to. - Extraction adds one read per 8-K row, so a run over many 8-Ks with the option on takes longer and bills the added events. Insider fields and document text add one read per row they apply to, so those runs take longer too, without an added charge.
onlyNewremembers up to 50,000 filings per search; beyond that the oldest are forgotten. Its memory lives in your own account's key-value store, so deleting that store starts every search fresh.- Fair access is kept, not worked around: a declared User-Agent, no more than 600 requests a minute, and a proxy runs as one exit for the whole run.
- Errors run toward failing. If the source stops answering or changes shape, the run fails rather than emitting rows of nulls.
Troubleshooting
My pasted link produced a bad_url row. Why?
This build reads sec.gov only. Give a submissions JSON URL, an Archives path or a browse link with a CIK, or use a ticker, CIK or company name in Search Queries instead.
The run returned one bad_input row naming filedFrom or filedTo.
The date window takes YYYY-MM-DD only. A date in any other shape returns one uncharged status row instead of guessing.
The run returned fewer rows than maxItems.
The companies you named had fewer filings in the feeds it read, or your formTypes list and date window narrowed them. The recent feed comes first, and older filing files are read only while the cap is still unfilled.
Zero rows came back. Is it broken?
A zero result is one PROFILE_NOT_FOUND row, not an empty dataset. Check the ITEM_STATUS rows beside it for which entry missed and why, and RUN_SUMMARY for the counts.
A STOPPED_EARLY row ended my run.
The run's charge limit was reached. The row's rowsRemaining says how much was left; raise the limit and re-run.
extractEarnings was on, but an 8-K row shows a null excerpt.
The primary document produced no usable prose. A document that will not read, is too large or is an XBRL data file leaves the extraction fields null and bills no extraction event. item_codes can still fill from the feed.
One company name returned several companies' filings.
Name queries match the SEC's ticker file by text, up to maxCompaniesPerSearchQuery companies. Use the ticker or the CIK for exactly one.
Still stuck? Report it through the Actor's Issues tab with the run ID attached.
FAQ
Can I use integrations with SEC EDGAR Filings Scraper?
Yes. The dataset plugs into Apify integrations such as webhooks, Zapier, Make and Google Sheets, and rows export as JSON, CSV or Excel. Schedule the Actor to keep a filing feed current.
Can I use SEC EDGAR Filings Scraper with the Apify API?
Yes. Run it and read the dataset through the Apify API. The curl one-liner under "How do I use" returns the rows directly.
Can I use SEC EDGAR Filings Scraper through an MCP server?
Yes. The snippet under "Use with AI agents" registers the Actor as a tool an agent can call.
Is it legal to scrape SEC EDGAR?
The filings are public regulatory filings published by the U.S. SEC, cited here as the source. The SEC allows scripted access under declared conditions, a declared User-Agent and no more than 600 requests a minute, and this Actor keeps them. Rows carry facts, links and short excerpts, plus a primary document's text only when you ask for it. This is not legal advice; use the data responsibly.
Not affiliated
This Actor is an independent product. It is not affiliated with, endorsed by or sponsored by the U.S. Securities and Exchange Commission. The data is read from the SEC's public EDGAR system, cited as the source. EDGAR and EDGARLink are registered trademarks of the SEC, and no SEC or EDGAR logos or marks are used.