# SEC Form 4 Insider Trading Tracker (EDGAR) (`clever_firebox/sec-form4-insider-trades`) Actor

Insider buys and sells from SEC Form 4 filings on EDGAR, one row per transaction: ticker, insider, role, code, shares, price, value, holdings after, 10b5-1 flag. Latest feed, date range or tickers; filters and new-only alerts.

- **URL**: https://apify.com/clever_firebox/sec-form4-insider-trades.md
- **Developed by:** [Agentic Hobby](https://apify.com/clever_firebox) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 insider transaction rows

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 Form 4 Insider Trading Tracker (EDGAR)

Track **insider buying and selling** from **SEC Form 4 filings** in clean, flat rows: one item per transaction, with **ticker, company, insider name, role (CEO/CFO/director/10% owner), transaction code, shares, price, dollar value, shares owned after, direct/indirect ownership and the Rule 10b5-1 flag**. Use it as an **insider trading API**, a daily **insider buying screener**, or a scheduled **Form 4 alert feed**.

Data comes straight from **SEC EDGAR** (official filings), read within the SEC's fair-access rules (declared User-Agent, at most 8 requests/second, below the SEC's 10/s limit). No API key, no third-party data vendor.

### Modes

- **Latest filings:** newest Form 4 and 4/A filings as they hit EDGAR's real-time feed.
- **Date range:** every Form 4 filed on the chosen business days (EDGAR daily index, available after each day closes). About 450 filings per day take about 1 minute.
- **Tickers / CIKs:** all Form 4s for the companies you list (e.g. `AAPL`, `NVDA`, or a CIK).

### Filters

Open-market buys only (code **P**), any transaction codes (S, A, M, F, G…), **minimum $ value**, insider role (Director, Officer, 10% Owner), exclude **10b5-1 planned trades**, include or skip derivative (option/RSU) rows, and **only new since last run** for alerts.

### Input examples

Cluster-buy screener (open-market purchases over $50k filed on a given day):

```json
{"mode": "dateRange", "startDate": "2026-10-16", "endDate": "2026-10-16", "openMarketBuysOnly": true, "minValueUsd": 50000, "maxFilings": 5000}
```

Hourly alert on new filings:

```json
{"mode": "latest", "maxFilings": 300, "onlyNewSinceLastRun": true, "alertStateName": "all-insiders"}
```

Watchlist:

```json
{"mode": "tickers", "tickers": ["AAPL", "NVDA", "TSLA"], "lastNDays": 90}
```

### Output fields

`accessionNumber, formType, periodOfReport, filedDate, acceptedAt (ET), issuerCik, issuerName, ticker, ownerName, ownerRoles, officerTitle, reportingOwners[], rule10b5_1, table (non-derivative|derivative), securityTitle, transactionDate, transactionCode, transactionCodeDescription, acquiredDisposed, shares, pricePerShare, valueUsd, sharesOwnedAfter, directOrIndirect, natureOfOwnership, footnotes[], exercisePrice, exerciseDate, expirationDate, underlyingSecurity, underlyingShares, filingUrl, retrievedAt`

`valueUsd` = shares × reported price. It is empty when the filing reports no price (common for awards and exercises). Check `footnotes` for weighted-average prices. Real samples are in `samples/`.

### Pricing

Pay per transaction row delivered. Filtered-out rows are free. Cap spend with **Max transactions**.

### Notes

Not investment advice. Not affiliated with the SEC. Filings are as reported by filers; amendments (4/A) are separate rows. **Contact email (optional):** the SEC asks automated tools to identify themselves. By default the Actor sends a tool User-Agent that links to this Actor's page. Add `contactEmail` to include your own email in that header (sent to SEC EDGAR only).

# Actor input Schema

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

Optional. The SEC asks automated tools to identify themselves. If set, your email is added to the User-Agent sent to SEC EDGAR only. If blank, the Actor identifies itself with a generic tool User-Agent.

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

Latest: newest Form 4s as they hit EDGAR. Date range: every Form 4 filed on those days (EDGAR daily index, published after each business day). Tickers: filings for the listed companies.

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

Required for Tickers mode (e.g. AAPL, NVDA, 320193). In other modes, acts as a ticker filter.

## `lastNDays` (type: `integer`):

For Date range and Tickers modes when Start date is empty.

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

Optional.

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

Optional, defaults to today.

## `openMarketBuysOnly` (type: `boolean`):

Shortcut for the classic insider-buying signal.

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

E.g. P (purchase), S (sale), A (award), M (option exercise), F (tax withholding), G (gift). Empty = all.

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

Shares × price. Rows without a price are dropped when this is above 0.

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

Empty = all.

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

Options, RSUs, warrants (Table II).

## `exclude10b5_1` (type: `boolean`):

Drop filings that tick the Rule 10b5-1 box (pre-planned trades).

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

Skips filings already processed by earlier runs with the same alert name. Ideal with a schedule.

## `alertStateName` (type: `string`):

Separate memory per saved alert.

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

EDGAR is read at most 8 requests/second (SEC limit 10/s), about 1 request per filing. 100 filings take about 15 seconds.

## `maxResults` (type: `integer`):

You are charged per transaction row delivered.

## Actor input object example

```json
{
  "mode": "latest",
  "lastNDays": 3,
  "openMarketBuysOnly": false,
  "minValueUsd": 0,
  "includeDerivative": true,
  "exclude10b5_1": false,
  "onlyNewSinceLastRun": false,
  "alertStateName": "default",
  "maxFilings": 100,
  "maxResults": 1000
}
```

# Actor output Schema

## `results` (type: `string`):

SEC Form 4 insider transactions, one item per transaction row. Opens the Overview view by default; the dataset contains all fields.

## `runSummary` (type: `string`):

JSON record with counts for this run (RUN_SUMMARY in the default key-value store).

# 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("clever_firebox/sec-form4-insider-trades").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("clever_firebox/sec-form4-insider-trades").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 '{}' |
apify call clever_firebox/sec-form4-insider-trades --silent --output-dataset

```

## MCP server setup

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

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/ewrasbXABI0vhNcHA/builds/pMarPoYJC7cAvlcMP/openapi.json
