Bosco Labs

Tools › Finance & SEC

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

On Apify Store

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. For investors, fintech apps and AI agents.

Price$0.0018 per transaction row and $0.02 per cluster signal
DomainFinance & SEC
Call itApify API or MCP

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.

Questions agents ask

  • “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.”

Example

Input

{ "tickers": ["NVDA", "AAPL"], "transactionCodes": ["P", "S"], "minValueUsd": 100000,
  "dateFrom": "2024-01-01", "maxResults": 1000 }

Output

{
  "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"
}

What you get

FieldTypeMeaning
schema_versionstringOutput schema version.
record_typestringtransaction = one Form 4 transaction; cluster = one cluster-buy or cluster-sell signal.
cluster_sidestring | nullCluster rows only: buy = insiders buying together, sell = insiders selling together (10b5-1 plan sales excluded).
accession_numberstringSEC accession number of the Form 4 filing.
formstring4, or 4/A for an amendment.
issuer_namestringCompany whose shares were traded, as filed.
issuer_cikstringSEC CIK of the issuer (10 digits).
tickerstring | nullIssuer trading symbol as written in the filing.
insider_namestringReporting person (the first one in a joint filing).
insider_cikstring | nullSEC CIK of the reporting person.
insider_rolesarraydirector, officer, ten_percent_owner, other (combined over all joint filers).
officer_titlestring | nullOfficer title, e.g. Chief Executive Officer.
owner_countintegerNumber of reporting persons on the filing (joint filings > 1).
transaction_datestring | nullDate of the transaction (YYYY-MM-DD).
filing_datestringDate the SEC received the filing (YYYY-MM-DD). For cluster rows: the day the cluster rule was first met.
accepted_atstring | nullEDGAR acceptance time with New York offset (live EDGAR rows only).
transaction_codestringForm 4 code: P purchase, S sale, A award, M option exercise, F tax withholding, G gift, ...
transaction_typestring | nullPlain-English meaning of the transaction code.
acquired_disposedstring | nullA = acquired, D = disposed.
sharesnumber | nullNumber of shares.
pricenumber | nullPrice per share in USD (null when the filing gives none).
value_usdnumber | nullshares x price.
shares_owned_afternumber | nullShares owned after the transaction.
ownershipstring | nulldirect or indirect (e.g. through a trust or fund).
plan_10b5_1booleanMade under a Rule 10b5-1 trading plan (checkbox since 2023, or a footnote saying so).
security_titlestring | nullSecurity, e.g. Common Stock.
cluster_insidersinteger | nullTransactions: distinct directors/officers buying this issuer in the cluster window up to this filing date (null for non-buys or when the window reaches before the data read). Clusters: insiders in the cluster.
cluster_value_usdnumber | nullTotal open-market purchase value of those insiders in the window.
in_clusterboolean | nullPurchases only: part of a cluster signal.
cluster_datestring | nullPurchases in a cluster: the date of that cluster signal.
first_filing_datestring | nullCluster rows: filing date of the first buy in the cluster.
cluster_window_daysinteger | nullCluster rows: the window used.
insider_namesarray | nullCluster rows: the buying insiders.
accession_numbersarray | nullCluster rows: the Form 4 filings in the cluster.
filing_urlstringEDGAR filing index page.
sourcestringedgar-xml (parsed Form 4 XML), dera (SEC Insider Transactions Data Sets) or derived (cluster).
source_urlstring | nullThe exact SEC file the row was read from.
retrieved_atstringUTC time the row was produced.

Coverage

Today's filings from the EDGAR live feed, minutes after the SEC accepts them; recent quarters from the EDGAR indexes and Form 4 XML; history from 2006 from the SEC's quarterly Insider Transactions Data Sets. Non-derivative table only: options and other derivatives are not included.

Use with AI agents (MCP)

Add this URL to your MCP client (Claude, Cursor, VS Code, ...) to load the Actor as a tool through the Apify hosted MCP server. It signs you in with OAuth or accepts Authorization: Bearer <APIFY_TOKEN>.

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

For “Did any Tesla insiders buy shares in the last 90 days?” the agent passes:

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

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.

Or call the Apify API: POST https://api.apify.com/v2/acts/bosco_labs~sec-insider-trades/run-sync-get-dataset-items with the input as JSON body. Cost: $0.0018 per transaction row and $0.02 per cluster signal.

Input fields

FieldTypeMeaning
lookbackDaysintegerUsed only when dateFrom is empty: read filings from this many days back until today, e.g. 30. Empty = 90 days when tickers or ciks are set, 7 days for the whole market. Handy for schedules.
dateFromstringEarliest filing date, YYYY-MM-DD, e.g. "2024-01-01". Data starts 2006-01-01. Empty = lookbackDays days before today (90 for tickers/CIKs, 7 for the whole market).
dateTostringLatest filing date, YYYY-MM-DD, e.g. "2024-12-31". Empty = today, including today's filings from the live EDGAR feed.
clusterBuysOnlybooleantrue = only open-market purchases that are part of a cluster: at least 2 different directors or officers of the same company buying, filed within clusterWindowDays, together worth at least $100,000. Default false. Also reads the window before the date range.
clusterSellsOnlybooleantrue = only open-market sales that are part of a cluster (same rule as cluster buys, for sales). Pre-planned 10b5-1 plan sales are left out (filings flag them since April 2023). Default false. Can be combined with clusterBuysOnly.
includeClusterSignalsbooleantrue (default) = also output one row per cluster signal (record_type = "cluster"): the day a company's insider buying or selling first met the cluster rule, with the insiders and total value. Charged as a separate, higher-priced event. false = transaction rows only.
clusterWindowDaysintegerHow many days of filings count as one cluster of insider buying or selling, e.g. 14. Default 30.
transactionCodesarrayForm 4 transaction codes to return, e.g. ["P"] for open-market purchases only. Default ["P", "S"] (open-market purchases and sales). Pass [] for all codes, including awards (A), tax withholding (F) and option exercises (M).
insiderRolesarrayOnly insiders with one of these roles: director, officer, ten_percent_owner, other, e.g. ["director", "officer"]. Empty = all roles.
minValueUsdintegerMinimum transaction value in USD (shares x price), e.g. 100000. Default 0 = no minimum. Transactions without a price count as 0.
maxResultsintegerMaximum transaction rows, newest first, e.g. 500. Default 100, up to 200,000 per run (split bigger exports by date range). The run stops reading once it has this many, and returns at most this many cluster signals.
onlyNewSinceLastRunbooleantrue = skip (and don't charge for) transactions and signals an earlier run with the same filters already delivered. For scheduled runs. Default false. Remembered in a named key-value store in your account.
tickersarrayOptional: issuer stock tickers, e.g. ["AAPL", "TSLA"]. Leave empty to scan the whole market (the usual use: insider buying anywhere). Mapped to the company's CIK with the SEC's ticker list; history is also matched on the ticker as written in the filing.
ciksarrayIssuer SEC Central Index Keys as digits, leading zeros optional, e.g. ["320193"] for Apple. Use for delisted or renamed companies the SEC's ticker list no longer has. Empty = no CIK filter.

Sources, licence and limits

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.