# 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, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Corporate Catalyst: Material 8-K Plus Insider Buying",
        "description": "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.",
        "version": "0.1",
        "x-build-id": "8dVrXxgHAWbDgxUuY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapemint~corporate-catalyst-pipeline/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapemint-corporate-catalyst-pipeline",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapemint~corporate-catalyst-pipeline/runs": {
            "post": {
                "operationId": "runs-sync-scrapemint-corporate-catalyst-pipeline",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapemint~corporate-catalyst-pipeline/run-sync": {
            "post": {
                "operationId": "run-sync-scrapemint-corporate-catalyst-pipeline",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "tickers": {
                        "title": "Tickers",
                        "type": "array",
                        "description": "Stock tickers to track, e.g. [\"NVDA\", \"TSLA\", \"PLTR\"]. Provide tickers or CIKs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "ciks": {
                        "title": "CIKs (optional)",
                        "type": "array",
                        "description": "SEC CIK numbers, an alternative to tickers.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxAgeHours": {
                        "title": "Max age (hours)",
                        "minimum": 24,
                        "maximum": 8760,
                        "type": "integer",
                        "description": "Ignore 8-K filings older than this. 720 = 30 days.",
                        "default": 720
                    },
                    "insiderWindowDays": {
                        "title": "Insider window (days)",
                        "minimum": 1,
                        "maximum": 90,
                        "type": "integer",
                        "description": "Count insider buys and sells within this many days on either side of the 8-K event date.",
                        "default": 14
                    },
                    "materialOnly": {
                        "title": "Material events only",
                        "type": "boolean",
                        "description": "Drop 8-K filings that carry only routine items (such as exhibits or routine votes) and keep the ones that move stocks.",
                        "default": true
                    },
                    "includeInsider": {
                        "title": "Include insider buying",
                        "type": "boolean",
                        "description": "Attach insider open-market buys and sells around each event. Turn off for events only.",
                        "default": true
                    },
                    "maxEventsTotal": {
                        "title": "Max events to score",
                        "minimum": 1,
                        "maximum": 400,
                        "type": "integer",
                        "description": "Cap on events scored, most recent first.",
                        "default": 100
                    },
                    "minScore": {
                        "title": "Minimum conviction score",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Drop and never charge events scoring below this 0 to 100 threshold. 0 keeps every material event.",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. EDGAR does not need a proxy, so the default is no proxy.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
