# SEC 8-K Scraper — Material Corporate Events (`sourcesauce/sec-8k-events`) Actor

Every US public-company 8-K the day it is filed, classified by SEC item code: material agreements, acquisitions, results of operations, officer and director changes, cybersecurity incidents, bankruptcies. Company-level event records from EDGAR, filterable by item.

- **URL**: https://apify.com/sourcesauce/sec-8k-events.md
- **Developed by:** [Source Sauce](https://apify.com/sourcesauce) (community)
- **Categories:** News, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$20.00 / 1,000 8-k event records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## SEC 8-K Scraper — Material Corporate Events

Every US public-company **8-K** the day it is filed, classified by SEC item code. Straight from
EDGAR, no third-party data source, no API key.

An 8-K is the filing a public company must make when something material happens — a merger, a
bankruptcy, a CEO leaving, a cybersecurity breach, quarterly results. This actor turns the whole
daily flow into structured records you can filter by event type.

### Sample output

| company\_name | form | filing\_date | item\_codes | item\_titles |
|---|---|---|---|---|
| AMGEN INC | 8-K | 2026-07-31 | `1.05` | Material Cybersecurity Incidents |
| ALPHATIME ACQUISITION CORP | 8-K | 2026-07-31 | `5.02` | Departure of Directors or Certain Officers… |
| CHEVRON CORP | 8-K | 2026-07-31 | `2.02`, `9.01` | Results of Operations and Financial Condition… |
| ASHLAND INC. | 8-K | 2026-07-31 | `1.01`, `2.03`, `9.01` | Entry into a Material Definitive Agreement… |

```json
{
  "accession": "0000318154-26-000119",
  "cik": "0000318154",
  "company_name": "AMGEN INC",
  "form": "8-K",
  "filing_date": "2026-07-31",
  "period_of_report": "2026-07-29",
  "item_codes": ["1.05"],
  "item_titles": ["Material Cybersecurity Incidents"],
  "item_count": 1,
  "primary_document": "amgn-20260729.htm",
  "primary_document_url": "https://www.sec.gov/Archives/edgar/data/318154/000031815426000119/amgn-20260729.htm",
  "source_url": "https://www.sec.gov/Archives/edgar/data/318154/000031815426000119/0000318154-26-000119-index.htm",
  "co_registrants": []
}
```

**One filing is one record, even when eight companies file it together.** Utility holding companies
and REITs routinely file a single 8-K under a parent and its subsidiaries, and SEC's index lists each
registrant separately. You get one record and one charge, with the others named:

```json
"company_name": "EXELON CORP",
"cik": "0001109357",
"co_registrants": [
  {"cik": "0000008192", "company_name": "ATLANTIC CITY ELECTRIC CO"},
  {"cik": "0000009466", "company_name": "BALTIMORE GAS & ELECTRIC CO"},
  {"cik": "0000022606", "company_name": "COMMONWEALTH EDISON Co"}
]
```

### What you can filter for

Leave **Item codes** empty for the full daily feed, or narrow to the events you track:

| code | event |
|---|---|
| `1.01` | Entry into a material definitive agreement |
| `1.05` | Material cybersecurity incident |
| `2.01` | Completion of acquisition or disposition of assets |
| `2.02` | Results of operations and financial condition (the earnings release item) |
| `3.01` | Delisting notice / failure to satisfy a listing rule |
| `5.02` | Departure or election of directors; appointment of officers |
| `5.07` | Submission of matters to a vote of security holders |
| `8.01` | Other events |

Measured over a real business day (2026-07-31): **251 filings, 20 distinct item codes, 0 errors,
44 seconds.**

### Who uses this

- **M\&A and credit desks** watching `1.01` / `2.01` for deal announcements the hour they land
- **Security and risk teams** tracking `1.05`, the SEC's mandatory cyber-incident disclosure
- **Earnings-calendar and news products** using `2.02` to know who reported today
- **Governance and executive-search researchers** following `5.02` officer and board changes at the
  company level
- **Quant and event-study pipelines** that need a complete, deduplicated daily event tape

### Common questions

**Does it return the text of the filing?** No — and that is deliberate. You get the classification,
the company, the dates, and a direct link to the filing document on sec.gov. Fetch the body from
`primary_document_url` if you need it.

**Does it return financial figures?** No. Item `2.02` tells you a company reported; the numbers are
in the release itself.

**Does it return names of executives?** No. `5.02` filings are delivered as company-level events
with SEC's own item title. This actor never reads the filing body, so no individual's name, contact
detail, or profile is ever returned. That is enforced by tests, not by intention.

**Am I charged twice when a parent and its subsidiary file the same 8-K?** No. One filing is one
record and one charge; the other registrants are listed in `co_registrants` on that record.

**How far back can it go?** Up to 14 business days per run via **Business days**, or any explicit
range with **Start date** / **End date**. A full business day is roughly 250–440 filings — measured
437 on 2026-07-30 and 251 on 2026-07-31, so the day-to-day spread is real.

**Is this official?** No. This is an **unofficial**, independent tool that reads public EDGAR data.
It is **not affiliated** with, endorsed by, or sponsored by the U.S. Securities and Exchange
Commission.

### Input

| field | notes |
|---|---|
| **Your contact email** | Required. SEC asks automated requests to identify the requester; your address goes to SEC only. |
| Business days | 1–14, walking back from today. Weekends and holidays are skipped automatically. |
| Start date / End date | Explicit range, `YYYY-MM-DD`. Overrides Business days. |
| Item codes | Keep only filings carrying at least one of these. Empty = every material event. |
| Include 8-K/A amendments | On by default. |
| Max records | Cap for a cheap preview. `0` = no cap. |

### Pricing

Pay per record delivered. Failed fetches are pushed as error rows and are **never charged**.

**One filing is charged once.** When a parent and its subsidiaries co-file a single 8-K, SEC's daily
index lists one row per registrant — up to eight for a large utility group. Those rows are the same
document, so they are collapsed into one record naming every registrant, and you are billed once.
Measured across 2026-07-29..31, that is 3–6% of index rows on a typical day.

# Actor input Schema

## `days` (type: `integer`):

How many most-recent EDGAR index days to pull, walking back from today (weekends and holidays are skipped automatically — running on a Sunday returns Friday's filings).

## `startDate` (type: `string`):

Explicit range start, YYYY-MM-DD. Use together with endDate; overrides 'days'. A full business day is roughly 250-350 filings and takes about 45 seconds.

## `endDate` (type: `string`):

Explicit range end, YYYY-MM-DD. Use together with startDate.

## `items` (type: `array`):

Return only filings carrying at least one of these 8-K item codes — e.g. 1.05 material cybersecurity incident, 2.02 results of operations, 5.02 officer and director changes, 1.01 material definitive agreement, 2.01 completed acquisition. Leave empty for every material event.

## `includeAmendments` (type: `boolean`):

Amendments revise an earlier report. Disable for original filings only.

## `maxRecords` (type: `integer`):

Stop after this many records — handy for a cheap preview. 0 = no cap.

## `contactEmail` (type: `string`):

Required by the SEC: EDGAR requests must carry a User-Agent identifying the requester with a contact email. Your email is sent only to the SEC, never stored or shared otherwise. Replace the prefilled address with your own for production use.

## Actor input object example

```json
{
  "days": 1,
  "items": [],
  "includeAmendments": true,
  "maxRecords": 25,
  "contactEmail": "smazing.actors@gmail.com"
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "days": 1,
    "maxRecords": 25,
    "contactEmail": "smazing.actors@gmail.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sourcesauce/sec-8k-events").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "days": 1,
    "maxRecords": 25,
    "contactEmail": "smazing.actors@gmail.com",
}

# Run the Actor and wait for it to finish
run = client.actor("sourcesauce/sec-8k-events").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "days": 1,
  "maxRecords": 25,
  "contactEmail": "smazing.actors@gmail.com"
}' |
apify call sourcesauce/sec-8k-events --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sourcesauce/sec-8k-events",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qfhR0Sr437P4gmOOz/builds/h6ZMesTRWT5drZge1/openapi.json
