# SEC Insider Trading Scraper: Form 4 Buys and Sells (`parselab/sec-insider-trading-scraper`) Actor

Track insider buying and selling from SEC Form 4 filings by ticker or across all companies. Get every transaction with insider role, shares, price, value, holdings change, 10b5-1 plan flag and days to file. Company summaries show net buying, unique buyers and cluster buying.

- **URL**: https://apify.com/parselab/sec-insider-trading-scraper.md
- **Developed by:** [ParseLab](https://apify.com/parselab) (community)
- **Categories:** Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $16.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Scraper: Form 4 Buys and Sells

This insider trading scraper reads the Form 4 filings that company officers, directors and large shareholders must file with the SEC, and returns every transaction as a clean row. Follow a list of tickers, or leave the company empty to scan all insider filings of a date range. Ask for transactions, or ask for a company summary that shows the net insider buying and selling of the period.

A transaction row carries more than shares and price. You get the insider's name and role, the transaction type in plain words (open market purchase, open market sale, grant, tax withholding, gift, option exercise), the value in dollars, the holdings before and after and the percent of the holdings that changed, how many days the insider took to file, whether the trade was made under a 10b5-1 trading plan, and the footnotes that explain unusual prices or trusts. Company summaries add unique buyers, unique sellers, the net value, the biggest buy and the biggest sale, and a cluster buying flag when three or more insiders bought in the same period.

Investors, analysts, journalists, newsletter writers and quant researchers use it to follow insider sentiment and to build alerts.

### What can you do with this insider trading scraper?

- Get every insider buy and sell of a stock in the last 90 days
- Find open market purchases above 100,000 dollars across all companies on one day
- See which companies have cluster buying, meaning several insiders buying together
- Compare net insider buying and selling across a watchlist
- Separate real purchases from grants, tax withholding and option exercises
- Check whether a sale was planned under a 10b5-1 trading plan
- See how much of their holdings an executive sold
- Read the footnotes of a trade to understand trusts and weighted average prices
- Get only new transactions since your last run for a daily alert
- Export insider trading data to CSV or Excel

### What data can you extract from Form 4 filings?

| Mode | One row is | Highlights |
|---|---|---|
| Insider transactions | One transaction | Company, ticker, insider name and role, officer title, filing and transaction dates, days to file, security, transaction code and type, open market buy and sale flags, shares, price, value, acquired or disposed, holdings before and after, holdings change percent, direct or indirect ownership, 10b5-1 plan flag, footnotes, filing link, plus exercise and expiry details for options |
| Company summary | One company | Filings read, open market buys and sells with shares and value, unique buyers and sellers, net value, buy to sell ratio, sentiment, cluster buying flag, biggest buy and sale, names of insiders who bought |

### How to scrape insider trading

1. Choose **Insider transactions** or **Company summary**.
2. Enter one or more tickers, or leave them empty to scan all companies.
3. Set the filing dates. The default is the last 90 days.
4. Optionally keep only open market trades, a minimum value or certain roles.
5. Set **Max Items** and click **Start**.
6. Export the dataset as CSV, Excel or from the Apify console.

### Input example

```json
{
  "mode": "transactions",
  "tickers": ["NVDA", "TSLA"],
  "openMarketOnly": true,
  "dateFrom": "2026-06-01",
  "minValueUsd": 100000,
  "maxItems": 100
}
```

### Transaction output example

```json
{
  "ticker": "NVDA",
  "issuerName": "NVIDIA CORP",
  "ownerName": "Teter Timothy S.",
  "ownerRoles": ["Officer"],
  "officerTitle": "EVP, General Counsel and Sec",
  "filingDate": "2026-09-23",
  "transactionDate": "2026-09-21",
  "daysToFile": 2,
  "transactionCode": "S",
  "transactionType": "Open market sale",
  "isOpenMarketSale": true,
  "shares": 12483,
  "pricePerShare": 222.1932,
  "valueUsd": 2773637.72,
  "sharesOwnedBefore": 2718120,
  "sharesOwnedAfter": 2705637,
  "holdingsChangePct": -0.5,
  "ownershipType": "indirect",
  "indirectOwnershipNature": "By Trust",
  "tenB51Plan": true
}
```

### Company summary output example

```json
{
  "ticker": "AAPL",
  "issuerName": "Apple Inc.",
  "periodFrom": "2026-08-15",
  "periodTo": "2026-09-29",
  "openMarketBuys": 0,
  "openMarketSells": 6,
  "openMarketSellValueUsd": 3092906.45,
  "uniqueSellers": 1,
  "netOpenMarketValueUsd": -3092906.45,
  "clusterBuying": false,
  "sentiment": "net selling",
  "biggestSell": { "owner": "Newstead Jennifer", "date": "2026-09-22", "shares": 2399, "valueUsd": 815803.94 }
}
```

### How much does it cost to scrape insider trading?

You pay per result: $22 per 1,000 rows plus a tiny start fee. The free plan returns up to 10 rows per run. A company summary is one row per company, so a watchlist of 50 companies costs a few cents.

### Tips for better results

- Turn on open market only to see purchases and sales. Grants, tax withholding and option exercises are routine and say little about what insiders think.
- Insider sales made under a 10b5-1 plan are planned in advance. A purchase is usually a stronger signal than a sale.
- Scanning all companies for one day reads thousands of filings and takes a few minutes. Use a minimum value or open market only to keep the dataset short, and set a limit on the filings to read.
- For a daily alert, schedule the Actor every day and turn on the option to return only new transactions.
- Forms are filed within two business days, so recent trades can take a day to appear.

### Who uses insider trading data?

- **Individual investors** watch cluster buying and large purchases by executives.
- **Analysts and funds** add insider sentiment to their screens.
- **Journalists** report on executive stock sales.
- **Developers** power alerts, dashboards and bots.

### Automate and connect

Schedule the Actor every day with your watchlist and send the new transactions to Google Sheets, Slack, Zapier, Make or n8n, or trigger a webhook when a run ends.

### FAQ

**Do I need an SEC account?**
No. The Actor works without any login.

**Does it cover Form 3 and Form 5?**
No. It covers Form 4 and its amendments, which report the transactions.

**Why are some prices zero?**
Grants and awards have no purchase price. Their value is zero.

**How far back can I search?**
Use the filing dates to choose the period. Long periods for many companies mean many filings to read, so start with recent months.

**Is this financial advice?**
No. Insider trading data is public information. Use it as one input among many.

### Legal note

This Actor collects information that is publicly visible on the website. Check the source site's terms and your local rules before using the data. Nothing here is financial advice.

### Support

Missing a field or found a bug? Open an issue from the Actor page.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000.

## `mode` (type: `string`):

Transactions returns one row per insider transaction reported on Form 4. Company summary returns one row per company with the net insider buying and selling of the period, unique buyers and a cluster buying flag.

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

Tickers of the companies to follow, for example AAPL, NVDA, TSLA. Leave empty together with the company IDs to scan all companies in the date range.

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

SEC company numbers, for companies that have no ticker or when you prefer the number, for example 320193.

## `dateFrom` (type: `string`):

First filing date, YYYY-MM-DD. The default is 90 days ago.

## `dateTo` (type: `string`):

Last filing date, YYYY-MM-DD. The default is today.

## `openMarketOnly` (type: `boolean`):

Keep only purchases and sales made on the market. This removes grants, tax withholding, gifts and option exercises, which say little about what insiders think of the stock.

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

Keep only these codes, for example P for purchase, S for sale, A for grant, M for option exercise, F for tax withholding, G for gift.

## `minValueUsd` (type: `number`):

Keep only transactions worth at least this many dollars (shares times price).

## `minShares` (type: `number`):

Keep only transactions of at least this many shares.

## `onlyNewSinceLastRun` (type: `boolean`):

Skip transactions you already received in earlier runs of this Actor. Useful when you schedule the Actor every day. The list of seen filings is stored in your account.

## `roles` (type: `array`):

Keep only these roles: officer, director or tenPercentOwner.

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

Include stock options, restricted stock units and other derivative transactions. Turn it off to see only common stock transactions.

## `maxFilingsToScan` (type: `integer`):

Upper limit of filings read in one run. Reading all insider filings of a busy day takes several minutes.

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

The SEC asks automated tools to identify themselves. Your email is sent only to the SEC in the request header. It is optional.

## Actor input object example

```json
{
  "maxItems": 10,
  "mode": "transactions",
  "tickers": [
    "AAPL"
  ],
  "openMarketOnly": false,
  "onlyNewSinceLastRun": false,
  "includeDerivative": true,
  "maxFilingsToScan": 3000
}
```

# Actor output Schema

## `overview` (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 = {
    "maxItems": 10,
    "tickers": [
        "AAPL"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("parselab/sec-insider-trading-scraper").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 = {
    "maxItems": 10,
    "tickers": ["AAPL"],
}

# Run the Actor and wait for it to finish
run = client.actor("parselab/sec-insider-trading-scraper").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 '{
  "maxItems": 10,
  "tickers": [
    "AAPL"
  ]
}' |
apify call parselab/sec-insider-trading-scraper --silent --output-dataset

```

## MCP server setup

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

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/MZHFovndisRnWbeiz/builds/uHeOWZHGDbcNKVmCW/openapi.json
