SEC EDGAR Filings Scraper (8-K, Form D, 10-K) avatar

SEC EDGAR Filings Scraper (8-K, Form D, 10-K)

Pricing

$3.00 / 1,000 filing returneds

Go to Apify Store
SEC EDGAR Filings Scraper (8-K, Form D, 10-K)

SEC EDGAR Filings Scraper (8-K, Form D, 10-K)

Every SEC EDGAR filing by form type and date, straight from the SEC: 8-K item codes, Form D, 10-K, company, CIK, ticker, SIC, state and document links.

Pricing

$3.00 / 1,000 filing returneds

Rating

0.0

(0)

Developer

Jason

Jason

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Pulls filings from SEC EDGAR, the US Securities and Exchange Commission's electronic filing system, through the SEC's own public endpoints: EDGAR full-text search, the daily dissemination index and the data.sec.gov submissions API. No API key, no account, no browser automation. You get one flat JSON record per filing with the form type, filing date and reporting period, the filer's name, CIK, tickers, SIC industry, state of incorporation and business location, the 8-K item codes or Form D exemptions turned into readable English, the file and film numbers, and direct links to both the filing index page and the primary document - filtered by form type, filing-date window, full-text keyword, company name, SIC code and state. Measured on 8 September 2026: a business day of EDGAR holds about 165 8-K filings, 220 Form D filings and 2,900 to 3,300 filings across all forms, and this Actor delivered 2,037 8-K and Form D filings covering five business days in 43 seconds.

The one thing the SEC does ask for is that you say who you are: see Fair access and the User-Agent below.

What you get

Every record contains:

FieldDescription
idThe accession number, EDGAR's identifier for the filing, e.g. 0001477932-26-005420
sourcesec-edgar, constant
urlThe filing index page on sec.gov - the human-readable landing page for the whole submission
documentUrlThe primary document itself. XML forms (Form D, Forms 3/4/5) link EDGAR's rendered view rather than the raw XML. null on an index-sourced record until includeCompanyDetails names the document
submissionUrlThe complete submission text file: every document in the filing concatenated. This is the one EDGAR path that keeps the dashes in the accession number, and the Actor builds it that way
formTypeThe EDGAR form type exactly as filed: 8-K, 8-K/A, D, D/A, 10-K, SCHEDULE 13D, ...
isAmendmenttrue when the form type ends in /A
filedAtFiling date, YYYY-MM-DD
periodEndingThe period the filing reports on, YYYY-MM-DD, or null for forms that have none (every Form D)
acceptedAtEDGAR's acceptance timestamp, to the second (details only)
companyNameThe filer's name, with the ticker and CIK stripped off EDGAR's display string
cikCentral Index Key, zero-padded to ten digits
tickersTrading symbols EDGAR has on file, e.g. ["SOUN", "SOUNW"]; [] for a private filer
exchangesExchanges the filer is listed on, e.g. ["Nasdaq"], ["OTC"] (details only)
coFilerCiks / coFilerNamesThe other registrants on a joint filing - a parent and its financing subsidiary file one 8-K between them. Empty on a single-filer filing (98.7% of them)
sicCodeStandard Industrial Classification code, e.g. 7990
sicDescriptionThe industry in words, e.g. Services-Miscellaneous Amusement & Recreation. Resolved from the SEC's own SIC code list, embedded in the Actor, so it is filled with no extra request
stateOfIncorporationEDGAR two-character code, e.g. DE, WY, X0
businessLocation / businessStateThe filer's business address as EDGAR prints it, e.g. Santa Monica, CA, and just the code
businessAddressThe full street address (details only)
phoneThe filer's telephone number as registered with EDGAR (details only)
entityTypeoperating, other, investment company, ... (details only)
fileNumber / filmNumberThe SEC file number (000-08962, 021-596555) and the film number
itemsThe item codes on the filing: 8-K event codes (["1.01", "9.01"]) or the Form D exemptions claimed (["06C", "3C.7"])
itemDescriptionsThe same codes in English: Entry into a Material Definitive Agreement, Rule 506(c), ...
descriptionEDGAR's own description of the primary document, e.g. FORM 8-K, CURRENT REPORT
sizeBytes / isXBRLSize of the whole submission, and whether it carries XBRL data (details only)
documentSequenceWhich document in the filing documentUrl points at; 1 is the primary document
retrievedFromfull-text-search or daily-index - see Limits and freshness
fetchedAtISO timestamp of the run that produced the record

Fields marked details only come from the data.sec.gov submissions call and are null when includeCompanyDetails is false. The keys are always present either way, so a CSV export is a rectangle. The dataset has three views: Overview (date, form, company, ticker, industry, items, link), 8-K events and Form D exemptions (the item codes and what they mean) and Companies (address, phone, exchange, entity type).

Input

InputTypeDefaultDescription
userAgentstringrequiredYour name and a contact email, as Company Name contact@example.com. The SEC requires it; see below.
formTypesstring[]["8-K", "D"]Pick from a list of 24 common forms. Empty = every form EDGAR disseminated in the window - 2,644 filings across 108 root forms on 4 September 2026 - read from the daily dissemination index rather than full-text search (see Limits and freshness).
otherFormTypesstring[]noneAny other EDGAR form type, spelled as EDGAR spells it: 10-D, 1-A, ABS-15G, N-PX, 485BPOS, SD, C, POS AM.
includeAmendmentsbooleantrueKeep 8-K/A, D/A, 10-K/A and the rest alongside the originals.
daysBackinteger3Look-back window in days on the filing date, ending today. Ignored when dateFrom/dateTo are set. EDGAR files on US business days only, so use 4 or more on a schedule - the examples below do - or a Monday run can span nothing but a weekend. A run that comes back empty says why in the log and in SUMMARY.hint.
dateFromstring-Start of the filing-date window, YYYY-MM-DD, inclusive.
dateTostringtodayEnd of the filing-date window, YYYY-MM-DD, inclusive. A future date is clamped to today.
keywordsstring[]noneSearch the full text of the filing and its exhibits. Each term is an exact phrase, the terms are ORed.
companiesstring[]allKeep filings whose filer name contains one of these, case-insensitively.
sicCodesstring[]allSIC codes or prefixes: 2836 biological products, 28 all chemicals and pharma, 6798 REITs, 7372 software. Needs a form type or a keyword selected, or includeCompanyDetails - see Limits and freshness.
statesstring[]allEDGAR two-character codes. A filing matches on either its state of incorporation or its business address. Same requirement as sicCodes.
includeCompanyDetailsbooleanfalseOne data.sec.gov call per company per day for the address, phone, exchanges, entity type, acceptance timestamp, size and XBRL flag.
maxItemsinteger500Stop after this many filings. You are charged per filing, so this is also the cost cap. Days are read newest first, so a value below the window's volume drops the oldest filings in it.

Example - a daily 8-K and Form D watch, run on a schedule:

{
"userAgent": "Acme Research deals@acme.com",
"formTypes": ["8-K", "D"],
"daysBack": 4,
"maxItems": 2000
}

Example - California and New York private placements from the last month, with the issuer's address and phone:

{
"userAgent": "Acme Research deals@acme.com",
"formTypes": ["D"],
"includeAmendments": false,
"daysBack": 30,
"states": ["CA", "NY"],
"includeCompanyDetails": true,
"maxItems": 3000
}

Example - every 8-K mentioning a merger or an acquisition agreement in the last week:

{
"userAgent": "Acme Research deals@acme.com",
"formTypes": ["8-K"],
"keywords": ["definitive merger agreement", "agreement and plan of merger"],
"daysBack": 7,
"maxItems": 500
}

Example - a biotech watch on activist stakes and insider buying:

{
"userAgent": "Acme Research deals@acme.com",
"formTypes": ["SC 13D", "4"],
"sicCodes": ["2834", "2836", "8731"],
"daysBack": 5,
"maxItems": 1000
}

Bad input fails fast: a missing or malformed userAgent, a non-numeric SIC code, a state code that is not two characters, or a malformed date stops the run with the validation message as its status, before any request is made.

Output example

A real record from a live run on 8 September 2026 ({"formTypes": ["8-K"], "dateFrom": "2026-09-04", "dateTo": "2026-09-04", "maxItems": 100, "includeCompanyDetails": true}), unedited:

{
"id": "0001477932-26-005420",
"source": "sec-edgar",
"url": "https://www.sec.gov/Archives/edgar/data/55234/000147793226005420/0001477932-26-005420-index.htm",
"documentUrl": "https://www.sec.gov/Archives/edgar/data/55234/000147793226005420/gamg_8k.htm",
"submissionUrl": "https://www.sec.gov/Archives/edgar/data/55234/0001477932-26-005420.txt",
"formType": "8-K",
"isAmendment": false,
"filedAt": "2026-09-04",
"periodEnding": "2026-08-28",
"acceptedAt": "2026-09-04T16:44:22.000Z",
"companyName": "Global Asset Management Group, Inc.",
"cik": "0000055234",
"tickers": ["GAMG"],
"exchanges": ["OTC"],
"coFilerCiks": [],
"coFilerNames": [],
"sicCode": "7990",
"sicDescription": "Services-Miscellaneous Amusement & Recreation",
"stateOfIncorporation": "WY",
"businessLocation": "Rockville, MD",
"businessState": "MD",
"businessAddress": "1505 MONROE STREET, SUITE 1505, ROCKVILLE, MD, 20852",
"phone": "312-372-6900",
"entityType": "operating",
"fileNumber": "000-08962",
"filmNumber": "261361302",
"items": ["1.01", "2.01", "2.03", "3.02", "3.03", "5.02", "8.01", "9.01"],
"itemDescriptions": [
"Entry into a Material Definitive Agreement",
"Completion of Acquisition or Disposition of Assets",
"Creation of a Direct Financial Obligation or an Obligation under an Off-Balance Sheet Arrangement of a Registrant",
"Unregistered Sales of Equity Securities",
"Material Modifications to Rights of Security Holders",
"Departure of Directors or Certain Officers; Election of Directors; Appointment of Certain Officers: Compensatory Arrangements of Certain Officers",
"Other Events",
"Financial Statements and Exhibits"
],
"description": "FORM 8-K",
"sizeBytes": 2563762,
"isXBRL": true,
"documentSequence": 1,
"retrievedFrom": "full-text-search",
"fetchedAt": "2026-09-08T05:43:28.540Z"
}

A Form D private placement from the same day looks like this - no reporting period, no ticker, no SIC, and the item codes are the exemptions the issuer claimed:

{
"id": "0002140437-26-000001",
"source": "sec-edgar",
"url": "https://www.sec.gov/Archives/edgar/data/2140437/000214043726000001/0002140437-26-000001-index.htm",
"documentUrl": "https://www.sec.gov/Archives/edgar/data/2140437/000214043726000001/xslFormDX01/primary_doc.xml",
"formType": "D",
"filedAt": "2026-09-04",
"periodEnding": null,
"acceptedAt": "2026-09-04T21:20:37.000Z",
"companyName": "Sound Ventures V, L.P.",
"cik": "0002140437",
"tickers": [],
"coFilerCiks": ["0002140395"],
"coFilerNames": ["Sound Ventures Feeder V, L.P."],
"sicCode": null,
"stateOfIncorporation": "DE",
"businessLocation": "Santa Monica, CA",
"businessAddress": "3130 WILSHIRE BLVD., #600, SANTA MONICA, CA, 90403",
"phone": "310-867-7169",
"entityType": "other",
"fileNumber": "021-596555",
"items": ["06C", "3C", "3C.7"],
"itemDescriptions": [
"Rule 506(c)",
"Investment Company Act Section 3(c)",
"Investment Company Act Section 3(c)(7)"
],
"sizeBytes": 13002,
"isXBRL": false,
"retrievedFrom": "full-text-search",
"fetchedAt": "2026-09-08T05:45:53.276Z"
}

Every run also writes a SUMMARY record to the key-value store with the resolved window, the filters used and how many filings each dropped, the days read, the search and detail request counts, which source the run used (sourceMode) and any days that fell back to the daily index, the completeness flags limitReached and windowExhausted (see Limits and freshness), and a plain-English hint when a run comes back empty because the window held no filing day.

Pricing

Pay per result: US$0.003 per filing delivered (US$3 per 1,000 filings). You are charged only for records pushed to the dataset; a run that returns nothing - a window that lands on a weekend, a filter that matches nothing - costs nothing. Runs on the Apify free plan are limited by the platform's free-tier usage allowance.

Fair access and the User-Agent

The SEC asks every automated caller to identify itself. From the SEC's Webmaster FAQ (https://www.sec.gov/about/webmaster-frequently-asked-questions, read 8 September 2026): "Please declare your user agent in request headers", with the sample User-Agent: Sample Company Name AdminContact@<sample company domain>.com, and "Our current maximum access rate is 10 requests per second."

So this Actor requires a userAgent input and sends it on every single request to efts.sec.gov, www.sec.gov and data.sec.gov. Put your own organisation or project name and a mailbox someone reads in it. A request with no declared agent is answered with an HTTP 403 and an SEC page headed "Your Request Originates from an Undeclared Automated Tool"; if EDGAR ever answers that way the run stops with that explanation rather than grinding through retries. The userAgent field is prefilled with a placeholder so the Store's Try button works, and the run logs a warning when the contact domain is one of the reserved placeholder domains (example.com and friends) - replace it before running at any volume.

On the rate: the Actor paces itself at 5 requests per second across all three hosts, half the documented ceiling, using a single shared throttle so concurrent enrichment cannot push it over.

Data source and licence

  • Search: GET https://efts.sec.gov/LATEST/search-index - the endpoint behind https://www.sec.gov/edgar/search/. Daily index: https://www.sec.gov/Archives/edgar/daily-index/YYYY/QTRn/form.YYYYMMDD.idx. Company profiles: https://data.sec.gov/submissions/CIK##########.json. All three are public and need no key; the SEC documents them at https://www.sec.gov/search-filings/edgar-search-assistance/accessing-edgar-data (read 8 September 2026).
  • Licence. The SEC's Website Dissemination policy (https://www.sec.gov/about/privacy-information, read 8 September 2026) states: "Information presented on sec.gov is considered public information and may be copied or further distributed by users of the web site without the SEC's permission." Commercial reuse is permitted. Attribute as "Source: U.S. Securities and Exchange Commission, EDGAR" and link to the filing.
  • What that policy does restrict: you may not use the SEC seal, logos or other artwork from the site, and you may not use the SEC's or EDGAR's names or trademarks in a trade name, trademark or domain name of an SEC- or EDGAR-related business without a licence from the SEC.
  • This Actor publishes EDGAR's index metadata, not the filings. Every field above comes from EDGAR's own catalogue of the filing - form type, dates, filer identity, classification codes, item codes, file numbers - plus URLs. The text of a filing is written by the filer, not the SEC, and this Actor never copies it into the dataset; documentUrl and submissionUrl link to the SEC's copy so you fetch it yourself if you need it. Keyword searching runs on the SEC's index, not on text this Actor stores.
  • Personal data. Most filers are companies, but not all, and some of the fields are personal data. The individual reporting-owner forms - 3, 4 and 5 - and often SC 13D and SC 13G are filed by named human beings, so companyName on those records is a person's name and businessAddress and phone may be a personal or advisor's address. Small D issuers, single-property LLCs and family partnerships routinely register a home address and a mobile number with EDGAR. These are details the filer submitted to a public regulator and the SEC publishes, but using them - for marketing in particular - is the buyer's responsibility under the applicable regime (CAN-SPAM and the TCPA in the US, GDPR/PECR if you are contacting from or into the EU or UK). businessAddress and phone are only fetched at all when you set includeCompanyDetails.

Limits and freshness

  • Coverage and how it is read. The Actor walks the filing-date window one calendar day at a time, newest day first, reading each day's filings in full before moving on. The primary source is EDGAR full-text search, which covers 2001-01-01 onwards (2000-12-29 returns zero hits). For a day before that, and for any day the search endpoint refuses, the Actor falls back to the SEC's daily dissemination index, which it can read back to 1995-01-01 - EDGAR renamed those files at the start of 1999, so both form.YYYYMMDD.idx and the older form.YYMMDD.idx are tried. A record says which route produced it in retrievedFrom, and SUMMARY.sourceMode says which route the run as a whole used. Index-sourced records carry only what the index publishes - form type, company, CIK, filing date and the filing link - so switch includeCompanyDetails on to fill the rest.
  • Asking for every form reads the daily index, by necessity. EDGAR's search endpoint will not run a query that names neither a form type nor a keyword: it answers Blank search not valid - and it answers it with HTTP 200 and an empty hit list, which is indistinguishable from a quiet day unless you look for the error. So a run with formTypes: [] and no keywords skips the search entirely and reads each day's daily dissemination index, the SEC's own complete list of what it published that day. Verified on 4 September 2026: 2,644 filings across 108 root forms, windowExhausted: true - and its per-form counts match full-text search exactly (8-K 164 + 5 amendments = the 169 the search reports; Form D 152 + 101 = 253). The price is that those records carry no reporting period, SIC, state, item codes or document link, because the index does not publish them; includeCompanyDetails fills most of it from the company profile. sicCodes and states filter on fields the index has not got, so with no form type and no keyword the run refuses that combination up front rather than returning an empty dataset - select a form type or a keyword, or switch includeCompanyDetails on.
  • Completeness, cross-checked against the SEC's own dissemination feed. On 8 September 2026 every root form disseminated on 2 and 3 September 2026 was counted in the daily index (de-duplicated by accession number, and restricted to rows actually filed that day) and compared with what full-text search returns for the same form and day: 176 form/day combinations covering 6,178 filings, of which 173 matched exactly. Of the three that did not, two were cases where search held one filing more than the index for that day - a filing dated on the day but disseminated the next - and one was a single N-14 8C that search did not hold. That is the measured basis for treating full-text search as the primary source.
  • Volumes, measured 8 September 2026. Per business day: 8-K 165 to 202 filings, Form D (with amendments) 193 to 264, Form 4 394 to 971, Schedule 13D and 13G 62 on the day sampled, 10-K 4 to 12, 10-Q 16 to 25, and 2,919 to 3,259 filings a day across every form type (89 different root forms on 3 September 2026). A five-business-day window of 8-K and Form D delivered 2,037 records.
  • Speed, measured 8 September 2026. One business day of 8-K and Form D - 422 filings - took 5.6 seconds and 5 requests. Five business days - 2,037 filings - took 43.1 seconds and 24 requests, about 47 records a second. With includeCompanyDetails on, 100 8-K filings took 35.3 seconds (96 submissions calls, one per company), about 2.8 records a second, so switch it on when you want the contact fields and off when you want throughput.
  • Size maxItems to the window, and check windowExhausted. maxItems counts records kept after filtering and days are read newest first, so a value below the window's volume drops the oldest filings in it - but never silently. The run warns maxItems (N) reached before the window was exhausted and the SUMMARY record carries limitReached: true with windowExhausted: false. windowExhausted: true is the guarantee that you hold the complete window: it is set only when every calendar day in it was read to the end and every record kept was delivered. A run that is capped stops the moment the cap is full and reads no page it cannot deliver - maxItems: 5 over an eight-day window cost exactly one request per day and no second page.
  • The 10,000-per-day search ceiling. EDGAR's search refuses from + size > 10000, so at most 10,000 filings a day can be read through it. Reading a day at a time keeps every ordinary run far below that - the busiest single form-day measured was 971 Form 4 filings, and all forms together came to 3,259 - but selecting many high-volume forms over a historically busy day could reach it. The run then warns, names the day in SUMMARY.truncatedDays and sets windowExhausted: false; select fewer forms to read that day in full.
  • Weekends and holidays return nothing, and that is not an error. EDGAR disseminates on business days, and the current day's feed fills through the afternoon US Eastern time. A daysBack: 2 run started on the Tuesday after Labor Day 2026 covered 6, 7 and 8 September - a Sunday, the holiday and a morning - and correctly returned 0 filings with windowExhausted: true, costing nothing. A run that EDGAR returns nothing for now says why, in the log and in SUMMARY.hint - naming the window and whether it was the form types or the keywords that were asked for - rather than leaving you with a bare zero. The input default is daysBack: 3, which is enough midweek; use 4 or more for a daily schedule so the window always spans a filing day whichever day it starts on, and overlap your runs rather than abutting them.
  • Amendments come with the form. EDGAR's search groups a form and its amendments under one root form, so asking for 8-K returns 8-K/A too. That is usually what you want - and it is a large share of some forms: of the 1,088 Form D filings in the five-business-day run measured below, 381 were amendments. Set includeAmendments: false to drop them; it filters after the fact, so it saves cost per record but not requests.
  • A keyword search matches exhibits too, and the Actor de-duplicates. EDGAR indexes every document in a filing, so "material definitive agreement" over 1-4 September 2026 returned 142 document hits for 137 distinct filings. You are charged once per filing: hits are de-duplicated by accession number and the primary document is the one documentUrl points at. Note that a SUMMARY hit count of that shape counts documents, which is why the Actor reports filings instead.
  • Field completeness, measured over the 2,037-filing five-day run. documentUrl, fileNumber, items and itemDescriptions were present on 100% of records and businessLocation on 99.9%. The rest depends on the form: for the 949 8-K records, periodEnding 100%, sicCode 96.3%, stateOfIncorporation 92.0%, tickers 79.1%; for the 1,088 Form D records, stateOfIncorporation and businessLocation 100% but sicCode only 2.4%, tickers 1.7% and periodEnding 0% - private issuers have no ticker, EDGAR classifies few of them, and a Form D reports no period. Those are absent at source and stay null rather than being guessed at.
  • The industry name costs nothing extra. The SEC's Division of Corporation Finance SIC code list (all 444 codes, https://www.sec.gov/corpfin/division-of-corporation-finance-standard-industrial-classification-sic-code-list) is embedded in the Actor, so sicDescription is filled from sicCode without a second request - and is filled even for the codes where EDGAR's own company record leaves the description blank (3812, 3944, 5122 and 6199 all came back empty from data.sec.gov). Checked against 11 live company records, 10 matched the SEC's own spelling character for character.
  • Item codes are resolved, not passed through. All 47 distinct item codes across those 2,037 filings resolved to text; a code the table does not know is left out of itemDescriptions rather than guessed at, and items always keeps the raw codes. The 8-K wording is EDGAR's own, captured from its current-filings feed and filing index pages; the Form D codes are the "Federal Exemptions and Exclusions Claimed" boxes from Form D Item 6.
  • Two EDGAR spellings are handled for you. EDGAR's indexes call the Williams Act schedules SCHEDULE 13D and SCHEDULE 13G, while everyone else calls them SC 13D and SC 13G - asking the search for SC 13D returns zero hits. Type either; the Actor translates.
  • Company, SIC and state filters are applied locally, on what the search returns, so they cut the record count and the cost but not the number of requests. That is deliberate: EDGAR's own company-name parameter is not a substring match (nergy returns nothing where 15 filers have it in their name) and its location parameter covers only the business address, not the state of incorporation.
  • Older filings and the detail call. includeCompanyDetails reads filings.recent from the submissions document, which holds a company's most recent 1,000 filings. For a filing older than that the company profile still merges but the per-filing extras (acceptedAt, sizeBytes, isXBRL) stay null.
  • Freshness. EDGAR full-text search had 2026-09-04 filings indexed and searchable on 2026-09-08, and its counts for that day matched the daily index exactly, so the indexing lag is under one business day. Dates are the filing dates EDGAR publishes, with no time component; acceptedAt is the only timestamp, and it is EDGAR's acceptance time.

Use cases

  • M&A and corporate-event monitoring: a scheduled daily run over 8-K with keywords such as "agreement and plan of merger", or filtered on items in the output for 1.01 (material agreement), 2.01 (completed acquisition) or 5.02 (officer departure) - the event is already spelled out in itemDescriptions, so an alert needs no document parsing.
  • Private-placement lead generation: Form D names companies that have just raised money and, with includeCompanyDetails, their business address and phone. Filter by states and sicCodes to get a territory list, and use includeAmendments: false to see only first-time raises - 707 of them in the five business days measured, so roughly 700 a week.
  • Compliance, research and dataset building: point it at any form type and any window back to 2001 (or 1995 through the daily index) to build a filing history - 13F-HR holdings reports, SC 13D activist stakes, 10-K annual reports by industry - with the CIK, file number and document link you need to fetch and parse the filings themselves.

Support

Open an issue on the Actor's Issues tab on Apify Store. Replies within 14 days. Bug reports that name the run id and the input used are fixed fastest.