SEC Insider Trading API (Form 4): live + history since 2006 avatar

SEC Insider Trading API (Form 4): live + history since 2006

Pricing

from $1.80 / 1,000 insider transactions

Go to Apify Store
SEC Insider Trading API (Form 4): live + history since 2006

SEC Insider Trading API (Form 4): live + history since 2006

Insider trading data from SEC Form 4: every insider purchase and sale by directors, officers and 10% owners, from official EDGAR filings, 2006 to today. Filter by ticker, CIK, transaction code, role, value and date; adds cluster-buy and cluster-sell signals. Use for insider screens and alerts.

Pricing

from $1.80 / 1,000 insider transactions

Rating

0.0

(0)

Developer

Bosco Labs

Bosco Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 minutes ago

Last modified

Categories

Share

Get every insider purchase and sale reported to the SEC on Form 4, from today's filings back to 2006, as clean JSON rows: who traded (director, CEO, 10% owner), what, when, how many shares, at what price, and how many they hold afterwards. Plus cluster-buy and cluster-sell signals: the moment two or more directors or officers of the same company buy, or sell, their own stock within a few weeks. Filter by ticker, CIK, transaction code, insider role, value and date.

Pricing (pay per event): $0.0018 per transaction row ($1.80 per 1,000) and $0.02 per cluster signal. No start fee. You only pay for rows delivered, a transaction is never charged twice in a scheduled feed, and the Actor stops at your max charge limit.

Data comes straight from the SEC: the official EDGAR Form 4 filings (parsed from their XML, no AI) and the SEC's quarterly "Insider Transactions Data Sets" for the history. No scraping of third-party sites, no logins.

What you get

One row per Form 4 transaction (non-derivative table: common stock and similar). Real output, Chesapeake Energy director Archie Dunham's $14M purchase in March 2015:

{
"record_type": "transaction",
"accession_number": "0000895126-15-000082",
"form": "4",
"issuer_name": "CHESAPEAKE ENERGY CORP",
"issuer_cik": "0000895126",
"ticker": "CHK",
"insider_name": "DUNHAM ARCHIE W",
"insider_cik": "0001192053",
"insider_roles": ["director"],
"officer_title": null,
"owner_count": 1,
"transaction_date": "2015-03-27",
"filing_date": "2015-03-31",
"transaction_code": "P",
"transaction_type": "Open-market or private purchase",
"acquired_disposed": "A",
"shares": 1000000,
"price": 13.98,
"value_usd": 13980000.0,
"shares_owned_after": 2635270,
"ownership": "direct",
"plan_10b5_1": false,
"cluster_insiders": 2,
"cluster_value_usd": 14029455.0,
"in_cluster": true,
"cluster_date": "2015-03-31",
"filing_url": "https://www.sec.gov/Archives/edgar/data/895126/000089512615000082/0000895126-15-000082-index.htm",
"source": "dera",
"source_url": "https://www.sec.gov/files/structureddata/data/insider-transactions-data-sets/2015q1_form345.zip",
"retrieved_at": "2026-11-05T16:15:49+00:00"
}

And the cluster signal it belongs to (record_type: "cluster"):

{
"record_type": "cluster",
"issuer_name": "CHESAPEAKE ENERGY CORP",
"ticker": "CHK",
"filing_date": "2015-03-31",
"first_filing_date": "2015-03-13",
"cluster_insiders": 2,
"cluster_value_usd": 14029455.0,
"cluster_window_days": 30,
"insider_names": ["DUNHAM ARCHIE W", "PIGOTT M. JASON"],
"accession_numbers": ["0000895126-15-000079", "0000895126-15-000082"]
}

Fields: issuer name, CIK and ticker (as filed), insider name, CIK and roles (director, officer, ten_percent_owner, other), officer title, transaction date, filing date, EDGAR acceptance time (live rows), transaction code and its meaning, shares, price, value, shares owned after, direct/indirect ownership, Rule 10b5-1 plan flag, security title, accession number, links to the filing and to the exact SEC file the row came from. Insider names are mandatory public disclosures; addresses are never output.

Cluster buys and cluster sells

A cluster is the classic insider-buying signal: at least 2 different directors or officers of the same company buying in the open market (code P), filed within 30 days, together worth at least $100,000. Amendments, 10% owners and "other" filers don't count, and after a cluster fires, the next one needs new buys. A cluster sell is the same rule for open-market sales (code S), with pre-planned 10b5-1 plan sales left out because they are scheduled in advance. Forms only flag plan sales since April 2023, so older sell clusters can include some. Buys and sells are counted separately. Every purchase and sale row gets:

  • cluster_insiders / cluster_value_usd: how many distinct insiders bought (and for how much) in the window up to that filing date, with no look-ahead, so you can backtest with it;
  • in_cluster / cluster_date: whether the purchase is part of a cluster signal, and which.

Signal rows have cluster_side = buy or sell. Set clusterBuysOnly and/or clusterSellsOnly to get only those trades plus the signal rows; change the window with clusterWindowDays. The counts are null when the window reaches back before the data the run read (for example the newest rows of a short "latest trades" run).

Input

{ "tickers": ["NVDA", "AAPL"], "transactionCodes": ["P", "S"], "minValueUsd": 100000,
"dateFrom": "2024-01-01", "maxResults": 1000 }
FieldMeaning
tickers / ciksCompanies (issuers). Empty = the whole market
transactionCodesDefault P (purchases) and S (sales). Empty = all codes
insiderRolesdirector, officer, ten_percent_owner, other
minValueUsdSkip smaller transactions
dateFrom / dateToFiling date range, back to 2006-01-01
lookbackDaysWithout dateFrom: the last N days. Empty: 90 days with tickers/CIKs, 7 days for the whole market
clusterBuysOnly, clusterSellsOnly, clusterWindowDays, includeClusterSignalsCluster options above
maxResultsNewest first, default 100, up to 200,000 per run
onlyNewSinceLastRunFor schedules: only rows you haven't received with the same filters

Running without input returns the 100 newest open-market purchases and sales of the whole market.

How fresh, how fast

  • Today's filings come from the EDGAR live feed, minutes after the SEC accepts them; each Form 4 is then read from its XML (one request per filing).
  • Recent quarters (after the latest SEC data set, usually the last 1 to 4 months) are read from the EDGAR indexes and the Form 4 XML. For one or a few companies this takes seconds. A whole-market scan reads about 600 filings per trading day at the SEC's rate limit, roughly 1.5 minutes per day of filings; it stops early once maxResults is reached. Completed days are pre-read every night, so a whole-market run (for example 30 days of cluster buys) reads only today's filings one by one and usually finishes in a minute or two, with the same results.
  • History (2006 to the last quarter) comes from the SEC's quarterly data sets, about 10 to 15 seconds per quarter. A whole-market year of cluster buys took under a minute in our test.

Use cases

  • Trading signals and screening: insider buying clusters, large CEO purchases, heavy selling.
  • Backtesting: 20 years of point-in-time insider data with filing dates (no look-ahead).
  • Alerts: schedule hourly or daily with onlyNewSinceLastRun and pipe new rows to Slack, email or a sheet.
  • Due diligence and compliance: every trade of an executive or a company, with the filing link.
  • AI agents: small, typed JSON with a source link on every row.

Use with AI agents (MCP)

Agents can call this Actor as a tool through the Apify MCP server. Add this server URL to your MCP client (Claude, Cursor, VS Code, ...):

https://mcp.apify.com?tools=bosco_labs/sec-insider-trades

It loads this Actor as a tool, plus the tools that read its results (get-actor-run, get-dataset-items). The hosted server signs you in with OAuth, or accepts your Apify token as Authorization: Bearer <APIFY_TOKEN>. On the default server (https://mcp.apify.com), agents can also find this Actor with search-actors and run it with call-actor.

Example prompts this Actor answers:

  • "Did any Tesla insiders buy shares in the last 90 days?"
  • "Show insider cluster buys across the US market this month."
  • "List Nvidia insider sales over $1 million filed in 2024, with links to the Form 4s."

For the first one, the agent passes:

{"tickers": ["TSLA"], "transactionCodes": ["P"]}

Output for agents: stable, typed JSON, one row per Form 4 transaction (and one per cluster signal). Every row has schema_version and a source_url pointing to the exact SEC file the row came from (plus filing_url for the Form 4 itself), so the agent can cite its source.

Cost: $0.0018 per transaction row and $0.02 per cluster signal, billed to the Apify account the MCP server is signed in with.

FAQ

Is this the same data as OpenInsider and similar sites? Same source (SEC Form 4), but you get raw, complete rows through an API, 2006 onward, including amendments (form: "4/A"), joint filings and the 10b5-1 flag.

What about options? Grants, exercises and sales of options and other derivatives sit in the derivative table of Form 4 and are not included. Shares received from an exercise (code M) and sold (code S) are.

Joint filings? One row per transaction; insider_name is the first reporting person, owner_count the number of joint filers, and roles are combined.

Tickers that changed? Tickers are mapped to companies with the SEC's current list. For a delisted or renamed company, pass its CIK, or the old ticker for history (it matches the ticker written in the filings).

Why are some prices empty? Some filings give no price (awards, gifts) or only a footnote; price and value_usd are then null or 0, exactly as filed.

Legal basis? SEC filings are US government public records. See LEGAL.md. This is data, not investment advice.