Skip to content
/insider-module/api/insiders/summary/by-ticker/{ticker}

Get insider sentiment summary for a ticker.

Get insider sentiment summary for a ticker.

5 tokensSince v1.0.0

Why use this

Quickly assess insider sentiment for a stock.

Common use case

Displaying a 'Bullish/Bearish' insider signal on a stock quote page.

Rolled-up insider sentiment for one ticker over a configurable lookback window — the headline summary feeding stock-quote-page 'Insider Sentiment' chips, screener sentiment columns, and at-a-glance Bullish/Bearish badges.

The response carries SIX sentiment scores tuned for different consumer surfaces:

  • sentiment_score (count-based) and value_sentiment_score (value-weighted) are the headline numbers — most dashboards use value_sentiment_score because it weights material trades more heavily than routine RSU vests.
  • csuite_sentiment_score and value_csuite_sentiment_score strip out 10%-owner and director noise — higher signal-to-noise for conviction screens.
  • buy_sell_ratio is a quick-glance chip; Infinity when no sells.

The rule_10b5_1_* fields are TRANSPARENCY metrics — they expose the actual 10b5-1-plan-driven activity REGARDLESS of the exclude_10b5_1 filter so consumers can compare with/without on a single response. Pair this with GET /insider-module/api/insiders/transactions/by-ticker/{ticker} to drill from sentiment chip into the underlying trade tape.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
tickerpathrequiredStock TickerAAPL
filed_at_daysqueryoptional7Look back this many days by FILING date (when the Form 4 landed on EDGAR). Range 1–3650. This is the real lookback control.30
transaction_daysqueryoptionalLook back this many days by TRANSACTION (trade-execution) date. Range 1–365. Omit to bound only by filing date.30
daysqueryoptionalDEPRECATED — use `filed_at_days` and `transaction_days`. When set, it overrides both. Defaults to unset (null).30
is_c_suitequeryoptionalWhen `true`, restrict the summary to C-suite (CEO/CFO/COO/CIO/CTO/General Counsel) activity.true
exclude_10b5_1queryoptionalfalseWhen `true`, exclude pre-planned Rule 10b5-1 trades from the headline totals (the `rule_10b5_1_*` transparency fields are unaffected).true
exclude_cashlessqueryoptionalfalseWhen `true`, exclude cashless option exercises from the totals.true

Response schema

FieldTypeNullableDescription
statusstringnoAlways `success` on 2xx.
dataobjectnoSummaryStatsSchema — single object with rolled-up insider sentiment metrics for the requested ticker over the lookback window. Returns HTTP 404 when the ticker cannot be resolved to an issuer CIK at all.
data.tickerstringnoEcho of the requested ticker (canonical hyphen form post-normalization).
data.company_namestringnoIssuer name. Falls back to `'Unknown'` for issuers missing a CompanyStub row.
data.issuer_cikstringnoIssuer CIK (10-character zero-padded).
data.daysintegeryesEcho of the (deprecated) `days` parameter; null when unset.
data.total_transactionsintegernoCount of qualifying transactions in the window. Excludes 10b5-1 trades when `exclude_10b5_1=true`; excludes cashless-exercise sales when `exclude_cashless=true`.
data.total_buysintegernoCount of buy-side transactions (`acquired_disposed_code='A'`).
data.total_sellsintegernoCount of sell-side transactions (`acquired_disposed_code='D'`).
data.total_buy_valuenumbernoSum of `shares × price_per_share` across all buy transactions, USD. Always non-negative.
data.total_sell_valuenumbernoSum of `shares × price_per_share` across all sell transactions, USD. Always non-negative.
data.total_buy_sharesnumbernoSum of share count across buys (split-adjusted).
data.total_sell_sharesnumbernoSum of share count across sells (split-adjusted).
data.unique_insidersintegernoDistinct count of reporting persons (post-canonical-owner dedup — multiple LLC/trust vehicles of the same beneficial owner count as one).
data.latest_transaction_datestringyesISO `YYYY-MM-DD` of the most recent qualifying transaction. Null when the window is empty.
data.net_sharesnumberno`total_buy_shares - total_sell_shares` (signed). Positive = net buying, negative = net selling.
data.net_valuenumberno`total_buy_value - total_sell_value` (signed USD). The headline conviction-magnitude metric for sentiment dashboards.
data.unique_buyersintegernoDistinct count of insiders who bought in the window. Use the ratio `unique_buyers / unique_insiders` as a buy-breadth metric.
data.unique_sellersintegernoDistinct count of insiders who sold in the window.
data.rule_10b5_1_buy_countintegernoACTUAL count of buy transactions executed under a 10b5-1 plan (TRANSPARENCY metric — NOT affected by the `exclude_10b5_1` filter, so consumers can compare with/without).
data.rule_10b5_1_sell_countintegernoACTUAL count of sell transactions under a 10b5-1 plan (transparency).
data.rule_10b5_1_buy_valuenumbernoACTUAL USD buy value under 10b5-1 plans (transparency).
data.rule_10b5_1_sell_valuenumbernoACTUAL USD sell value under 10b5-1 plans (transparency).
data.csuite_buy_countintegernoCount of buys by C-suite insiders (CEO/CFO/COO/CIO/CTO/General Counsel). The conviction-density metric — high `csuite_buy_count` with positive `csuite_net_value` is the strongest insider-sentiment signal.
data.csuite_sell_countintegernoCount of sells by C-suite insiders.
data.csuite_buy_valuenumbernoUSD buy value by C-suite insiders.
data.csuite_sell_valuenumbernoUSD sell value by C-suite insiders.
data.csuite_net_valuenumberno`csuite_buy_value - csuite_sell_value` (signed USD).
data.officer_buy_valuenumbernoUSD buy value by all officers (broader than C-suite).
data.officer_sell_valuenumbernoUSD sell value by all officers.
data.director_buy_valuenumbernoUSD buy value by directors (board-only insiders).
data.director_sell_valuenumbernoUSD sell value by directors.
data.buy_sell_rationumberno`total_buys / total_sells` (count-based). `Infinity` when there are no sells; `0` when there are no buys. Useful as a quick-glance sentiment chip.
data.sentiment_scorenumbernoCOUNT-based sentiment in [-1, +1]: `(total_buys - total_sells) / (total_buys + total_sells)`. +1 = all buys, -1 = all sells, 0 = balanced or empty window.
data.value_sentiment_scorenumbernoVALUE-based sentiment in [-1, +1]: `(total_buy_value - total_sell_value) / (total_buy_value + total_sell_value)`. Weights large-dollar trades more heavily than the count-based score — preferred for dashboards.
data.csuite_sentiment_scorenumbernoC-suite COUNT-based sentiment in [-1, +1]: `(csuite_buy_count - csuite_sell_count) / total`. Higher signal-to-noise than the all-insiders sentiment because routine 10%-owner unwinds and director RSU vesting are excluded.
data.value_csuite_sentiment_scorenumbernoC-suite VALUE-based sentiment in [-1, +1]. Strongest single sentiment number for dashboards — combine with `csuite_buy_count >= 3` as a 'strong-conviction' threshold.
data.filing_countintegernoDistinct Form 4 filings (one filing can carry multiple transactions). Use the ratio `total_transactions / filing_count` to gauge whether activity comes from many filings or a few multi-line ones.
request_idstringyesPer-request UUID for log correlation.
timestampstringnoISO-8601 UTC response timestamp.

Sample response

·
  • "status": "success"
  • "data":
    • "ticker": "AAPL"
    • "company_name": "APPLE INC"
    • "issuer_cik": "0000320193"
    • "days": null
    • "total_transactions": 47
    • "total_buys": 12
    • "total_sells": 35
    • "total_buy_value": 9854220
    • "total_sell_value": 142865500
    • "total_buy_shares": 58420
    • "total_sell_shares": 815700
    • "unique_insiders": 18
    • "latest_transaction_date": "2026-04-15"
    • "net_shares": -757280
    • "net_value": -133011280
    • "unique_buyers": 4
    • "unique_sellers": 14
    • "rule_10b5_1_buy_count": 0
    • "rule_10b5_1_sell_count": 22
    • "rule_10b5_1_buy_value": 0
    • "rule_10b5_1_sell_value": 89412000
    • "csuite_buy_count": 1
    • "csuite_sell_count": 8
    • "csuite_buy_value": 2021040
    • "csuite_sell_value": 71840500
    • "csuite_net_value": -69819460
    • "officer_buy_value": 2021040
    • "officer_sell_value": 89125000
    • "director_buy_value": 7833180
    • "director_sell_value": 53740500
    • "buy_sell_ratio": 0.342857
    • "sentiment_score": -0.489362
    • "value_sentiment_score": -0.871022
    • "csuite_sentiment_score": -0.777778
    • "value_csuite_sentiment_score": -0.945272
    • "filing_count": 38
    }
  • "request_id": "3a2f1b4c-9c6d-4f7e-8a5b-c1d2e3f4a5b6"
  • "timestamp": "2026-05-02T15:38:09.412Z"
}

Errors

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected server-side failure. Retry with backoff; report if persistent.

Code samples

curl "https://api.finradar.ai/insider-module/api/insiders/summary/by-ticker/{ticker}?api_Token=YOUR_API_KEY" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).