SEC Filing Alerts: EDGAR Monitor by Ticker or CIK
Pricing
from $16.00 / 1,000 filings
SEC Filing Alerts: EDGAR Monitor by Ticker or CIK
SEC filing alerts for a watchlist of tickers or CIKs: new 8-K, 10-K, 10-Q, Form D or any other EDGAR form, one clean row per filing with 8-K item codes explained. On a schedule, each run returns only filings it has not delivered before.
Pricing
from $16.00 / 1,000 filings
Rating
0.0
(0)
Developer
Kesav Kumar Jayakumar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
What does SEC EDGAR Filing Monitor do?
SEC EDGAR Filing Monitor watches SEC EDGAR for new filings by the companies you list. Give it tickers or CIKs and the form types you care about: 8-K, 10-K, 10-Q, Form D or any other EDGAR form. It returns one row per filing with the company, the form, the dates and links to the filing on sec.gov. Each 8-K row lists its item codes with their official titles, so you can see at a glance that a filing reports results (2.02) or a change of officers (5.02). Each Form D row carries the offering: total amount, amount sold, industry group, exemptions and date of first sale.
Run it on a schedule. The first run returns every matching filing from the last 30 days. Every later run returns only the filings it has not delivered before, because the Actor remembers what it sent in a key-value store tied to your list. A run that finds nothing new writes one free row that says so. You pay per delivered filing. A ticker that does not exist, a filing whose details cannot be read and a company that could not be checked cost nothing.
The Actor reads SEC's public JSON and XML files only, never HTML pages. It names itself and a contact address in every request, as SEC asks, and sends at most 5 requests a second. It collects nothing about individuals: forms 3, 4, 5 and 144 are refused, and the people listed in a Form D are left out of every row.
Why use SEC EDGAR Filing Monitor?
EDGAR shows every filing, but watching a list of companies by hand means opening each company page every day and reading each 8-K to learn what it reports. SEC's submissions files hold the facts as parallel arrays and bare codes. This Actor turns them into rows you can filter, and it remembers what you have already seen.
What you get:
- Only new filings. The first run reads back as far as you ask (30 days by default, up to 365). After that each run delivers what is new since the run before, and a filing is never delivered or charged twice for the same list.
- 8-K items with their meaning.
itemCodesfor filtering,itemswith titles, anditemsTextas one line for a spreadsheet or an alert. - Form D offering details. Amounts offered, sold and remaining, industry group, fund type, revenue or net asset value range, exemptions, security types, first sale date and investor count, read from the filing's XML.
- Clear statuses.
ok,unparsed,not-found,failed,skippedorno-new-filings, each with a reason in a sentence. Onlyokrows are charged. - Fair use of SEC. A declared User-Agent, at most 5 requests a second, a wait on HTTP 429 and a full stop after two HTTP 403 answers in a row.
Each claim above has a test behind it:
| What you get | How it works | The test that backs it |
|---|---|---|
| Only new filings, never charged twice | Delivered accession numbers are kept in a named key-value store. A later run on the same list skips them. A run that restarts reads its own rows first, so a filing written just before a crash is not sent again. | "a second run on the same list writes no duplicate, charges nothing, and leaves one free no-new-filings row", "B2 a crash after a row is written but before the memory is saved delivers and charges nothing twice", "P1 on migrating the run saves its memory, state and summary, and the restarted run repeats nothing", and the live test "live: the prefill run delivers well-formed rows from SEC, and a second run on the same memory repeats nothing" (12 Oct 2026). |
| 8-K items with titles | The item codes of each 8-K are matched to the titles in Form 8-K's instructions, items 1.01 to 9.01. | "the prefill input delivers each new 8-K and 10-Q once, charged once, with the declared User-Agent, under 5 requests a second", and the tests in items.test.mjs. |
| Form D details, with no people in them | The filing's primary_doc.xml is read. The related persons, sales agents and signature are cut out of the file before it is parsed, and the issuer's street and phone are never copied. | "Form D filings by CIK come with the offering details, and nothing about any person". A live run on 25 Form D issuers taken from SEC's daily index of 9 Oct 2026 parsed all 25. |
| No charge for what it could not deliver in full | A filing whose Form D file is broken comes back as unparsed and costs nothing. Unknown tickers and CIKs get a free not-found row, and the run goes on. | "a Form D with a broken XML file is delivered without details, free, and not again", "a Form D whose XML is passingly unavailable is delivered free now, and in full on the next run", "an unknown ticker and an unknown CIK each get a free not-found row, and the run goes on". |
| A spending cap that stops the run | Set a maximum cost per run. The run stops before it charges past it, and the filings it held back come in the next run. | "P6 the maximum cost per run stops delivery cleanly, and the next run delivers what was held back". |
| Fair use of SEC | Requests start at least 210 ms apart. A 429 is waited out. A 403 gets one retry after 10 seconds, then the run sends nothing more and lists the companies it did not reach. | "N3 two 403 answers stop every request to SEC; the companies not reached are listed as skipped, free", "N4 a 429 is waited out and the filing is still delivered", and the gap check in the prefill test. |
Plus what the Apify platform adds around it:
- API access. Start runs and read results with the Apify API or the JavaScript and Python clients.
- Scheduling. Run it daily, or several times a day, and get only new filings each time.
- Integrations. Send new rows to Make, Zapier, Google Sheets, Slack or any webhook.
- Monitoring. Run history, logs and alerts for failed runs.
Typical uses are a daily 8-K digest for a portfolio, a feed of new Form D raises by a list of funds or startups, filing alerts for a newsroom, and fresh triggers for a sales team that follows a set of accounts.
What data can SEC EDGAR Filing Monitor extract?
Each new filing becomes one row in the dataset. The most useful fields:
| Field | Type | What it holds |
|---|---|---|
status | string | ok, unparsed, not-found, failed, skipped or no-new-filings. |
companyName | string | The company name as SEC records it. |
cik, ticker | string | SEC's 10-digit company number, and the ticker you gave or the company's first ticker. |
form | string | The form type, such as 8-K, 10-Q, D or 8-K/A. |
accessionNumber | string | EDGAR's unique number for the filing. |
filingDate, reportDate | string | The filing date and the period or event date it reports on, as YYYY-MM-DD. |
acceptanceDateTime | string | When EDGAR accepted the filing. |
filingIndexUrl, primaryDocumentUrl | string | Links to the filing's index page and its main document on sec.gov. |
itemCodes, items, itemsText | array, array, string | For 8-K and 8-K/A: the item codes, the codes with titles, and the same as one line. Empty for other forms. |
formD | object | For Form D and D/A: the offering details listed below. Empty for other forms. |
sic, sicDescription, stateOfIncorporation, exchange | string | Company facts from SEC's records. |
error, errorCode | string | Why a row is not ok, as a sentence and as a short code. |
stateStore | string | The name of the key-value store that remembers what this list has received. |
The formD object holds company-level facts only:
| Field | What it holds |
|---|---|
issuerName, issuerEntityType, issuerJurisdiction, issuerYearOfIncorporation | Who is raising money, its legal form and where it was formed. |
issuerCity, issuerStateOrCountry | The city and state of the issuer's address. The street and phone are left out. |
industryGroup, investmentFundType, isInvestmentCompanyAct1940 | Form D item 4. |
revenueRange, netAssetValueRange | Form D item 5, as the filer chose it, such as "Decline to Disclose". |
federalExemptions | Codes with titles, such as 06b Rule 506(b) and 3C.7 Investment Company Act Section 3(c)(7). |
isAmendment, previousAccessionNumber | Whether the filing amends an earlier one, and which. |
dateOfFirstSale, firstSaleYetToOccur, offeringLastsMoreThanOneYear | Timing of the offering. |
securityTypes, otherSecurityDescription, isBusinessCombination | What is offered. |
minimumInvestment, totalOfferingAmount, totalAmountSold, totalRemaining | Amounts in US dollars. An amount the filer marked as indefinite is empty and totalOfferingAmountIndefinite or totalRemainingIndefinite is true. |
totalInvestors, hasNonAccreditedInvestors, nonAccreditedInvestors | Investor counts. |
salesCommissions, findersFees | Fees in US dollars. |
Every row that is not ok carries one of these codes in errorCode, so you can count rows by reason without reading the sentence. The sentence in error can be reworded in a later version. The code stays.
errorCode | Meaning |
|---|---|
ticker-not-found | SEC's ticker list has no such ticker. |
cik-not-found | SEC has no filing history for that CIK. |
ticker-list-unavailable | SEC's ticker list could not be read, so a ticker could not be turned into a CIK. Give the CIK instead. |
duplicate | The same company appears earlier in your list. It is checked once. |
individual-filer | The CIK belongs to a person who files as an insider. The Actor reads nothing more from it. |
parse-failed | The Form D file could not be read. The filing is delivered without details and is not sent again. |
details-missing | SEC has no Form D file for the filing. The filing is delivered without details. |
details-unavailable | The Form D file could not be fetched this time. The filing is delivered without details and comes again, in full, in the next run. |
charge-limit | The run reached your maximum cost per run. |
run-time-limit | The run reached its time limit. |
repeated-failures | Five companies in a row failed with a server or network error, so the run stopped. |
aborted | The run was stopped. |
sec-blocked | SEC refused two requests in a row (HTTP 403), so the run sent nothing more. |
not-found | A file SEC lists could not be found, such as an older page of a filing history. |
rate-limited | SEC kept answering "too many requests" (HTTP 429) after three waits. |
server-error, http-error | SEC answered with an error status. |
network-error, timeout | SEC could not be reached, or did not answer within 30 seconds. |
too-large, bad-response, unexpected-redirect | SEC sent a file over 50 MB, something that was not JSON, or a redirect to another site. |
no-new-filings | The one row a run writes when nothing it checked was new. |
other | Any other reason. The sentence in error says what happened. |
How to monitor SEC EDGAR filings for a list of companies
- Open the Actor in Apify Console and select the Input tab.
- Add the companies under Companies, one per line: tickers such as AAPL, or CIKs such as 320193. The form is prefilled with three large companies, so you can press Start to see a result straight away.
- Choose the Form types. The form is prefilled with 8-K and 10-Q. Left empty through the API, the list is 8-K, 10-K, 10-Q and D.
- Press Start. In our local tests the prefilled run took about 10 seconds, and a list of 25 companies took 12 to 22 seconds.
- Open the Output tab for the table, or the Form D offerings view for the amounts. Export it as JSON, CSV or Excel.
- To get only new filings from then on, create a schedule with the same input, for example every morning.
To run it from code, send the same input to the Actor through the API:
{"companies": ["AAPL", "MSFT", "1785128"],"formTypes": ["8-K", "D"],"lookbackDays": 30}
How to send new SEC filings to Slack or Google Sheets (Make, Zapier, no code)
Each scheduled run holds only the filings that are new since the last run, so you can pass every run's results straight on.
Slack, built in. On the Actor's Integrations tab, add Slack, connect your workspace, pick a channel and choose the event "Run succeeded". Each finished run posts a message with a link to its results.
Google Sheets with Make.com.
- In Make, create a scenario and add the Apify module that watches for finished Actor runs, set to this Actor.
- Add the Apify module that gets dataset items, and map the run's default dataset ID.
- Add Google Sheets "Add a Row" and map the fields you want, for example
companyName,ticker,form,filingDate,itemsTextandfilingIndexUrl. - Optional: add a filter so only some filings reach the sheet, for example 8-K filings whose
itemCodesinclude 2.02 (results) or 5.02 (officer changes).
Google Sheets or Slack with Zapier. Use the Apify trigger for a finished Actor run, then the Apify step that fetches dataset items, then a Google Sheets "Create Spreadsheet Row" or a Slack "Send Channel Message" action. A Zapier filter step works the same way as the Make filter.
Your own code. Add a webhook on the Integrations tab for the event "Run succeeded", and read the dataset from the URL in the payload.
Set a schedule first (see the steps above), so that each run, and each message or row, covers only what is new.
How much does it cost to monitor SEC filings?
You pay per new filing delivered, and the Apify platform usage for the run is included. A filing costs $0.02 on the Free and Bronze plans, so 1,000 filings cost $20.
| Event | When it is charged | Price |
|---|---|---|
filing | One new filing delivered with status ok | $0.02 (Free, Bronze), $0.018 (Silver), $0.016 (Gold) |
| Actor start | Once per run, scaled by memory (Apify standard event) | $0.00005 per GB of memory |
Rows with the status unparsed, not-found, failed, skipped or no-new-filings cost nothing, and a filing delivered by an earlier run for the same list is never charged again. You can cap a run with the Maximum cost per run setting, and the Actor stops cleanly at that limit.
How much does one filing cost?
One filing costs $0.02 on the Free and Bronze plans, $0.018 on Silver and $0.016 on Gold. A run adds a start fee of about $0.0000125 at the default memory of 256 MB. The price already includes the platform usage, so there is no second bill for compute. A watchlist that brings 100 new filings in a month costs about $2 for that month.
How do I keep a run within budget?
Set Maximum cost per run when you start it or in the schedule. The run stops before it would charge past that amount. The filings it did not deliver get one skipped row per company with the code charge-limit, they stay out of the memory, and the next run delivers them. A first run with a long lookback can bring many filings at once, so start with the default 30 days.
What does a scheduled run cost when nothing is new?
Only the start fee, about $0.0000125 at 256 MB. The run writes one no-new-filings row and charges nothing for it, so a daily schedule on a quiet list costs almost nothing.
Input
Open the Input tab to see every setting with a short description. The first field is companies, the only one you must fill in. The form has two groups after it:
- Filings:
formTypes,includeAmendments(on by default, so 8-K/A comes with 8-K) andlookbackDays(30 by default, 1 to 365). - Memory and contact:
stateStoreNameandcontactEmail.
companies takes up to 1,000 entries, typed one by one or pasted with Bulk edit, one per line. A ticker is written as SEC lists it, so BRK.B and BRK-B are the same. A CIK can be written as 320193, 0000320193 or CIK0000320193. Funds and private companies have no ticker, so give their CIK, which you find on the company's EDGAR page. A company given twice is checked once.
The memory of what was delivered is named after your companies and form types. The same list gives the same memory in any order, so a schedule just works. A changed list starts a new memory, which means the next run delivers the whole lookback window again for the new list. To keep one memory while you add or remove companies, set stateStoreName to a new name of your own, such as my-watchlist, and let the Actor create the store. A ticker and the CIK of the same company count as two different entries for the name, so keep the list in one spelling.
contactEmail is optional. SEC asks every automated tool to name a contact in its requests. Leave it empty to use the Actor developer's address, or give your own if you want SEC to reach you about your runs. It goes to SEC in a request header only and is not stored in the output.
Output
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. A run also writes a SUMMARY record to its key-value store with the counts of delivered, unparsed, not found, failed and skipped entries, the charged filings, the requests sent to SEC and one line per company. Companies with nothing new get no row of their own: they are counted in SUMMARY. Every company that could not be checked gets a row with the reason, also when the run stops early at the cost cap, after SEC refused twice or near the time limit of the run. A run in which no company could be checked ends with the status Failed and the most common reason in its message, and the rows stay in the dataset.
An 8-K and a ticker that SEC does not list look like this:
[{"status": "ok","errorCode": null,"error": null,"input": "NKE","cik": "0000320187","ticker": "NKE","companyName": "NIKE, Inc.","form": "8-K","isAmendment": false,"accessionNumber": "0000320187-26-000184","filingDate": "2026-10-01","reportDate": "2026-10-01","acceptanceDateTime": "2026-10-02T00:15:15.000Z","filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/320187/000032018726000184/0000320187-26-000184-index.htm","primaryDocumentUrl": "https://www.sec.gov/Archives/edgar/data/320187/000032018726000184/nke-20261001.htm","primaryDocDescription": "8-K","fileNumber": "001-10635","sizeBytes": 462141,"isXBRL": true,"isInlineXBRL": true,"items": [{ "code": "2.02", "title": "Results of Operations and Financial Condition" },{ "code": "2.05", "title": "Costs Associated with Exit or Disposal Activities" },{ "code": "9.01", "title": "Financial Statements and Exhibits" }],"itemCodes": ["2.02", "2.05", "9.01"],"itemsText": "2.02 Results of Operations and Financial Condition | 2.05 Costs Associated with Exit or Disposal Activities | 9.01 Financial Statements and Exhibits","formD": null,"sic": "3021","sicDescription": "Rubber & Plastics Footwear","stateOfIncorporation": "OR","exchange": "NYSE","stateStore": "sec-edgar-monitor-a96837f88666afe40e68","deliveredAt": "2026-10-12T17:16:38.812Z"},{"status": "not-found","errorCode": "ticker-not-found","error": "SEC's ticker list has no ticker ZZZZ. Check the spelling, or give the company's CIK. Not charged.","input": "ZZZZ","ticker": "ZZZZ","companyName": null,"form": null,"accessionNumber": null}]
The second row is shortened here. Every row carries every field, with null where a value does not apply, so exports keep the same columns.
Tips for faster runs and lower costs
- Put all your companies in one list and one run. The start fee and the read of SEC's ticker list are paid once per run.
- A daily schedule catches every filing. The lookback window covers the days in between, so a missed run loses nothing and the next one delivers it.
- Keep only the form types you need. Fewer form types mean fewer charged rows.
- For a one-off backfill, raise
lookbackDaysfor one run, then lower it again. Filings already delivered are never charged twice. - Set
stateStoreNamebefore you start editing a list you run on a schedule, so the memory carries over. - The Actor checks one company after another to stay inside SEC's limits. In our tests that took 0.5 to 0.9 seconds per company, so a list of 1,000 companies needs about 8 to 15 minutes. Give such a run a timeout of 30 minutes or more.
FAQ, disclaimers and support
Is it legal to collect data from SEC EDGAR?
EDGAR filings are public records, and SEC publishes the submissions files this Actor reads for automated use. SEC asks automated tools to declare who they are and to stay under 10 requests a second. The Actor declares itself in every request and stays under 5. How you may use what you collect depends on your purpose and your country, so check that for your use case. This is general information, not legal advice.
Is this an official SEC tool?
No. The Actor is an independent tool. It is not made, endorsed or checked by the U.S. Securities and Exchange Commission. The data comes as filed: if a filer made a mistake, the row repeats it. Check the filing on sec.gov before you act on it.
Is personal data involved?
The Actor is built to collect company facts only. It refuses forms 3, 4, 5 and 144, which report one person's own trades and holdings. When a CIK belongs to a person who files as an insider, it skips the CIK and writes no name. From a Form D it reads the offering and leaves out the related persons, the sales agents, the signer and the issuer's street and phone. Some fields can still name people: a company or fund can carry a founder's name, and an 8-K item title such as 5.02 tells you that an officer changed (the row does not say who). Under the GDPR and similar laws you are the controller of what you collect, so keep and use it for a lawful reason.
What is a CIK and where do I find it?
The CIK (Central Index Key) is SEC's number for every filer. It is on each company's EDGAR page and in every filing. Use it for funds and private companies, which have no ticker, and for any company whose ticker changed.
Why did I not get a filing I can see on EDGAR?
Check four things: the form type is in your list (8-K/A needs Include amendments), the filing date is inside the lookback window, the filing was not already delivered to this list by an earlier run, and the company is the one you meant (the cik in SUMMARY). The window is counted on the filing date SEC assigns, which can be a day after the acceptance time for a filing sent late in the day.
How does the Actor know what is new, and how do I start over?
After each run it keeps the accession numbers of the filings it delivered in a named key-value store, listed in each row as stateStore. The next run with the same list skips them. To start over, delete that store under Storage in Console, or set a new stateStoreName. The memory forgets filings after 372 days, which no lookback can reach.
What happens when SEC limits the requests?
A "too many requests" answer (HTTP 429) is waited out, for as long as SEC's Retry-After header says and at most a minute, up to three times. A refusal (HTTP 403) gets one retry after 10 seconds. A second refusal stops all requests for the rest of the run, because SEC limits a busy address for a while. The companies the run did not reach get a skipped row with the code sec-blocked, nothing is charged for them, and the next run checks them.
What does unparsed mean?
The filing is new and delivered, with its links and dates, but the Form D details could not be read, so formD is empty. The row is not charged. When the cause is passing (details-unavailable), the next run delivers the filing again with its details, and charges it then. When the file itself is broken (parse-failed), the filing is not sent again.
What happens when a run reaches its time limit?
The Actor reads the time limit of the run from the platform and starts no new company in the last 30 seconds. Every company it did not reach gets a skipped row with the code run-time-limit, nothing is charged for them, and the next run checks them.
Can I send new filings to Slack, email or a spreadsheet?
Yes. Use Apify schedules for the runs, and integrations or webhooks to pass each run's dataset to Make, Zapier, Google Sheets, Slack or your own endpoint. Since each run holds only new filings, the dataset of a run is the alert.
What if something looks wrong?
Open the Issues tab on the Actor page and describe the companies, your input and what you expected. A run link helps. Issues are answered within two days.
Other Actors by the same developer
- SEC Form D Feed: new private fundraising rounds filed with the SEC on Form D, with amounts and industry.
- SEC XBRL Fundamentals: revenue, EPS, cash flow and other reported figures per company and period, from SEC XBRL filings.
- UK Company Check: Companies House status, outstanding charges and risk flags for UK companies, or a list of newly registered ones.
- US Trademark Status and Watch: USPTO status and upcoming deadlines for US trademarks, and what changed since your last run for marks you watch.
- New Scholarly Papers Watch: papers new since your last run for the keywords, ORCID authors, journals, funders or DOIs you watch, from Crossref.
- Full Page Website Screenshot: full-page PNG or JPEG screenshots, including pages that load content as you scroll.