When a US public company does something that matters — closes an acquisition, loses a CFO, gets delisted, discloses a cybersecurity breach — it has four business days to file an 8-K with the SEC. That filing is the primary source every financial news outlet reads. You can read it too, before they write the story, and you can read it as structured data.
The problem most people hit: the 8-K itself is a document. To know what happened you seem to have to open it and read. But you don't. The event type is already encoded, and once you know where to look, a whole category of "monitor a company for material events" becomes a single structured query.
The item code is the whole game
Every 8-K is tagged with one or more item numbers from a fixed list the SEC defines. The item tells you the kind of event without reading a word of the body:
-
2.01— Completion of an acquisition or disposition of assets (M&A closed) -
2.02— Results of operations (earnings) -
5.02— Departure or appointment of directors or officers (someone left or joined the C-suite) -
1.03— Bankruptcy or receivership -
1.05— Material cybersecurity incident (added in 2023) -
3.01— Notice of delisting -
4.02— Non-reliance on previously issued financials (a restatement is coming)
That last group matters most for risk: 1.03, 2.06 (material impairment), 4.02, 3.01 are the filings that precede bad news. If you monitor a portfolio, an alert on those item codes is an early-warning system.
Getting the events, structured
The SEC's EDGAR submissions API already carries the item codes in its metadata — you do not have to parse the filing document at all. Here is a real slice for Apple, decoded:
{
"ticker": "AAPL",
"companyName": "Apple Inc.",
"events": [
{
"filedAt": "2026-04-30",
"items": [
{ "code": "2.02", "label": "Results of Operations and Financial Condition", "category": "earnings" },
{ "code": "9.01", "label": "Financial Statements and Exhibits", "category": "other" }
],
"highSignal": true,
"url": "https://www.sec.gov/Archives/edgar/data/320193/..."
},
{
"filedAt": "2026-04-20",
"items": [{ "code": "5.02", "label": "Departure or Appointment of Directors or Officers", "category": "management" }],
"highSignal": true
}
]
}
Enter fullscreen mode Exit fullscreen mode
Two filings, two decoded events: an earnings report and a change in the executive ranks. No document parsing, no keyword guessing.
Run it on a watchlist
I wrapped this into a small feed so I could point it at a basket of tickers:
curl -X POST "https://api.apify.com/v2/acts/jdepablos~sec-8k-events-feed/run-sync-get-dataset-items?timeout=300" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "tickers": ["AAPL", "TSLA", "NVDA"], "daysBack": 90, "highSignalOnly": true }'
Enter fullscreen mode Exit fullscreen mode
highSignalOnly drops the filings that are only exhibits or routine disclosure and keeps the ones that move a stock. Schedule it daily and you have a material-events monitor for your whole watchlist, straight from the primary source.
What it costs
Pay per event: $0.01 per company report that has at least one 8-K in the window. Empty windows and unknown tickers are free. A 25-ticker daily sweep costs a quarter.
The feed is here, and it is one of a small SEC family I maintain — insider trades (Form 4), 13F fund holdings and Form D funding rounds — all reading the same EDGAR primary source, all as clean JSON. Runnable examples are in the cookbook.
If there is an item category you would route differently, or a filter you are missing, tell me in the comments.
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.