# Insider Trading API — SEC Form 4 Buys & Sells (`smartmoney-data/sec-insider-trades-tracker`) Actor

Insider trading data from SEC Form 4 filings: CEO, CFO, director and 10% owner buys and sells for any ticker or the whole market, with dollar value, role, % holding change and Rule 10b5-1 plan flag. Official EDGAR data, pay per result.

- **URL**: https://apify.com/smartmoney-data/sec-insider-trades-tracker.md
- **Developed by:** [SmartMoney Data](https://apify.com/smartmoney-data) (community)
- **Categories:** Business, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 insider transactions

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Insider Trading API — SEC Form 4 Buys & Sells

**See what CEOs, CFOs, directors and 10% owners are buying and selling in their own companies — minutes after they file with the SEC.**

This Actor pulls **SEC Form 4 insider-trading filings** straight from EDGAR and turns the raw XML into clean, one-row-per-trade data: dollar value, insider name and role, shares owned afterwards, % change in their holding, and whether the trade was pre-scheduled under a **Rule 10b5-1 plan**. No API key, no third-party websites, no browser — just official SEC data.

> Part of the **SmartMoney Data** suite: [Insider Trades](https://apify.com/smartmoney-data/sec-insider-trades-tracker) · [Hedge Fund 13F Holdings](https://apify.com/smartmoney-data/sec-13f-hedge-fund-tracker) · [Congress Stock Trades](https://apify.com/smartmoney-data/congress-stock-trades-tracker) · [Form 144 Planned Sales](https://apify.com/smartmoney-data/sec-form-144-planned-insider-sales) · [13D/13G Activist Stakes](https://apify.com/smartmoney-data/sec-13d-13g-activist-stakes)

### Why insider trades?

Insiders sell for many reasons — taxes, diversification, a new house. They **buy** for one: they think the stock is going up. Open-market insider purchases, especially by CEOs/CFOs and "cluster buys" by several insiders at once, are one of the most-studied signals in finance. This Actor gets you that signal as structured data.

### What you can do with it

- 📈 **Trading signals** — alert on CEO open-market buys over $100k, or cluster buying across a watchlist.
- 🔬 **Quant research** — build and backtest insider-sentiment factors.
- 📰 **Newsletters & fintech apps** — power an "insider activity" feed or widget.
- 🧐 **Due diligence** — check insider behaviour before you invest or before earnings.
- 🤖 **AI agents** — answer "Has anyone at NVDA bought stock recently?" with a single tool call.

### Features

- ✅ **Watchlist mode** — any US tickers, any lookback window
- ✅ **Market-wide mode** — the latest Form 4 filings across all companies (great on a 15-minute schedule)
- ✅ **Dollar value** of every trade (shares × price)
- ✅ **Insider role** — CEO, CFO, Director, 10% Owner…
- ✅ **Holding change %** — how much of their stake they bought or sold
- ✅ **10b5-1 plan flag** — separates pre-scheduled sales from discretionary ones
- ✅ **Direct vs indirect ownership** (e.g. "By Family Trust") and trade footnotes
- ✅ **Per-ticker summary** — net $ bought vs sold and number of distinct insiders
- ✅ Filters for transaction type and minimum dollar value — **you only pay for rows you keep**
- ✅ Amended filings (4/A) included; link to the official SEC filing on every row

### How to use it

#### Watchlist: last 30 days of buys and sells

```json
{
  "tickers": ["AAPL", "NVDA", "TSLA"],
  "lookbackDays": 30,
  "transactionCodes": ["P", "S"]
}
```

#### Only meaningful insider purchases

```json
{
  "tickers": ["AMD", "INTC", "MU", "QCOM"],
  "lookbackDays": 90,
  "transactionCodes": ["P"],
  "minValueUsd": 100000
}
```

#### Market-wide real-time feed (schedule every 15 minutes)

```json
{ "latestFilingsCount": 50, "transactionCodes": ["P"] }
```

#### Transaction codes

| Code | Meaning |
|---|---|
| `P` | Open-market purchase |
| `S` | Open-market sale |
| `A` | Grant / award |
| `M` | Option exercise / conversion |
| `F` | Shares withheld for taxes |
| `G` | Gift |
| `D` | Disposition to the issuer |
| `X` | In-the-money option exercise |

Leave `transactionCodes` empty to get everything.

### Output

Each row is one insider transaction. Example (illustrative values):

```json
{
  "ticker": "AAPL",
  "issuerName": "Apple Inc.",
  "insiderName": "Doe Jane",
  "insiderRole": "Chief Financial Officer",
  "isOfficer": true,
  "transactionDate": "2026-09-18",
  "transactionCode": "S",
  "transactionType": "Open-market sale",
  "shares": 10000,
  "pricePerShare": 231.5,
  "valueUsd": 2315000,
  "sharesOwnedAfter": 90000,
  "holdingChangePct": -10,
  "is10b5_1Plan": true,
  "directOrIndirect": "Direct",
  "footnotes": ["The sale reported on this Form 4 was effected pursuant to a Rule 10b5-1 trading plan…"],
  "filingDate": "2026-09-20",
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/…-index.htm"
}
```

Download as **JSON, CSV, Excel, XML or HTML**, or fetch via API.

A **`SUMMARY`** record in the run's key-value store rolls results up per ticker:

```json
{ "AAPL": { "buys": 1, "sells": 4, "buyValueUsd": 115000, "sellValueUsd": 9260000, "netValueUsd": -9145000, "distinctInsiders": 3 } }
```

### Use it from code or an AI agent

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("smartmoney-data/sec-insider-trades-tracker").call(
    run_input={"tickers": ["NVDA"], "transactionCodes": ["P"], "lookbackDays": 90}
)
for trade in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(trade["insiderName"], trade["insiderRole"], trade["valueUsd"])
```

**JavaScript**

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('smartmoney-data/sec-insider-trades-tracker').call({ tickers: ['NVDA'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**AI agents:** add this Actor as a tool through the [Apify MCP server](https://mcp.apify.com) in Claude, Cursor or any MCP client.

**No-code:** schedule it and send results to Google Sheets, Slack, email, Zapier, Make or a webhook with Apify integrations.

### Pricing

**Pay per result** — you're charged for each insider transaction returned, nothing for filings that don't match your filters. See the **Pricing** tab for current rates. Set a *maximum cost per run* and the Actor stops cleanly when it's reached.

### FAQ

**How fresh is the data?**
Insiders must file Form 4 within 2 business days of a trade. The Actor reads EDGAR directly, so filings appear as soon as the SEC publishes them.

**What's a 10b5-1 plan and why does it matter?**
A pre-arranged trading plan adopted in advance. Sales under a plan are scheduled months earlier and usually say little about the insider's current view — the `is10b5_1Plan` flag lets you filter them out.

**Does it cover non-US companies?**
It covers any company that files Form 4 with the SEC — essentially all US-listed issuers.

**Why is `pricePerShare` empty on some rows?**
Grants, awards and gifts often have no price. Those rows have `valueUsd: null`.

**Is this legal to use?**
Yes. Form 4 filings are public records published by the SEC for exactly this purpose. The Actor follows the SEC's fair-access rules (≤10 requests/second, identified User-Agent).

### Related Actors

- 🏦 [Hedge Fund 13F Holdings Tracker](https://apify.com/smartmoney-data/sec-13f-hedge-fund-tracker) — what Berkshire, Pershing Square & co. bought and sold last quarter.
- 🏛️ [Congress Stock Trades Tracker](https://apify.com/smartmoney-data/congress-stock-trades-tracker) — stock trades by US Senators and Representatives.
- 🚨 [Form 144 Planned Insider Sales](https://apify.com/smartmoney-data/sec-form-144-planned-insider-sales) — executives and directors who have filed to sell, before the sale happens.
- 🎯 [13D & 13G Activist Stakes](https://apify.com/smartmoney-data/sec-13d-13g-activist-stakes) — activist funds and 5%+ owners, with their stated purpose.

### Support

Found a bug or need a feature? Open an issue on the **Issues** tab or email **smartmoney-data@googlegroups.com** — we usually reply within a day.

*Data is provided for informational purposes only and is not investment advice.*

# Actor input Schema

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

US stock tickers to track (e.g. AAPL, NVDA). Leave empty to pull the latest Form 4 filings market-wide.

## `lookbackDays` (type: `integer`):

Only include filings filed within this many days (ticker mode).

## `maxFilingsPerTicker` (type: `integer`):

Upper bound on Form 4 filings parsed for each ticker.

## `latestFilingsCount` (type: `integer`):

When no tickers are given, how many of the most recent Form 4 filings on EDGAR to parse.

## `transactionCodes` (type: `array`):

Keep only these SEC transaction codes. P = open-market purchase, S = open-market sale, A = award/grant, M = option exercise, F = tax withholding, G = gift. Leave empty for all.

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

Skip transactions whose shares × price is below this value. 0 keeps everything.

## `includeDerivative` (type: `boolean`):

Also output options/RSU (derivative table) transactions.

## `secUserAgent` (type: `string`):

The SEC asks automated clients to identify themselves as 'Company Name email@domain.com'. Put your own contact here for heavy use.

## Actor input object example

```json
{
  "tickers": [
    "AAPL",
    "NVDA",
    "TSLA"
  ],
  "lookbackDays": 30,
  "maxFilingsPerTicker": 50,
  "latestFilingsCount": 40,
  "transactionCodes": [
    "P",
    "S"
  ],
  "minValueUsd": 0,
  "includeDerivative": false,
  "secUserAgent": "SmartMoney Data Insider Tracker smartmoney-data@googlegroups.com"
}
```

# Actor output Schema

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

// Run the Actor and wait for it to finish
const run = await client.actor("smartmoney-data/sec-insider-trades-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 = { "tickers": [
        "AAPL",
        "NVDA",
        "TSLA",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("smartmoney-data/sec-insider-trades-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": [
    "AAPL",
    "NVDA",
    "TSLA"
  ]
}' |
apify call smartmoney-data/sec-insider-trades-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,smartmoney-data/sec-insider-trades-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/kRGWaNk8xr1bPgeP0/builds/1wdA9DQ7fKzZjInpn/openapi.json
