Insider Trades
Corporate-insider transactions — buys, sells, option exercises, grants, and gifts by a company's officers, directors, and 10% owners — parsed directly from SEC Form 4 filings. Pass a ticker and get that issuer's insider trades, newest transaction first.
/v1/insider-trades?ticker={ticker}Provide a ticker and get the issuer’s insider transactions under an insider_trades array, ordered newest first. Each row is one transaction line from a Form 4 — a single insider’s buy, sale, option exercise, award, or gift in that security.
Query parameters#
tickerstringrequiredAAPL. Required — the issuer whose insider trades you want.limitnumberoptional10; maximum 1000. A value outside 1–1000 returns 400.filing_date, transaction_date and their range variants) and the by-insider mode (reporting_owner_cik) are not yet available — a request that includes any of them returns 400. They are planned; until then, fetch the latest feed with limit and filter client-side.Example request#
curl "https://api.focusalpha.ai/v1/insider-trades?ticker=AAPL&limit=10" \
-H "Authorization: Bearer $FOCUSALPHA_API_KEY"Response#
Returns the echoed ticker and an insider_trades array, ordered by filing date (newest first). Each element is one Form 4 transaction line.
insider_trade#
tickerstring | nulloptionalnull when the security’s symbol couldn’t be resolved.issuerstring | nulloptionalnamestring | nulloptionaltitlestring | nulloptionalChief Executive Officer or Director.is_board_directorbooleanrequiredtransaction_datestring | nulloptionalYYYY-MM-DD).transaction_typestringrequiredOpen market sale, Open market purchase, Option exercise or derivative conversion, Company grant or award, or Tax or exercise-price share withholding.transaction_sharesnumber | nulloptionaltransaction_price_per_sharenumber | nulloptional0 or null on non-priced legs such as option exercises (code M) and grants, matching the as-filed Form 4.transaction_valuenumber | nulloptionaltransaction_shares × transaction_price_per_share in US dollars; 0 or null when the price is zero or absent.shares_owned_before_transactionnumber | nulloptionalshares_owned_after_transactionnumber | nulloptionalsecurity_titlestringrequiredCommon Stock, Stock Option (Right to Buy), or Restricted Stock Unit.filing_datestring | nulloptionalYYYY-MM-DD); the sort key.Example response#
{
"ticker": "AAPL",
"insider_trades": [
{
"ticker": "AAPL",
"issuer": "Apple Inc.",
"name": "Jennifer Newstead",
"title": "SVP, GC and Secretary",
"is_board_director": false,
"transaction_date": "2026-06-15",
"transaction_type": "Tax or exercise-price share withholding",
"transaction_shares": 16238,
"transaction_price_per_share": 296.42,
"transaction_value": 4813267.96,
"shares_owned_before_transaction": 57784,
"shares_owned_after_transaction": 41546,
"security_title": "Common Stock",
"filing_date": "2026-06-15"
}
]
}transaction_price_per_share of 0 — the strike price belongs to the paired option grant, not the exercise. We pass the as-filed values through, so option-exercise and award legs correctly show 0/null price and value rather than a fabricated number.Errors#
Statuses: 400 (missing ticker, an out-of-range limit, or a request using a not-yet-available filter / the by-insider mode), 401 (bad or missing API key), 402 (per-minute rate limit or monthly quota exceeded — upgrade your plan), and 503 (data temporarily unavailable; includes a Retry-After header — retry shortly). A known ticker with no insider trades in the window is a successful 200 with an empty insider_trades array. Errors use the bare { error, message } envelope — see Errors.