API Reference

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.

GET/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.

Coverage & freshness
Insider trades are parsed straight from SEC Form 4 filings for our covered issuer universe and kept fresh automatically as new filings land. The current window is the most recent ~2 years of activity per issuer. Rows are attributed by issuer, so a query for a ticker returns trades in that company’s stock — not the unrelated filings of an institution that happens to be a 10% owner of other companies.

Query parameters#

tickerstringrequired
US ticker, e.g. AAPL. Required — the issuer whose insider trades you want.
limitnumberoptional
Maximum number of transactions to return, newest first. Defaults to 10; maximum 1000. A value outside 11000 returns 400.
Current scope: the latest by-ticker feed
The launch endpoint serves the unfiltered latest feed by ticker. Date filters (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#

curlbash
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 | nulloptional
The issuer’s ticker. null when the security’s symbol couldn’t be resolved.
issuerstring | nulloptional
Issuer name as reported on the Form 4.
namestring | nulloptional
The reporting insider's name (the officer, director, or 10% owner).
titlestring | nulloptional
The insider’s role, e.g. Chief Executive Officer or Director.
is_board_directorbooleanrequired
Whether the insider is a member of the board of directors.
transaction_datestring | nulloptional
Date the transaction took place (YYYY-MM-DD).
transaction_typestringrequired
The transaction in plain language, e.g. Open market sale, Open market purchase, Option exercise or derivative conversion, Company grant or award, or Tax or exercise-price share withholding.
transaction_sharesnumber | nulloptional
Number of shares in the transaction (as filed; dispositions may be negative on legacy rows).
transaction_price_per_sharenumber | nulloptional
Price per share. 0 or null on non-priced legs such as option exercises (code M) and grants, matching the as-filed Form 4.
transaction_valuenumber | nulloptional
transaction_shares × transaction_price_per_share in US dollars; 0 or null when the price is zero or absent.
shares_owned_before_transactionnumber | nulloptional
Shares the insider held immediately before the transaction, when derivable.
shares_owned_after_transactionnumber | nulloptional
Shares the insider held immediately after the transaction, as reported.
security_titlestringrequired
The security transacted, e.g. Common Stock, Stock Option (Right to Buy), or Restricted Stock Unit.
filing_datestring | nulloptional
Date the Form 4 was filed with the SEC (YYYY-MM-DD); the sort key.

Example response#

insider-trades.jsonjson
{
  "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"
    }
  ]
}
Option exercises file a zero price
On an option exercise (SEC transaction code M), the derivative leg files a 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.