# Insider Trading Tracker — Corporate Insider Buys & Sells (`gochujang/insider-trading-tracker`) Actor

Parses SEC Form 4 filings to expose actual insider transactions: CEO/CFO/Director open-market buys & sells, options exercises, awards. Returns ticker, insider name, role, transaction code, shares, price, USD value. Strong quant signal source. Telegram alerts on large trades.

- **URL**: https://apify.com/gochujang/insider-trading-tracker.md
- **Developed by:** [Hojun Lee](https://apify.com/gochujang) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 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

## SEC Form 4 Insider Trading Tracker

> Parses SEC Form 4 filings to expose actual insider transactions: **CEO/CFO/Director open-market buys & sells**, options exercises, awards. Returns ticker, insider name, role, transaction code, shares, price, USD value. **Strong quant signal source.**

---

### Why this exists

When a CEO buys $5M of their own stock on the open market, the stock tends to outperform over the next 12 months. This pattern — and dozens of others — drive a whole class of quant strategies.

The data is free at SEC EDGAR — but parsing it requires:
1. Watching the Form 4 atom feed
2. For each filing, fetching and parsing the underlying ownership XML
3. Decoding transaction codes (P/S/A/M/F/G/D/C/X)

This actor automates the whole pipeline and returns one clean row per transaction.

---

### What you get per row

| Field | Example | Notes |
|---|---|---|
| `issuer_ticker` | `AVR` | |
| `issuer_name` | `Anteris Technologies Global Corp.` | |
| `insider_name` | `McDonnell Matthew` | |
| `is_director` | `false` | |
| `is_officer` | `true` | |
| `officer_title` | `Chief Financial Officer` | |
| `is_ten_percent_owner` | `false` | |
| `txn_date` | `2026-06-05` | transaction date |
| `txn_code` | `P` | SEC transaction code |
| `txn_meaning` | `Open-market purchase` | decoded |
| `acquired_or_disposed` | `A` | A = acquired, D = disposed |
| `shares` | `5,000` | |
| `price_usd` | `2.45` | |
| `value_usd` | `12,250.00` | shares × price |
| `post_txn_shares` | `45,200` | total holdings after txn |
| `filing_url` | `https://www.sec.gov/Archives/...` | |

---

### SEC Transaction Codes (decoded)

| Code | Meaning |
|---|---|
| **P** | Open-market purchase ← strong bullish signal |
| **S** | Open-market sale |
| **A** | Grant / award (compensation) |
| **M** | Option exercise → common stock |
| **F** | Tax-withholding payment |
| **G** | Gift |
| **D** | Disposition to issuer |
| **C** | Conversion of derivative |
| **X** | Exercise of in-the-money derivative |

The `onlyBuys` filter keeps just `A` (acquisitions) — useful for filtering noise.

---

### Use cases

1. **Quant alpha** — Open-market insider buys > $1M historically outperform the S&P by ~4% over 12 months
2. **Cluster signal** — Multiple insiders buying same ticker within 30d = strong conviction
3. **Avoid distribution** — Large CEO/CFO sells often precede negative news
4. **Earnings prep** — Insider trades in the 30 days before earnings are highly informative
5. **Compliance** — Daily snapshot of insider activity for your portfolio companies

---

### Quick start

#### Default — latest 50 Form 4 filings, all transactions
```json
{}
````

#### Only meaningful open-market buys

```json
{
  "countFromFeed": 100,
  "onlyBuys": true,
  "minValueUsd": 100000
}
```

#### Track specific tickers

```json
{
  "tickers": ["AAPL", "NVDA", "TSLA", "MSFT"],
  "minValueUsd": 50000
}
```

#### Alert on $1M+ open-market insider buys

```json
{
  "countFromFeed": 100,
  "onlyBuys": true,
  "alertMinValueUsd": 1000000,
  "telegramBotToken": "YOUR_BOT_TOKEN",
  "telegramChatId": "YOUR_CHAT_ID"
}
```

***

### Pricing

**Pay-Per-Event**: `$0.002 per insider transaction row returned.`

| Run | Transactions | Cost |
|---|---|---|
| 50 filings × ~3 txn each | ~150 | $0.30 |
| Filtered to $1M+ buys | 5–20 | $0.01–0.04 |
| Single ticker watch | 1–5 | $0.002–0.01 |

vs Insider Insights / Verafin at $300+/mo, with the same raw data.

***

### Compliance

The SEC's [Fair Use Policy](https://www.sec.gov/os/accessing-edgar-data) requires a descriptive `User-Agent` with a contact email. Pass `contactEmail` in input to set yours; the default works for testing.

***

### Data source

[SEC EDGAR Form 4 Atom Feed](https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent\&type=4) + per-filing ownership XML (parsed automatically).

***

### Related actors (same author)

- [SEC EDGAR Filing Tracker](https://apify.com/gochujang/sec-edgar-tracker) — Other form types (10-K, 8-K, 13F-HR)
- [Stock Earnings Calendar Tracker](https://apify.com/gochujang/stock-earnings-tracker)
- [Smart Money Wallet Tracker](https://apify.com/gochujang/smart-money-tracker) — On-chain equivalent for crypto

***

### Feedback

A short review helps quant traders find it: [Leave a review on Apify Store](https://apify.com/gochujang/insider-trading-tracker#reviews)

# Actor input Schema

## `countFromFeed` (type: `integer`):

How many of the most recent Form 4 filings to ingest and parse.

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

Only include trades for these issuer tickers. Empty = all.

## `onlyBuys` (type: `boolean`):

If true, drop dispositions (sales, gifts, tax payments).

## `minValueUsd` (type: `integer`):

Drop transactions below this USD value. 0 = no filter.

## `alertMinValueUsd` (type: `integer`):

Telegram alert when any returned trade ≥ this USD value. 0 = disabled.

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

SEC requires an identifying User-Agent with a contact email.

## `telegramBotToken` (type: `string`):

Telegram bot token.

## `telegramChatId` (type: `string`):

Chat ID.

## Actor input object example

```json
{
  "countFromFeed": 50,
  "tickers": [],
  "onlyBuys": false,
  "minValueUsd": 0,
  "alertMinValueUsd": 0,
  "contactEmail": "research@example.com",
  "telegramChatId": ""
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("gochujang/insider-trading-tracker").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("gochujang/insider-trading-tracker").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 '{}' |
apify call gochujang/insider-trading-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=gochujang/insider-trading-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Insider Trading Tracker — Corporate Insider Buys & Sells",
        "description": "Parses SEC Form 4 filings to expose actual insider transactions: CEO/CFO/Director open-market buys & sells, options exercises, awards. Returns ticker, insider name, role, transaction code, shares, price, USD value. Strong quant signal source. Telegram alerts on large trades.",
        "version": "0.1",
        "x-build-id": "Bse3HInrQV9r2zbEh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/gochujang~insider-trading-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-gochujang-insider-trading-tracker",
                "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/gochujang~insider-trading-tracker/runs": {
            "post": {
                "operationId": "runs-sync-gochujang-insider-trading-tracker",
                "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/gochujang~insider-trading-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-gochujang-insider-trading-tracker",
                "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": {
                    "countFromFeed": {
                        "title": "Form 4 entries to scan",
                        "minimum": 10,
                        "maximum": 100,
                        "type": "integer",
                        "description": "How many of the most recent Form 4 filings to ingest and parse.",
                        "default": 50
                    },
                    "tickers": {
                        "title": "Ticker filter",
                        "type": "array",
                        "description": "Only include trades for these issuer tickers. Empty = all.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "onlyBuys": {
                        "title": "Only open-market buys",
                        "type": "boolean",
                        "description": "If true, drop dispositions (sales, gifts, tax payments).",
                        "default": false
                    },
                    "minValueUsd": {
                        "title": "Min trade value (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Drop transactions below this USD value. 0 = no filter.",
                        "default": 0
                    },
                    "alertMinValueUsd": {
                        "title": "Telegram alert threshold (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Telegram alert when any returned trade ≥ this USD value. 0 = disabled.",
                        "default": 0
                    },
                    "contactEmail": {
                        "title": "Contact email",
                        "type": "string",
                        "description": "SEC requires an identifying User-Agent with a contact email.",
                        "default": "research@example.com"
                    },
                    "telegramBotToken": {
                        "title": "Telegram Bot Token",
                        "type": "string",
                        "description": "Telegram bot token."
                    },
                    "telegramChatId": {
                        "title": "Telegram Chat ID",
                        "type": "string",
                        "description": "Chat ID.",
                        "default": ""
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
