# SEC Insider Trading Tracker (Form 4) - Insider Buys & Sells API (`mossgreen_zed/sec-insider-trading-form4`) Actor

Track insider buying and selling from official SEC EDGAR Form 4 filings. By ticker, CIK or market-wide by date. One clean row per trade: insider, role, buy/sell, shares, price, $ value, holdings after, 10b5-1 flag. No API key. $1.50 per 1,000 transactions.

- **URL**: https://apify.com/mossgreen_zed/sec-insider-trading-form4.md
- **Developed by:** [Joshua Temko](https://apify.com/mossgreen_zed) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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

## SEC Insider Trading Tracker (Form 4): Insider Buys & Sells API

**Track what CEOs, directors and 10% owners are buying and selling, straight from official SEC EDGAR Form 4 filings.** Search by ticker, by company CIK, or across the whole market for a date range. Each trade becomes **one clean row**: the insider, their role and title, buy or sell, shares, price, **dollar value**, shares held afterwards, direct or indirect ownership, whether it was a **Rule 10b5-1 plan** trade, and the footnotes.

There's no API key, no login and no scraping of paywalled sites. The data comes from the SEC's free public endpoints, and the Actor stays within the SEC's fair-access rules (a declared User-Agent and at most 8 requests per second).

### Who uses it

- **Investors and traders.** Spot cluster buying and big open-market purchases (code **P**). These are the insider signals people watch most.
- **Fintech apps, newsletters and Discord or Telegram bots.** Schedule it daily and push new insider buys to your users.
- **Quants and researchers.** Build insider-sentiment features from structured data instead of parsing XML.
- **IR and compliance teams.** Watch insider activity at your own company or its peers.

### Input examples

Recent insider trades at specific companies:

```json
{ "tickers": ["AAPL", "NVDA", "TSLA"], "daysBack": 60 }
```

Every open-market buy or sell over $50k, market-wide, in the last 3 days:

```json
{ "daysBack": 3, "onlyOpenMarket": true, "minValueUsd": 50000, "maxFilings": 2000 }
```

| Field | Description |
|---|---|
| `tickers` / `ciks` | Companies to track. Leave both empty for **market-wide** mode. |
| `daysBack`, or `startDate` / `endDate` | The filing date range. |
| `onlyOpenMarket` | Keeps only open-market purchases (P) and sales (S). |
| `transactionCodes` | Any SEC codes you choose, e.g. `P`, `S`, `A`, `M`, `F`, `G`. |
| `minValueUsd` | Minimum trade value (shares × price). |
| `ownerRoles` | Director, Officer, 10% Owner or Other. |
| `includeDerivative` | Includes options, RSUs and warrants from Table II (default `true`). |
| `includeAmendments` | Includes Form 4/A amendments (default `true`). |
| `maxFilings`, `maxTransactions` | Caps on how much to fetch. |
| `userAgent` | Your name and email for the SEC (recommended for heavy use). |

### Output (one row per transaction)

This is a real row from a local test run on 2026-10-30:

```json
{
  "filingDate": "2026-10-29",
  "ticker": "AAPL",
  "issuerName": "Apple Inc.",
  "ownerName": "Newstead Jennifer",
  "ownerRoles": ["Officer"],
  "officerTitle": "SVP, GC and Government Affairs",
  "transactionDate": "2026-10-27",
  "transactionCode": "S",
  "transactionType": "Open market or private sale",
  "acquiredDisposed": "Disposed",
  "shares": 2399.0,
  "pricePerShare": 343.36,
  "valueUsd": 823720.64,
  "sharesOwnedAfter": 32396.0,
  "directOrIndirect": "Direct",
  "is10b51Plan": true,
  "isDerivative": false,
  "footnotes": ["This transaction was made pursuant to a Rule 10b5-1 trading plan adopted by the reporting person on May 5, 2026."],
  "accessionNumber": "0001140361-26-041201",
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000114036126041201/0001140361-26-041201-index.htm",
  "xmlUrl": "https://www.sec.gov/Archives/edgar/data/320193/000114036126041201/form4.xml"
}
```

The largest open-market trades market-wide from the same run (filed Oct 27–29, 2026, at least $50k): Berkshire Hathaway selling DVA ($69.0M), Control Empresarial selling TALO ($22.0M), Richard Fairbank selling COF ($9.5M), and Nippon Life **buying** CRBG ($6.3M).

### Pricing (pay per event)

**$1.50 per 1,000 transactions** ($0.0015 per `transaction` event), plus Apify's tiny start fee. Filters are applied **before** you're charged, so you only pay for rows you keep. Insider-data APIs usually cost $50–200 a month, and similar Actors charge $2–5 per 1,000.

### Speed

3 tickers over 60 days (37 filings, 106 transactions) took about 7 seconds. Market-wide, 308 filings took about 40 seconds.

### FAQ

**How fresh is it?** Companies file Form 4 within 2 business days of a trade, and EDGAR publishes it right away. Market-wide mode uses EDGAR full-text search, which can lag a few hours behind. Ticker mode reads each company's live submissions feed.

**What do the transaction codes mean?** Each row has a plain-English `transactionType`. P is a purchase, S a sale, A an award, M an option exercise, F tax withholding and G a gift.

**Why is the price empty on some rows?** Grants (A) and RSU vestings (M) often have no price, so `valueUsd` is `null` for them.

**Is this investment advice?** No. It's public SEC data, provided as-is.

**Can I schedule it?** Yes. Use Apify Schedules (e.g. every day at 7pm ET) together with webhooks, Slack, email, Google Sheets, Make, Zapier or n8n integrations, or call it from an AI agent through Apify MCP.

# Actor input Schema

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

US tickers to track, e.g. AAPL, NVDA, TSLA. Leave tickers AND CIKs empty to get every Form 4 filed market-wide in the date range.

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

Optional SEC Central Index Keys (issuer CIKs), for companies without a ticker.

## `daysBack` (type: `integer`):

How many days of filings to fetch, counted back from today. Ignored when Start date is set.

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

Optional, YYYY-MM-DD. Overrides Days back.

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

Optional, YYYY-MM-DD. Defaults to today.

## `onlyOpenMarket` (type: `boolean`):

Keep only real open-market purchases (P) and sales (S), the trades investors usually care about. Removes grants, option exercises, tax withholding and gifts.

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

Optional SEC transaction codes to keep, e.g. P (purchase), S (sale), A (award), M (option exercise), F (tax withholding), G (gift). Empty = all.

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

Skip trades smaller than this dollar value (shares x price). 0 = no minimum.

## `ownerRoles` (type: `array`):

Keep only trades by these insider types. Empty = all.

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

Include options/RSU/warrant rows from Table II.

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

Also include amended Form 4 filings.

## `maxFilings` (type: `integer`):

Maximum number of Form 4 filings to read (each filing has 1+ transactions).

## `maxTransactions` (type: `integer`):

Stop after this many output rows (0 = no limit).

## `userAgent` (type: `string`):

SEC asks automated tools to identify themselves with a name and contact email, e.g. 'Acme Research jane@acme.com'. A default is used if empty.

## `requestsPerSecond` (type: `integer`):

SEC fair-access limit is 10 req/s; this Actor never exceeds 8.

## Actor input object example

```json
{
  "tickers": [
    "AAPL",
    "NVDA",
    "TSLA"
  ],
  "ciks": [],
  "daysBack": 30,
  "onlyOpenMarket": false,
  "transactionCodes": [],
  "minValueUsd": 0,
  "ownerRoles": [],
  "includeDerivative": true,
  "includeAmendments": true,
  "maxFilings": 200,
  "maxTransactions": 0,
  "requestsPerSecond": 8
}
```

# Actor output Schema

## `results` (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("mossgreen_zed/sec-insider-trading-form4").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("mossgreen_zed/sec-insider-trading-form4").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 mossgreen_zed/sec-insider-trading-form4 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mossgreen_zed/sec-insider-trading-form4"
        }
    }
}
```

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/eTIQmgjfFdivt0byv/builds/dnaNDxA41rhnzTFt3/openapi.json
