Skip to main content
ℹ️ Informational only. This series shows how to automate SEC EDGAR data retrieval. Nothing here is investment or legal advice. Always consult a qualified professional before making investment decisions.
📢 PART 1 OF 5

8-K Alert System — Know About Material Events Within Minutes

Real-Time Material Event Monitoring · Free EDGAR RSS Feed

What is an 8-K?

8-Ks are filed within 4 business days of any "material event." The most important items:

  • Item 1.01: Entry into material agreement (M&A, major contracts)
  • Item 1.03: Bankruptcy / receivership
  • Item 2.02: Results of operations (earnings releases)
  • Item 4.02: Non-reliance on financial statements (restatements)
  • Item 5.02: Director/officer departure or appointment (CEO changes)
  • Item 8.01: Other material events

Architecture

The 8-K monitoring system fetches the EDGAR RSS feed every 15 minutes, filters by your watchlist CIK numbers, extracts key filing metadata, summarizes with an LLM, and sends notifications:

EDGAR RSS feed → OpenClaw HEARTBEAT (every 15 min) → filter by watchlist + item number → LLM summarization → notification

HEARTBEAT Configuration

Here's the OpenClaw HEARTBEAT config to monitor 8-Ks on a recurring schedule:

name: edgar_8k_monitor
schedule: "*/15 * * * *"
steps:
  - fetch:
      url: "https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent&type=8-K&dateb=&owner=include&count=40&search_text=&output=atom"
      headers:
        User-Agent: "YourName your@email.com"
  - filter:
      field: cik
      values: "{{ watchlist_ciks }}"
  - llm:
      prompt: |
        Summarize this 8-K filing in 3 bullet points.
        Focus on: what happened, what item number, material impact.
        Filing content: {{ content }}
  - notify:
      channel: email
      subject: "🚨 8-K Alert: {{ company_name }} — {{ item_description }}"

Watchlist Configuration

Define your watchlist with ticker symbols and CIK numbers:

watchlist:
  - ticker: AAPL
    cik: "0000320193"
  - ticker: MSFT
    cik: "0000789019"
  - ticker: NVDA
    cik: "0001045810"

Python: Fetching Latest 8-Ks for a CIK

This Python function retrieves recent 8-K filings for a specific company CIK:

import httpx

def get_recent_8ks(cik: str, count: int = 10):
    padded = cik.zfill(10)
    url = f"https://data.sec.gov/submissions/CIK{padded}.json"
    headers = {"User-Agent": "YourName your@email.com"}
    r = httpx.get(url, headers=headers)
    data = r.json()
    filings = data["filings"]["recent"]
    results = []
    for i, form in enumerate(filings["form"]):
        if form == "8-K":
            results.append({
                "date": filings["filingDate"][i],
                "accession": filings["accessionNumber"][i],
                "description": filings["primaryDocument"][i]
            })
        if len(results) >= count:
            break
    return results

Noise Filtering

Not all 8-Ks are equal. Filter by item number to prioritize signal over noise:

Item Signal Strength Notes
2.02 (Earnings) ⭐⭐⭐⭐⭐ Highest priority — material financial results
5.02 (Executive Changes) ⭐⭐⭐⭐⭐ CEO/CFO departure or appointment
1.01 (Material Agreement) ⭐⭐⭐⭐ M&A, major contracts, partnerships
1.03 (Bankruptcy) ⭐⭐⭐⭐ Extreme events — always material
4.02 (Restatement) ⭐⭐⭐⭐ Accounting corrections — review immediately
7.01 / 8.01 (Other) Often routine press releases — low signal

FAQ

Q: How do I find a company's CIK number?

A: Search at sec.gov/cgi-bin/browse-edgar or hit data.sec.gov/submissions/CIK{padded}.json directly with a ticker symbol search.

Q: Can I monitor all 8-Ks, not just my watchlist?

A: Yes, use the full RSS feed and filter by sector using SIC codes. Note: This generates high volume — be ready to filter or you'll be overwhelmed.

Q: What User-Agent is required?

A: SEC requires identifying yourself: "CompanyName contact@email.com" format. This helps them track usage patterns and contact you if needed.