API Reference

Insider Trading API

Track SEC Form 4 insider trading filings — buys, sells, awards, and exercises by company officers, directors, and 10%+ shareholders. Includes cluster buy detection where multiple insiders buy the same stock.

Base: /api/v1/insiderPRO (free preview available)3 endpoints

Overview

The Insider Trading API provides access to SEC Form 4 filing data — the mandatory disclosures that company insiders (officers, directors, and 10%+ shareholders) must file within 2 business days of any stock transaction. This is the same data that services like OpenInsider, Finviz Elite, and GuruFocus charge $70-200/month for.

Use cases:

  • Track insider buying and selling across your portfolio or the entire market
  • Detect cluster buy signals — when 3+ insiders buy the same stock within a short window (a historically bullish signal)
  • Filter by transaction type (open market purchases vs. awards/exercises) for cleaner signals
  • Identify 10b5-1 pre-planned trades (less informative) vs. discretionary trades (more informative)
  • Build quantitative strategies based on insider flow data
  • Cross-reference insider activity with institutional flows (13F) and news sentiment

Transaction types: BUY (open market purchase), SELL (open market sale), EXERCISE (option/derivative exercise), AWARD (grant from company), GIFT, OTHER.

Insider relationships: Each filer is classified as OFFICER, DIRECTOR, TEN_PCT_OWNER, or OTHER. A person can hold multiple roles simultaneously (e.g., both officer and director) — the officer, director, and tenPctOwner boolean fields capture this.

Access: All endpoints require a PRO subscription for full data. Free/unauthenticated users see a limited preview (top 5 results for activity/trades, top 3 for cluster buys) with isPreview: true in the response.


GET /activity

Returns market-wide insider activity aggregated by ticker, split into top insider buys and top insider sells by total dollar value. Each entry shows how many insiders traded, total shares, total value, and the most recent insider name.

Authentication: PRO required. Free users receive a preview of the top 5 results per direction.

Parameters:

Parameter Type Required Default Description
lookbackDays integer No 90 Number of days to look back. Must be between 1 and 365 (inclusive) — returns 400 otherwise

Example Request:

curl -H "X-SentiSense-API-Key: ss_live_YOUR_KEY" \
  "https://app.sentisense.ai/api/v1/insider/activity?lookbackDays=90"
from sentisense import SentiSenseClient

client = SentiSenseClient(api_key="ss_live_YOUR_KEY")
activity = client.get_insider_activity(lookback_days=90)
for buy in activity["buys"]:
    print(f"{buy['ticker']}: {buy['insiderCount']} insiders bought ${buy['totalValue']:,.0f}")

Response Schema:

Field Type Description
buys array Stocks with notable insider buying (see summary object below)
sells array Stocks with notable insider selling (see summary object below)

Activity summary object:

Field Type Description
ticker string Stock ticker symbol
companyName string Company name
tradeCount int Number of individual transactions
insiderCount int Number of distinct insiders who traded
totalShares long Total shares traded
totalValue long Total dollar value of trades
latestDate string Date of most recent transaction
latestInsider string Name of most recent insider
latestTitle string Title/role of most recent insider

Example Response (PRO):

{
  "buys": [
    {
      "ticker": "JPM",
      "companyName": "JPMorgan Chase & Co",
      "tradeCount": 8,
      "insiderCount": 5,
      "totalShares": 125000,
      "totalValue": 28750000,
      "latestDate": "2026-03-15",
      "latestInsider": "Jamie Dimon",
      "latestTitle": "Chairman & CEO"
    }
  ],
  "sells": [
    {
      "ticker": "TSLA",
      "companyName": "Tesla, Inc.",
      "tradeCount": 3,
      "insiderCount": 2,
      "totalShares": 50000,
      "totalValue": 12500000,
      "latestDate": "2026-03-14",
      "latestInsider": "Vaibhav Taneja",
      "latestTitle": "CFO"
    }
  ]
}

Preview Response (Free/Unauthenticated):

{
  "isPreview": true,
  "previewReason": "PRO_REQUIRED",
  "data": {
    "buys": [ "... top 5 results ..." ],
    "sells": [ "... top 5 results ..." ]
  }
}

GET /trades/{ticker}

Returns individual insider transactions for a specific stock, sorted newest-first. Each transaction includes the insider's name, title, transaction type, shares, price, value, security description, and whether it was a pre-planned 10b5-1 trade.

Authentication: PRO required. Free users receive a preview of the top 5 transactions.

Parameters:

Parameter Type Required Default Description
ticker path Yes - Stock ticker symbol (e.g., AAPL)
lookbackDays integer No 90 Number of days to look back. Must be between 1 and 365 (inclusive) — returns 400 otherwise

Example Request:

curl -H "X-SentiSense-API-Key: ss_live_YOUR_KEY" \
  "https://app.sentisense.ai/api/v1/insider/trades/AAPL?lookbackDays=90"
client = SentiSenseClient(api_key="ss_live_YOUR_KEY")
trades = client.get_insider_trades("AAPL", lookback_days=90)
for t in trades:
    print(f"{t['transactionDate']} {t['insiderName']} {t['transactionType']} {t['sharesTransacted']} @ ${t['pricePerShare']}")

Response Schema (array of trade objects):

Field Type Description
ticker string Stock ticker symbol
companyName string Company name
insiderName string Name of the insider (e.g., "Tim Cook")
insiderTitle string Role/title (e.g., "Chief Executive Officer")
insiderRelation string OFFICER, DIRECTOR, TEN_PCT_OWNER, or OTHER
officer boolean Is the filer an officer?
director boolean Is the filer a director?
tenPctOwner boolean Is the filer a 10%+ shareholder?
transactionDate string Date of the transaction (ISO format)
filedDate string Date filed with SEC
transactionCode string SEC transaction code: P (purchase), S (sale), A (award), M (exercise), G (gift), F (sell-to-cover), etc.
transactionType string Simplified: BUY, SELL, EXERCISE, AWARD, GIFT, OTHER
securityTitle string Security description (e.g., "Common Stock", "Class C Google Stock Units")
sharesTransacted long Number of shares traded
pricePerShare double Price per share (null for awards at $0)
totalValue long Total dollar value of the transaction
sharesOwnedAfter long Shares owned after this transaction
directOwnership boolean Direct (true) vs indirect (false) ownership
rule10b51 boolean Whether this trade was under a confirmed Rule 10b5-1 pre-planned trading plan (false when parsing was ambiguous)

Example Response:

[
  {
    "ticker": "AAPL",
    "companyName": "Apple Inc",
    "insiderName": "Tim Cook",
    "insiderTitle": "Chief Executive Officer",
    "insiderRelation": "OFFICER",
    "officer": true,
    "director": true,
    "tenPctOwner": false,
    "transactionDate": "2026-03-10",
    "filedDate": "2026-03-12",
    "transactionCode": "S",
    "transactionType": "SELL",
    "securityTitle": "Common Stock",
    "sharesTransacted": 50000,
    "pricePerShare": 235.50,
    "totalValue": 11775000,
    "sharesOwnedAfter": 3200000,
    "directOwnership": true,
    "rule10b51": true
  }
]

GET /cluster-buys

Returns cluster buy signals — stocks where 3 or more distinct insiders purchased shares within the lookback period. Academic research shows insider buying clusters are one of the strongest predictive signals for future stock returns.

Authentication: PRO required. Free users receive a preview of the top 3 signals.

Parameters:

Parameter Type Required Default Description
lookbackDays integer No 90 Number of days to look back. Must be between 1 and 365 (inclusive) — returns 400 otherwise

Example Request:

curl -H "X-SentiSense-API-Key: ss_live_YOUR_KEY" \
  "https://app.sentisense.ai/api/v1/insider/cluster-buys?lookbackDays=90"
client = SentiSenseClient(api_key="ss_live_YOUR_KEY")
clusters = client.get_insider_cluster_buys(lookback_days=90)
for c in clusters:
    print(f"{c['ticker']}: {c['insiderCount']} insiders bought ${c['totalValue']:,.0f} worth")

Response Schema (array of cluster buy objects):

Field Type Description
ticker string Stock ticker symbol
companyName string Company name
insiderCount int Number of distinct insiders who bought (always >= 3)
tradeCount int Total number of buy transactions
totalShares long Total shares purchased across all insiders
totalValue long Total dollar value of all purchases
firstBuyDate string Earliest buy date in the cluster
lastBuyDate string Most recent buy date in the cluster

Example Response:

[
  {
    "ticker": "BAC",
    "companyName": "Bank of America Corp",
    "insiderCount": 5,
    "tradeCount": 8,
    "totalShares": 250000,
    "totalValue": 10500000,
    "firstBuyDate": "2026-02-01",
    "lastBuyDate": "2026-03-12"
  },
  {
    "ticker": "WFC",
    "companyName": "Wells Fargo & Co",
    "insiderCount": 4,
    "tradeCount": 6,
    "totalShares": 180000,
    "totalValue": 12600000,
    "firstBuyDate": "2026-01-15",
    "lastBuyDate": "2026-03-08"
  }
]

Try It

Test endpoints directly from your browser. Paste your API key once — it's saved locally and shared across all widgets. Get a free key

GET/api/v1/insider/activity

Market-wide insider buys and sells aggregated by ticker

Try It
curl -H "X-SentiSense-API-Key: ssk_YOUR_KEY" \ "https://app.sentisense.ai/api/v1/insider/activity"
Enter your API key to send requests

GET/api/v1/insider/trades/{ticker}

Insider transactions for a specific stock

Try It
curl -H "X-SentiSense-API-Key: ssk_YOUR_KEY" \ "https://app.sentisense.ai/api/v1/insider/trades/AAPL"
Enter your API key to send requests

GET/api/v1/insider/cluster-buys

Cluster buy signals (3+ insiders buying same stock)

Try It
curl -H "X-SentiSense-API-Key: ssk_YOUR_KEY" \ "https://app.sentisense.ai/api/v1/insider/cluster-buys"
Enter your API key to send requests