Skip to content
/insider-module/api/insiders/recommendations/daily

Algorithmic daily Buy/Sell recommendations based on insider cluster analysis.

Algorithmic daily Buy/Sell recommendations based on insider cluster analysis. STRONG BUY: >2 unique insiders buying in last 7 days + >$100k total volume. STRONG SELL: >2 unique insiders selling in last 7 days + >$500k total volume. Deduplicated to prevent joint-filing inflation.

10 tokensSince v3.14.0

Why use this

The productized buy/sell signal — FinRadar's algorithmic distillation of cluster-detection logic into a small daily list of high-conviction tickers, refreshed at 09:30 UTC. Deterministic thresholds: STRONG BUY = >2 unique insiders buying in the last 7 days AND aggregate volume >$100k; STRONG SELL = >2 unique insiders selling in the last 7 days AND aggregate volume >$500k. Joint-filer rows are deduplicated upstream (post-v3.1.1 fix) so the signal does not fire on artificially inflated joint-filing volume. Use this endpoint when you want a small ready-to-act list; use `GET /insider-module/api/insiders/clusters` when you want the underlying clusters with full configurability (custom `min_insiders`, custom `min_value`, custom `days` window).

Common use case

Building a daily trading signal dashboard or automated alert system based on insider cluster activity.

Productized daily Buy/Sell signal — built on top of cluster detection with deterministic thresholds. STRONG BUY = >2 unique insiders buying in the last 7 days AND aggregate volume >$100k. STRONG SELL = >2 unique insiders selling in the last 7 days AND aggregate volume >$500k. Joint-filer rows are deduplicated upstream so the signal does not fire on artificially-inflated joint-filing volume (post v3.1.1 fix). Refreshed at 09:30 UTC daily; reads after that time return the new day; reads before that time return the prior day. Use GET /insider-module/api/insiders/clusters for the underlying clusters with full configurability.

Response schema

FieldTypeNullableDescription
buyarraynoArray of STRONG BUY signal rows (top 5 by aggregate value), sorted by `total_value DESC`. Empty array on quiet days when no ticker meets the deterministic buy threshold (>2 unique insiders buying in the last 7 days AND aggregate volume ≥ $100k).
buy[].tickerstringyesIssuer ticker firing the buy recommendation (canonical hyphen form).
buy[].signalstringnoRecommendation literal — always `STRONG BUY` for entries in this array.
buy[].insider_countintegernoDistinct UNIQUE BENEFICIAL OWNERS (post-v3.1.1 dedup) buying during the 7-day window. Always ≥3 to qualify.
buy[].total_valuenumbernoAggregate USD buy value across all qualifying transactions in the 7-day window (`SUM(shares × price_per_share)`, post joint-filer dedup). Always ≥ $100k.
buy[].price_avgnumbernoAverage per-share price across the qualifying buy transactions (USD).
buy[].latest_datestringyesISO-8601 timestamp of the most recent qualifying filing in the cluster (the freshest signal data point). Null when unavailable.
sellarraynoArray of STRONG SELL signal rows (top 5 by aggregate value), sorted by `total_value DESC`. Empty array when no ticker meets the deterministic sell threshold (>2 unique insiders selling in the last 7 days AND aggregate volume ≥ $500k). RSU sell-to-cover (tax-withholding) sales are excluded so they never form a false SELL signal.
sell[].tickerstringyesIssuer ticker firing the sell recommendation (canonical hyphen form).
sell[].signalstringnoRecommendation literal — always `STRONG SELL` for entries in this array.
sell[].insider_countintegernoDistinct UNIQUE BENEFICIAL OWNERS selling during the 7-day window. Always ≥3 to qualify.
sell[].total_valuenumbernoAggregate USD sell value across all qualifying transactions in the 7-day window. Always ≥ $500k.
sell[].price_avgnumbernoAverage per-share price across the qualifying sell transactions (USD).
sell[].latest_datestringyesISO-8601 timestamp of the most recent qualifying filing in the cluster. Null when unavailable.
metaobjectnoComputation metadata block.
meta.strategystringnoStrategy label — `Cluster Analysis`.
meta.periodstringnoLookback window label — `7 days`.
meta.generated_atstringnoISO-8601 UTC timestamp when this list was computed (per-request, not cached).

Sample response

·
  • "buy":
    ]
  • "sell":
    ]
  • "meta":
    • "strategy": "Cluster Analysis"
    • "period": "7 days"
    • "generated_at": "2026-05-01T09:30:00.000Z"
    }
}

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/recommendations/daily?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).

Try it

Related endpoints