Skip to content
/insider-module/api/insiders/transactions/top

Get largest transactions by value.

Get largest transactions by value. Each row includes total_beneficial_ownership and sector/industry classification from Sharadar.

10 tokensSince v1.5.0

Why use this

The 'whale activity' leaderboard — returns the largest insider buys or sells by absolute USD value over the recent rolling window, sorted descending by `transaction_value`. Drives high-conviction signal panels for retail dashboards and quant pre-screens looking for outsized cluster anchors. The cardinal-direction filter (`direction=BUY` vs `direction=SELL`) is the most-used lever; sector/industry let you drill into 'biggest tech sells this week' or 'biggest healthcare buys'. Always set `dedup_owners=true` for trading-flow analysis to avoid joint-filer inflation (an LGN $514M × 9-owner sale will show up 9× without it). Pair with `GET /insider-module/api/insiders/clusters` when you want coordinated multi-insider activity rather than individual whales.

Common use case

Spotting 'whale' activity to see where high-conviction money is moving.

Largest insider transactions by absolute value over the recent window — drives "whale activity" feeds and high-conviction signal panels. Pass dedup_owners=true to collapse joint-filer rows into one canonical row (e.g. an LGN $514M × 9-owner sale shows up at $514M, not the inflated 9× sum). Note: derivative-exercise rows with transaction_value=0 are still included and are NOT collapsed by the dedup flag — that is a separate quality issue tracked under the v3.17.0 known-limitations callout. Pair with GET /insider-module/api/insiders/clusters when you want coordinated activity instead of individual whales.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
directionqueryoptionalBUYDirection of trades to rank — accepts `BUY` (returns largest purchase + exercise transactions sorted by `transaction_value DESC`) or `SELL` (returns largest sale transactions). Case-insensitive. Aliases `up`/`down` are accepted for backward compatibility but `BUY`/`SELL` are canonical.BUY
limitqueryoptional50Number of top rows to return (capped at 200 server-side). Most callers want 10-50; values >100 typically only useful for backfill or CSV-export workflows. The largest individual filings can be 100-500× the median, so even small limits surface the most material flows.20
sectorqueryoptionalSharadar sector classification, case-sensitive (e.g. `Technology`, `Healthcare`, `Energy`). Restricts the leaderboard to one sector — useful for sector-rotation thesis confirmation ('which Energy names are insiders dumping?'). Rows whose ticker has no Sharadar mapping are excluded when this filter is set.Technology
industryqueryoptionalSharadar industry classification, case-sensitive (more specific than `sector` — e.g. `Software—Application`, `Biotechnology`, `Semiconductors`). Em-dash characters require URL-encoding when round-tripping. Use the `/financials/tickers` endpoint to enumerate exact valid values.Consumer Electronics
dedup_ownersqueryoptionalfalseOpt-in server-side joint-filer dedup (introduced v3.17.0). When `true`, joint filings collapse to one canonical row (an LGN $514M × 9-owner sale appears once at $514M, not 9× inflated to $4.6B) and gain `co_owners` + `co_owner_count` fields. CRITICAL for any trading-flow analysis — without this flag the leaderboard's top entries are dominated by joint-filer artifacts. Note: derivative-exercise rows with `transaction_value=0` are still included and are NOT collapsed by this flag (separate v3.17.0 known-limitation).true
include_totalqueryoptionaltrueWhen `true` (default) `meta.pagination.total` is the exact total row count. Set `false` to skip that `COUNT(*)` — `total` is returned as `null` while `meta.pagination.has_more` stays exact (derived from a limit+1 probe). Use on wide market-wide / sector / industry windows where the exact count would otherwise dominate latency.false

Response schema

FieldTypeNullableDescription
statusstringnoAlways `success` on a 2xx response.
dataarraynoTop-N largest transactions, sorted by `transaction_value DESC` (largest dollar value first), tie-broken by `transaction_date DESC` then `transaction_id DESC`. Empty array if no transactions match the filters — never null. Excludes any rows where `transaction_value` is null (grants/gifts), since they have no dollar value to rank by.
data[].transaction_idintegernoStable internal primary key from `insiders_transactions`. When `dedup_owners=true`, this is the canonical winner of the joint-filer dedup partition. Use as a deterministic deduplication key on the client side across re-runs.
data[].tickerstringnoIssuer ticker (the company whose insider is selling/buying), normalized to canonical hyphen form (e.g. `BRK-A`). Multi-class issuers preserve the class actually traded — NOT collapsed to the primary share class.
data[].insider_namestringnoReporting-person legal name as filed on Form 4 Item 1. May be an individual or an entity (LP, fund vehicle, trust, family office). Casing preserved verbatim from the filing — do NOT use as a join key; `insider_cik` is the stable identifier. Whale-list entries are commonly entities (e.g. `GENERATION INVESTMENT MANAGEMENT LP`).
data[].sharesnumbernoShare count for the transaction (split-adjusted to most recent split via Sharadar's split-adjustment factor). Always positive; direction (acquired vs disposed) is encoded in `acquired_disposed_code`. For derivative exercises, this is the underlying-share count, not the option contract count.
data[].price_per_sharenumberyesPer-share transaction price in USD. Null only for code-A grants and code-G gifts (which are excluded from this endpoint anyway since `transaction_value` would be null). Already split-adjusted to align with the `shares` field.
data[].transaction_valuenumbernoComputed `shares × price_per_share` in USD — the sort key for this leaderboard. Always non-null on this endpoint (rows with null value are filtered out before sorting). Never adjusted for joint-filer inflation unless `dedup_owners=true` is set — read the `co_owner_count` field carefully when comparing against external sources.
data[].transaction_datestringnoISO `YYYY-MM-DD` date the trade was executed (NOT the filing date — Form 4 has a 2-business-day disclosure window, so very recent leaderboard entries may have `transaction_date` 1-2 days before today).
data[].sectorstringyesSharadar sector classification (e.g. `Technology`, `Healthcare`, `Industrials`). Null when the issuer ticker is unmapped in Sharadar (private CUSIPs, recently-listed issuers, foreign issuers without ADRs).
data[].industrystringyesSharadar industry classification (more specific than `sector`). Null when unmapped. Em-dash characters preserved verbatim from Sharadar.
data[].co_ownersarrayyesJoint-filer co-owners collapsed into this canonical row. Present ONLY when `dedup_owners=true`. JSON array of `{name, cik, is_officer, is_director, is_ten_percent_owner}` objects. Length 1 = single owner; length ≥2 = joint filing. Critical for trading-flow analysis — without inspecting `co_owners` you cannot tell whether a $500M sale represents one decision-maker or nine.
metaobjectnoResult metadata block.
meta.paginationobjectnoPagination sub-block.
meta.pagination.totalintegeryesTotal matching rows for the filter set. Null when `include_total=false`.
meta.pagination.limitintegernoEffective page size after server-side capping.
meta.pagination.offsetintegernoEcho of the requested offset.
meta.pagination.has_morebooleanno`true` when another page is available (derived from a limit+1 probe, exact regardless of `include_total`).
request_idstringyesPer-request UUID for log correlation.
timestampstringnoISO-8601 UTC response generation timestamp.

Sample response

·
  • "status": "success"
  • "data":
    ]
  • "meta":
    • "pagination":
    }
}

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/transactions/top?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