# Corporate Catalyst: Material 8-K Plus Insider Buying (`scrapemint/corporate-catalyst-pipeline`) Actor

For each ticker, correlates a material 8-K event with insider open-market buying in the days around it, scores conviction 0 to 100, and tiers events high\_conviction, elevated, or watch. Insiders buying right as a material event files is the signal. Pure EDGAR data, no API keys.

- **URL**: https://apify.com/scrapemint/corporate-catalyst-pipeline.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Business, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## Corporate Catalyst: Material 8-K Plus Insider Buying

For each ticker, this pipeline finds the **material 8-K events** and checks whether **company insiders were buying on the open market** in the days around them. An insider putting their own money in right as the company files a material event is a far stronger signal than either the filing or the trade alone.

Both data sources are pure **SEC EDGAR** (HTTP and JSON, no browser, no proxy, no API keys), so runs are fast and cheap.

### What it does

1. **Material 8-K events.** Pulls recent 8-K filings for your tickers and reads the item codes. Routine filings (exhibits, routine votes) are dropped by default; the ones that move stocks are kept.
2. **Insider buying.** Pulls Form 4 open-market buys and sells (transaction codes P and S) for the same tickers.
3. **Correlate and score.** For each event, counts the insider buys and sells within your window (default 14 days either side), then scores conviction 0 to 100.

### Scoring

The conviction score (0 to 100) is the sum of:

- **Materiality (up to 45).** High-material items (a material agreement, a completed acquisition, a change in control, a restatement) score above medium items (earnings, an executive change, a new obligation), which score above routine.
- **Insider buying (up to 35).** Open-market buy dollar value and the number of distinct buys in the window, with a bonus when buyers outnumber sellers and net buying is positive.
- **Recency (up to 20).** A filing in the last week scores above one from last month.

Tiers:

- **high\_conviction** — a material event with net insider open-market buying in the window and a score of 60 or higher.
- **elevated** — any material event, or any event with insider buying.
- **watch** — a material event with no insider buying.

### Output

One row per material 8-K event:

```json
{
  "ticker": "NVDA",
  "company": "NVIDIA CORP",
  "eventType": "8-K",
  "items": [{ "code": "1.01", "description": "Entry into a material agreement" }],
  "topItem": { "code": "1.01", "description": "Entry into a material agreement" },
  "materiality": "high",
  "reportDate": "2026-06-02",
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/1045810/...",
  "daysAgo": 5,
  "edgeScore": 74,
  "tier": "high_conviction",
  "insider": {
    "windowDays": 14,
    "buyCount": 2,
    "sellCount": 0,
    "buyValueUsd": 1250000,
    "netValueUsd": 1250000,
    "topBuys": [{ "insider": "Jane Director", "role": "Director", "shares": 5000, "price": 125.0, "valueUsd": 625000, "date": "2026-06-03" }]
  },
  "scoredAt": "2026-06-07T10:00:00.000Z"
}
```

### Input

- `tickers` (or `ciks`) — the companies to track.
- `maxAgeHours` — how far back to read 8-K filings (default 30 days).
- `insiderWindowDays` — the window around each event to count insider trades (default 14).
- `materialOnly` — drop routine-only filings (default on).
- `includeInsider`, `maxEventsTotal`, `minScore` — toggles and caps.

### Pricing and combined cost

This actor charges per scored event: **watch $0.04**, **elevated $0.09**, **high\_conviction $0.15**. The first high conviction event per run is free so you can validate output.

This is a pipeline: it runs two child actors, and **each child also bills you for its own per-item usage** (sec-8k-event-tracker per filing, sec-form4-insider-tracker per transaction). Your total for a run is the event charges above **plus** those child charges. Because both children are plain EDGAR calls, the per-run compute is small.

### Notes

- Open-market buys (code P) are the conviction signal. Grants, tax withholding, and option exercises are deliberately excluded because they are not discretionary buys.
- A material event with no insider buying is still useful, so it is kept as a watch row rather than dropped.

# Actor input Schema

## `tickers` (type: `array`):

Stock tickers to track, e.g. \["NVDA", "TSLA", "PLTR"]. Provide tickers or CIKs.

## `ciks` (type: `array`):

SEC CIK numbers, an alternative to tickers.

## `maxAgeHours` (type: `integer`):

Ignore 8-K filings older than this. 720 = 30 days.

## `insiderWindowDays` (type: `integer`):

Count insider buys and sells within this many days on either side of the 8-K event date.

## `materialOnly` (type: `boolean`):

Drop 8-K filings that carry only routine items (such as exhibits or routine votes) and keep the ones that move stocks.

## `includeInsider` (type: `boolean`):

Attach insider open-market buys and sells around each event. Turn off for events only.

## `maxEventsTotal` (type: `integer`):

Cap on events scored, most recent first.

## `minScore` (type: `integer`):

Drop and never charge events scoring below this 0 to 100 threshold. 0 keeps every material event.

## `proxyConfiguration` (type: `object`):

Optional. EDGAR does not need a proxy, so the default is no proxy.

## Actor input object example

```json
{
  "tickers": [
    "NVDA",
    "TSLA",
    "AMD"
  ],
  "ciks": [],
  "maxAgeHours": 720,
  "insiderWindowDays": 14,
  "materialOnly": true,
  "includeInsider": true,
  "maxEventsTotal": 100,
  "minScore": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "tickers": [
        "NVDA",
        "TSLA",
        "AMD"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/corporate-catalyst-pipeline").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 = { "tickers": [
        "NVDA",
        "TSLA",
        "AMD",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/corporate-catalyst-pipeline").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 '{
  "tickers": [
    "NVDA",
    "TSLA",
    "AMD"
  ]
}' |
apify call scrapemint/corporate-catalyst-pipeline --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapemint/corporate-catalyst-pipeline",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mYqfG2dRDd9OLLGvU/builds/8dVrXxgHAWbDgxUuY/openapi.json
