/insider-module/api/insiders/summary/by-ticker/{ticker}Get insider sentiment summary for a ticker.
Get insider sentiment summary for a ticker.
Why use this
Common use case
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) andvalue_sentiment_score(value-weighted) are the headline numbers — most dashboards usevalue_sentiment_scorebecause it weights material trades more heavily than routine RSU vests.csuite_sentiment_scoreandvalue_csuite_sentiment_scorestrip out 10%-owner and director noise — higher signal-to-noise for conviction screens.buy_sell_ratiois a quick-glance chip;Infinitywhen 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
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| ticker | path | required | — | — | Stock Ticker | AAPL |
| filed_at_days | query | optional | 7 | — | Look 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_days | query | optional | — | — | Look back this many days by TRANSACTION (trade-execution) date. Range 1–365. Omit to bound only by filing date. | 30 |
| days | query | optional | — | — | DEPRECATED — use `filed_at_days` and `transaction_days`. When set, it overrides both. Defaults to unset (null). | 30 |
| is_c_suite | query | optional | — | — | When `true`, restrict the summary to C-suite (CEO/CFO/COO/CIO/CTO/General Counsel) activity. | true |
| exclude_10b5_1 | query | optional | false | — | When `true`, exclude pre-planned Rule 10b5-1 trades from the headline totals (the `rule_10b5_1_*` transparency fields are unaffected). | true |
| exclude_cashless | query | optional | false | — | When `true`, exclude cashless option exercises from the totals. | true |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| status | string | no | Always `success` on 2xx. |
| data | object | no | SummaryStatsSchema — 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.ticker | string | no | Echo of the requested ticker (canonical hyphen form post-normalization). |
| data.company_name | string | no | Issuer name. Falls back to `'Unknown'` for issuers missing a CompanyStub row. |
| data.issuer_cik | string | no | Issuer CIK (10-character zero-padded). |
| data.days | integer | yes | Echo of the (deprecated) `days` parameter; null when unset. |
| data.total_transactions | integer | no | Count 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_buys | integer | no | Count of buy-side transactions (`acquired_disposed_code='A'`). |
| data.total_sells | integer | no | Count of sell-side transactions (`acquired_disposed_code='D'`). |
| data.total_buy_value | number | no | Sum of `shares × price_per_share` across all buy transactions, USD. Always non-negative. |
| data.total_sell_value | number | no | Sum of `shares × price_per_share` across all sell transactions, USD. Always non-negative. |
| data.total_buy_shares | number | no | Sum of share count across buys (split-adjusted). |
| data.total_sell_shares | number | no | Sum of share count across sells (split-adjusted). |
| data.unique_insiders | integer | no | Distinct count of reporting persons (post-canonical-owner dedup — multiple LLC/trust vehicles of the same beneficial owner count as one). |
| data.latest_transaction_date | string | yes | ISO `YYYY-MM-DD` of the most recent qualifying transaction. Null when the window is empty. |
| data.net_shares | number | no | `total_buy_shares - total_sell_shares` (signed). Positive = net buying, negative = net selling. |
| data.net_value | number | no | `total_buy_value - total_sell_value` (signed USD). The headline conviction-magnitude metric for sentiment dashboards. |
| data.unique_buyers | integer | no | Distinct count of insiders who bought in the window. Use the ratio `unique_buyers / unique_insiders` as a buy-breadth metric. |
| data.unique_sellers | integer | no | Distinct count of insiders who sold in the window. |
| data.rule_10b5_1_buy_count | integer | no | ACTUAL 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_count | integer | no | ACTUAL count of sell transactions under a 10b5-1 plan (transparency). |
| data.rule_10b5_1_buy_value | number | no | ACTUAL USD buy value under 10b5-1 plans (transparency). |
| data.rule_10b5_1_sell_value | number | no | ACTUAL USD sell value under 10b5-1 plans (transparency). |
| data.csuite_buy_count | integer | no | Count 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_count | integer | no | Count of sells by C-suite insiders. |
| data.csuite_buy_value | number | no | USD buy value by C-suite insiders. |
| data.csuite_sell_value | number | no | USD sell value by C-suite insiders. |
| data.csuite_net_value | number | no | `csuite_buy_value - csuite_sell_value` (signed USD). |
| data.officer_buy_value | number | no | USD buy value by all officers (broader than C-suite). |
| data.officer_sell_value | number | no | USD sell value by all officers. |
| data.director_buy_value | number | no | USD buy value by directors (board-only insiders). |
| data.director_sell_value | number | no | USD sell value by directors. |
| data.buy_sell_ratio | number | no | `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_score | number | no | COUNT-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_score | number | no | VALUE-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_score | number | no | C-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_score | number | no | C-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_count | integer | no | Distinct 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_id | string | yes | Per-request UUID for log correlation. |
| timestamp | string | no | ISO-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
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected 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).