
Tagging 8-K disclosures with AI: corporate events, labelled by what actually happened
A SEC 8-K API that labels what actually happened. Query filings by event type (CEO departures, cybersecurity incidents, M&A), with source-cited tags.

rian

Introducing
Mar 6, 2026
TLDR: Massive has five new endpoints (currently in beta, open to all account types) for working with SEC filings programmatically.
Corporate SEC filings contain critical information for financial analysis, but accessing this data programmatically presents three distinct challenges.
First, the discovery problem. SEC EDGAR hosts millions of filings across dozens of form types. Finding the specific filings you need, whether a company's most recent 10-K, its last five 8-K current reports, or all filings within a date range, requires navigating EDGAR's search interface or building custom scrapers against its full-text search and index files.
Second, the parsing problem. Once you find the filing, extracting usable text from it is difficult. Risk Factors sections are often thousands of words per company, embedded in XBRL with nested tags, inconsistent formatting, and presentation markup. 8-K current reports mix frontmatter, exhibit references, and the actual Items section content. Raw SEC filings are structured for regulatory compliance, not programmatic access. Building and maintaining custom parsers is time-consuming and brittle.
Third, the comparison problem. Even with clean text, systematic analysis is difficult because companies use different terminology for the same underlying risks. One company discloses "foreign exchange rate fluctuations," another mentions "currency volatility," and a third describes "FX exposure risk." Without standardized categories, cross-company comparison and aggregation become impractical.
We've released five endpoints that address all three challenges: filing metadata search, clean text extraction for 10-K and 8-K filings, structured risk categorization, and taxonomy reference data.
Access Requirements: All five endpoints are currently in beta and can be accessed by any account type. This may change in the future.
You can find a demo that covers all five endpoints, including cross-company risk comparison and year-over-year timeline diffing, in the Massive community repo.
The EDGAR Filing Index endpoint provides a searchable index across all SEC form types. Filter by ticker, CIK, form type, and filing date to find specific disclosures. Each result includes filing metadata and a direct link back to the original SEC document.
Endpoint:
What you get:
import requests url = "https://api.massive.com/stocks/filings/vX/index" params = { "ticker": "AAPL", "form_type": "10-K", "limit": 5, "sort": "filing_date.desc" } response = requests.get(url, params=params, headers={"Authorization": f"Bearer {API_KEY}"}) filings = response.json()["results"] for filing in filings: print(f"{filing['filing_date']} {filing['form_type']} {filing['issuer_name']}") print(f" {filing['filing_url']}")
Print Output
2025-11-01 10-K Apple Inc. https://www.sec.gov/Archives/edgar/data/320193/000032019325000091/aapl-20250927.htm 2024-11-01 10-K Apple Inc. https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm
This endpoint is useful as a starting point for any filing analysis workflow. Identify the filings you need, then use the 10-K or 8-K text endpoints to retrieve their parsed content.
Full JSON Response Example
{ "results": [ { "accession_number": "0000320193-25-000091", "cik": "320193", "ticker": "AAPL", "form_type": "10-K", "filing_date": "2025-11-01", "issuer_name": "Apple Inc.", "filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000091/aapl-20250927.htm" }, { "accession_number": "0000320193-24-000123", "cik": "320193", "ticker": "AAPL", "form_type": "10-K", "filing_date": "2024-11-01", "issuer_name": "Apple Inc.", "filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm" } ], "status": "OK", "request_id": "a1b2c3d4e5f6", "next_url": null }
Documentation: EDGAR Filing Index
SEC filings are notoriously difficult to parse correctly. This endpoint handles the edge cases, format changes, and XBRL complexity so you can focus on building your AI pipeline rather than data acquisition.
The AI-Ready 10-K Data endpoint provides parsed sections from 10-K filings as clean plain text. Currently supported sections are Item 1A (Risk Factors) and Item 1 (Business).
Endpoint:
What you get:
import requests url = "https://api.massive.com/stocks/filings/10-K/vX/sections" params = { "ticker": "AAPL", "section": "risk_factors", "limit": 1, "sort": "filing_date.desc" } response = requests.get(url, params=params, headers={"Authorization": f"Bearer {API_KEY}"}) data = response.json()["results"][0] print(f"Filing date: {data['filing_date']}") print(f"Text length: {len(data['text'])} characters")
Print Output
Filing date: 2025-11-01 Text length: 42817 characters
This raw text is useful for building custom NLP pipelines, feeding sections into LLMs for summarization or analysis, or any workflow where you need filing content without the parsing overhead.
Full JSON Response Example
{ "results": [ { "cik": "320193", "ticker": "AAPL", "filing_date": "2025-11-01", "period_end": "2025-09-27", "section": "risk_factors", "text": "The Company's business, reputation, results of operations, financial condition, and stock price can be affected by a number of factors, whether currently known or unknown, including those described below. When any one or more of these risks materialize from time to time, the Company's business, reputation, results of operations, financial condition, and stock price can be materially and adversely affected. The following discussion of risk factors contains forward-looking statements. These risk factors may be important to understanding other statements in this Form 10-K.\n\nMacroeconomic and Industry Risks\n\nThe Company's operations and performance depend significantly on global and regional economic conditions and adverse economic conditions can materially adversely affect the Company's business, results of operations, and financial condition.\n\nThe Company has international operations with sales outside the U.S. representing a majority of the Company's total net sales. In addition, the Company's global supply chain is large and complex and a majority of the Company's supplier facilities, including most final assembly facilities, are located outside the U.S. As a result, the Company's operations and performance depend significantly on global and regional economic conditions...", "filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000091/aapl-20250927.htm" } ], "status": "OK", "request_id": "b2c3d4e5f6a7", "next_url": null }
Documentation: AI-Ready 10-K Data
8-K filings report material events: earnings announcements, acquisitions, executive changes, and other developments that public companies must disclose. Like 10-K filings, the raw documents are difficult to parse programmatically. This endpoint returns only the Items section content as clean text, excluding frontmatter, exhibit references, and boilerplate.
Endpoint:
What you get:
import requests url = "https://api.massive.com/stocks/filings/8-K/vX/text" params = { "ticker": "AAPL", "limit": 3, "sort": "filing_date.desc" } response = requests.get(url, params=params, headers={"Authorization": f"Bearer {API_KEY}"}) reports = response.json()["results"] for report in reports: print(f"Filed: {report['filing_date']}") print(f"Text preview: {report['items_text'][:200]}...") print()
Print Output
Filed: 2026-01-30 Text preview: Item 2.02 Results of Operations and Financial Condition. On January 30, 2026, Apple Inc. ("Apple") issued a press release regarding Apple's financial results for its fiscal first quarter ended Dece... Filed: 2025-10-30 Text preview: Item 2.02 Results of Operations and Financial Condition.
This is useful for monitoring material events across a watchlist of tickers, building event-driven trading signals, or feeding current reports into LLM pipelines for summarization and analysis.
Full JSON Response Example
{ "results": [ { "accession_number": "0000320193-26-000008", "cik": "320193", "ticker": "AAPL", "form_type": "8-K", "filing_date": "2026-01-30", "items_text": "Item 2.02 Results of Operations and Financial Condition.\n\nOn January 30, 2026, Apple Inc. (\"Apple\") issued a press release regarding Apple's financial results for its fiscal first quarter ended December 28, 2025. A copy of Apple's press release is attached hereto as Exhibit 99.1 and is incorporated herein by reference.\n\nThe information contained in this Current Report shall not be deemed \"filed\" for purposes of Section 18 of the Securities Exchange Act of 1934, as amended (the \"Exchange Act\"), or incorporated by reference in any filing under the Securities Act of 1933, as amended, or the Exchange Act, except as shall be expressly set forth by specific reference in such a filing.\n\nItem 9.01 Financial Statements and Exhibits.\n\n(d) Exhibits.\n\nExhibit 99.1 Press release issued by Apple Inc. on January 30, 2026.", "filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000008/aapl-20260130.htm" }, { "accession_number": "0000320193-25-000091", "cik": "320193", "ticker": "AAPL", "form_type": "8-K", "filing_date": "2025-10-30", "items_text": "Item 2.02 Results of Operations and Financial Condition.\n\nOn October 30, 2025, Apple Inc. (\"Apple\") issued a press release regarding Apple's financial results for its fiscal fourth quarter ended September 27, 2025. A copy of Apple's press release is attached hereto as Exhibit 99.1 and is incorporated herein by reference.\n\nThe information contained in this Current Report shall not be deemed \"filed\" for purposes of Section 18 of the Securities Exchange Act of 1934, as amended (the \"Exchange Act\"), or incorporated by reference in any filing under the Securities Act of 1933, as amended, or the Exchange Act, except as shall be expressly set forth by specific reference in such a filing.\n\nItem 9.01 Financial Statements and Exhibits.\n\n(d) Exhibits.\n\nExhibit 99.1 Press release issued by Apple Inc. on October 30, 2025.", "filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000088/aapl-20251030.htm" } ], "status": "OK", "request_id": "c3d4e5f6a7b8", "next_url": null }
Documentation: 8-K Text
The Risk Factors endpoint provides extracted risk factors mapped to a standardized three-tier taxonomy. Each risk includes its classification and supporting text from the original filing.
Endpoint:
The hierarchy consists of 7 primary categories, 28 secondary categories, and 140 tertiary categories. Example:
Financial & Market (Primary) ├── Market & Investment (Secondary) │ ├── Interest rate and yield curve risk (Tertiary) │ ├── Market volatility and economic conditions (Tertiary) │ └── Credit risk and asset quality (Tertiary) ├── Credit & Liquidity (Secondary) │ ├── Access to capital and financing (Tertiary) │ ├── Debt levels and financial obligations (Tertiary) │ └── Liquidity and working capital management (Tertiary)
Each tertiary category includes a detailed description defining its scope. For example:
Interest rate and yield curve risk: Risk from changes in interest rates or yield curves that can affect borrowing costs, investment returns, asset values, and overall financial performance. This includes risks from both rising and falling interest rate environments and their impact on various aspects of the business.
What you get:
import requests url = "https://api.massive.com/stocks/filings/vX/risk-factors" params = {"ticker": "JPM", "limit": 100} response = requests.get(url, params=params, headers={"Authorization": f"Bearer {API_KEY}"}) risks = response.json()["results"] # Group by primary category from collections import defaultdict by_category = defaultdict(list) for risk in risks: by_category[risk["primary_category"]].append(risk["tertiary_category"]) print(f"Financial & Market risks: {len(by_category['financial_and_market'])}") print(f"Operational & Execution risks: {len(by_category['operational_and_execution'])}")
Print Output
Financial & Market risks: 8 Operational & Execution risks: 5
The same taxonomy applies to every company, enabling systematic comparison. Query for all companies with "Interest rate and yield curve risk" and get consistent, comparable results across the entire dataset.
This data could be useful for cross-company risk comparisons (identify all companies in a sector with specific risk exposures), temporal analysis (track how a company's risk profile changes year over year), and much more.
Full JSON Response Example
{ "results": [ { "cik": "19617", "ticker": "JPM", "filing_date": "2025-02-18", "primary_category": "financial_and_market", "secondary_category": "market_and_investment", "tertiary_category": "interest_rate_and_yield_curve_risk", "supporting_text": "JPMorgan Chase's results of operations are significantly affected by interest rate levels and fluctuations. Changes in interest rates can affect the volume of certain loan originations, the value of assets and liabilities, and the revenue from interest rate products. The Firm's net interest income is affected by changes in the level, slope, and shape of the yield curve." }, { "cik": "19617", "ticker": "JPM", "filing_date": "2025-02-18", "primary_category": "financial_and_market", "secondary_category": "credit_and_liquidity", "tertiary_category": "credit_risk_and_asset_quality", "supporting_text": "The Firm is exposed to credit risk through its lending, derivatives, and investment activities. The Firm's credit exposure includes consumer and wholesale loans, lending-related commitments, derivatives, and investment securities. Deterioration in the credit quality of the Firm's borrowers and counterparties could result in significant losses." } ], "status": "OK", "request_id": "d4e5f6a7b8c9", "next_url": "https://api.massive.com/stocks/filings/vX/risk-factors?cursor=eyJsYXN0X2lkIjo1fQ" }
Documentation: Risk Factors Endpoint
For complete methodology details, statistical validation, and industry clustering analysis, see the full research paper: Taxonomy-Aligned Risk Extraction from 10-K Filings with Autonomous Improvement Using LLMs.
The Risk Categories endpoint provides API access to the complete taxonomy with descriptions for all categories. This is useful to know what risks are in the taxonomy and what you can filter for.
Endpoint:
What you get:
import requests url = "https://api.massive.com/stocks/taxonomies/vX/risk-factors" params = {"primary_category": "financial_and_market", "limit": 999} response = requests.get(url, params=params, headers={"Authorization": f"Bearer {API_KEY}"}) categories = response.json()["results"] for cat in categories: print(f"{cat['tertiary_category']}: {cat['description'][:100]}...")
Print Output
interest_rate_and_yield_curve_risk: Risk from changes in interest rates or yield curves that can affect borrowing costs, investment re... market_volatility_and_economic_conditions: Risk from broad market fluctuations, economic downturns, or volatile market conditions that ...
Full JSON Response Example
{ "results": [ { "taxonomy": 1, "primary_category": "financial_and_market", "secondary_category": "market_and_investment", "tertiary_category": "interest_rate_and_yield_curve_risk", "description": "Risk from changes in interest rates or yield curves that can affect borrowing costs, investment returns, asset values, and overall financial performance. This includes risks from both rising and falling interest rate environments and their impact on various aspects of the business." }, { "taxonomy": 1, "primary_category": "financial_and_market", "secondary_category": "market_and_investment", "tertiary_category": "market_volatility_and_economic_conditions", "description": "Risk from broad market fluctuations, economic downturns, or volatile market conditions that can adversely affect investment portfolios, trading revenues, asset valuations, and overall business performance." } ], "status": "OK", "request_id": "e5f6a7b8c9d0", "next_url": null }
Documentation: Risk Categories Taxonomy
External validation confirms the taxonomy captures economically meaningful structure. Companies in the same industry (sharing 2-digit SIC codes) exhibit 63% higher risk profile similarity than cross-industry pairs (Cohen's d=1.06, p<0.001 across four statistical tests). This clustering emerges despite the taxonomy mapping having no access to industry information.
Banking sector analysis demonstrates sector-specific patterns:
The taxonomy naturally captures what makes banks economically distinctive (interest rate sensitivity, regulatory capital requirements) while filtering out manufacturing and supply chain concerns that dominate other industries.
Risk similarity also predicts industry membership with increasing accuracy at finer granularities: AUC 0.733 for 2-digit SIC codes (broad sectors), 0.798 for 3-digit, and 0.822 for 4-digit (specific industries). The taxonomy captures fine-grained industry characteristics, not merely coarse sectoral patterns.
For more details, see the research paper!
The demo is a single
You can find instructions on running the demo in the README file.
API Documentation:
Research Paper:
Taxonomy-Aligned Risk Extraction from 10-K Filings with Autonomous Improvement Using LLMs
The examples, demos, and outputs produced with this project are generated by artificial intelligence and large language models. You acknowledge that this project and any outputs are provided "AS IS", may not always be accurate and may contain material inaccuracies even if they appear accurate because of their level of detail or specificity, outputs may not be error free, accurate, current, complete, or operate as you intended, you should not rely on any outputs or actions without independently confirming their accuracy, and any outputs should not be treated as financial or legal advice. You remain responsible for verifying the accuracy, suitability, and legality of any output before relying on it.

Rian Dolphin
rian
See what's happening at Massive

A SEC 8-K API that labels what actually happened. Query filings by event type (CEO departures, cybersecurity incidents, M&A), with source-cited tags.

rian

In this post, we'll walk through how Earnings Watcher built its analytics layer on Massive's options chains and snapshots, why Fair Market Value anchors its scanner, and how the same API pattern extended from options into post-earnings drift analysis on the underlying equity.

alexnovotny

Massive's LULD WebSocket channel streams Limit Up/Limit Down price band updates, halts, and resumptions for every NMS stock in real time.
editor