SEC Insider Trading API (Form 4): live + history since 2006
Pricing
from $1.80 / 1,000 insider transactions
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 minutes ago
Last modified
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 }
| Field | Meaning |
|---|---|
tickers / ciks | Companies (issuers). Empty = the whole market |
transactionCodes | Default P (purchases) and S (sales). Empty = all codes |
insiderRoles | director, officer, ten_percent_owner, other |
minValueUsd | Skip smaller transactions |
dateFrom / dateTo | Filing date range, back to 2006-01-01 |
lookbackDays | Without dateFrom: the last N days. Empty: 90 days with tickers/CIKs, 7 days for the whole market |
clusterBuysOnly, clusterSellsOnly, clusterWindowDays, includeClusterSignals | Cluster options above |
maxResults | Newest first, default 100, up to 200,000 per run |
onlyNewSinceLastRun | For 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
maxResultsis 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
onlyNewSinceLastRunand 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.