Measure 8-K material event activity by item
Count 8-K filings per item and per month with the SecFeed API to see when companies report earnings, votes, agreements and leadership changes.
Every Form 8-K declares one or more items: 1.01 for a material agreement, 2.02 for earnings, 5.02 for an officer or director change, and so on. Counting filings by item over time shows the rhythm of corporate disclosure: earnings cluster after quarter end, shareholder votes cluster in proxy season, and some items (like 8.01 "other events") stay steady all year.
This tutorial builds that activity table from the SecFeed 8-K events API with one request per item and month.
How the 8-K events API counts filings
GET /v1/form-8k returns 8-K filings classified by item. Each response carries total, the number of filings matching the filter, so asking for size=1 is enough when you only need counts. Filters:
item: an item number such as2.02startDate,endDate: filing date range, inclusivecik: optional, to restrict to one company
A filing with several items (for example 2.02 plus 9.01) is counted once under each item it reports.
Build the table
import os
import requests
BASE = "https://secfeedapi.com"
HEADERS = {"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"}
ITEMS = {"1.01": "Material agreement", "2.02": "Earnings results", "5.02": "Officer or director change",
"5.07": "Shareholder vote", "7.01": "Reg FD disclosure", "8.01": "Other events"}
MONTHS = [("2026-06-01", "2026-06-30"), ("2026-07-01", "2026-07-31"), ("2026-08-01", "2026-08-31"), ("2026-09-01", "2026-09-30")]
def count(item, start, end):
r = requests.get(f"{BASE}/v1/form-8k", params={"item": item, "startDate": start, "endDate": end, "size": 1},
headers=HEADERS, timeout=120)
r.raise_for_status()
return r.json()["total"]
print(f"{'Item':<6}{'Description':<28}" + "".join(f"{s[:7]:>10}" for s, _ in MONTHS))
for item, label in ITEMS.items():
row = [count(item, s, e) for s, e in MONTHS]
print(f"{item:<6}{label:<28}" + "".join(f"{n:>10,}" for n in row))
Output:
Item Description 2026-06 2026-07 2026-08 2026-09
1.01 Material agreement 990 831 820 805
2.02 Earnings results 243 1,410 2,365 240
5.02 Officer or director change 1,085 900 841 821
5.07 Shareholder vote 1,416 231 217 215
7.01 Reg FD disclosure 1,230 1,350 1,539 1,194
8.01 Other events 1,503 1,377 1,361 1,295
Reading the numbers
A few patterns stand out:
- Item 2.02 earnings swings from about 240 filings in June and September to 1,410 in July and 2,365 in August. That is the second quarter reporting season: most calendar year companies furnish their earnings release under Item 2.02 within a few weeks of quarter end.
- Item 5.07 shareholder votes peaks in June (1,416) and falls to about 215 a month afterwards. Companies must report vote results within four business days of the meeting, and most annual meetings happen in the spring.
- Item 1.01, 5.02, 7.01 and 8.01 stay in a band of roughly 800 to 1,500 a month. Agreements, leadership changes and Regulation FD disclosures happen all year.
Narrow it down
The same request works for a single company or sector. Add cik to count one filer's events, or swap the month list for weeks to watch an earnings season build up day by day. To read what was disclosed, call the item feeds with text, for example /v1/form-8k/earnings-results or /v1/form-8k/executive-changes, which return the item text extracted from each filing.
Next steps
- 8-K Events API: every 8-K classified by item
- Earnings results feed (Item 2.02)
- Form 8-K dataset with filings per year since 1993
- Track Item 4.02 restatements
- API reference