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

Get insider transactions for a specific ticker.

Get insider transactions for a specific ticker. Each row includes total_beneficial_ownership and sector/industry classification from Sharadar.

5 tokensSince v1.0.0

Why use this

View all insider trades for one company.

Common use case

Analyzing insider activity for a specific stock like TSLA — see who bought/sold and their total holdings.

Ticker-scoped insider transaction history — one company at a time. The natural lookup when a ticker is the analyst's primary key (stock-quote pages, equity-research dashboards, alert pipelines wired to a watchlist).

The path parameter accepts canonical NYSE/NASDAQ/AMEX symbols including multi-class hyphens (e.g. BRK-A, GOOG-L); server normalizes BRK.A/BRK/A/BRKABRK-A via the Phase 49 ticker_norm_aliases lookup. Returns HTTP 404 when the ticker cannot be resolved at all (vs the latest/search endpoints which return an empty array).

For screen-style multi-ticker filtering use GET /insider-module/api/insiders/transactions/search; for the rolled-up sentiment summary (counts, value totals, sentiment scores) for the same ticker use GET /insider-module/api/insiders/summary/by-ticker/{ticker}; for the position-level (not transaction-level) view use GET /insider-module/api/insiders/holdings/by-ticker/{ticker}.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
tickerpathrequiredStock Ticker (e.g. TSLA)AAPL
limitqueryoptional50Limit results20
filed_at_daysqueryoptional7Filter by filing date (days ago).30
transaction_daysqueryoptionalFilter by transaction date (days ago).30
standard_typequeryoptionalpurchase, sale, grant, exercise, gift, otherNormalized transaction-type filter — accepts `purchase` (SEC code P), `sale` (S), `grant` (A), `exercise` (M/X/C/O), `gift` (G), or `other` (every remaining code: F tax-withholding, D, J, K, …). FinRadar's mapping of the SEC's 10+ raw Form 4 codes into the 6 buckets analysts filter on. Omit to include all types; an unrecognized value returns HTTP 422.purchase
dedup_ownersqueryoptionalfalseOpt-in server-side joint-filer dedup. When true, collapses (transaction × reporting_owner) duplicates into one canonical row per economic transaction and adds co_owners JSON array + co_owner_count. Default-path response shape unchanged.true

Response schema

FieldTypeNullableDescription
statusstringnoAlways `success` on 2xx.
dataarraynoArray of insider transaction rows scoped to the requested issuer ticker. Sorted by `filed_at DESC`. Empty array when the ticker exists but has no qualifying transactions in the date range — never null. Returns HTTP 404 when the ticker cannot be resolved to an issuer CIK at all.
data[].transaction_idstringyesStable internal primary key. When `dedup_owners=true`, the canonical winner of the joint-filer dedup partition.
data[].transaction_datestringyesISO `YYYY-MM-DD` trade execution date (Form 4 Item 3).
data[].transaction_codestringyesRaw SEC Form 4 transaction code (P/S/A/M/G/F/D/J/K/L).
data[].transaction_descriptionstringyesHuman-readable code description (e.g. 'Open-market purchase' for `P`).
data[].acquired_disposed_codestringyes`A` (Acquired) or `D` (Disposed).
data[].sharesnumbernoShare count (split-adjusted to most recent split).
data[].price_per_sharenumberyesPer-share USD price, rounded to 2 decimals. Null for grants/gifts.
data[].transaction_valuenumberyesComputed `shares × price_per_share` in USD.
data[].shares_owned_followingnumberyesPer-vehicle holdings after the transaction (NOT cross-vehicle total).
data[].value_owned_followingnumberyesComputed `shares_owned_following × price_per_share` in USD.
data[].ownership_naturestringyes`D` (Direct) or `I` (Indirect — held via trust/LLC/family).
data[].is_derivativebooleanyes`true` for option exercises, RSU vests, warrant grants (Form 4 Table II).
data[].is_rule_10b5_1booleanno`true` when executed under a pre-planned 10b5-1 trading plan.
data[].is_cashless_exercisebooleanno`true` for option-exercise-and-immediate-sale patterns.
data[].excess_shares_soldnumberyesShares sold above the exercise count when `is_cashless_exercise=true`.
data[].insider_namestringyesReporting-person legal name (verbatim from Form 4 Item 1).
data[].insider_cikstringyesReporting-person CIK (10-character zero-padded).
data[].is_entitybooleanyes`true` for entity reporters (LP, fund, trust); `false` for individuals.
data[].is_directorbooleannoInsider's director relationship to this issuer.
data[].is_officerbooleannoInsider's officer relationship to this issuer.
data[].is_ten_percent_ownerbooleannoInsider's 10%-beneficial-owner relationship to this issuer.
data[].is_otherbooleannoInsider's catch-all 'Other' relationship.
data[].other_descriptionstringyesFree-text relationship label when `is_other=true`.
data[].beneficial_ownership_pctnumberyesBeneficial-ownership percentage (0..100). Null when not disclosed.
data[].insider_titlestringyesOfficer title raw text from the filing.
data[].officer_title_standardizedstringyesOfficer title normalized to FinRadar's controlled vocabulary.
data[].is_c_suitebooleanno`true` for CEO/CFO/COO/CIO/CTO/General Counsel.
data[].seniority_rankintegeryesNumeric seniority ranking (1=highest).
data[].is_section_16_officerbooleanyes`true` for Section-16 officers.
data[].is_named_executive_officerbooleanyes`true` for Named Executive Officers per most-recent DEF 14A.
data[].title_categorystringyesCoarse title category.
data[].tickerstringyesIssuer ticker — equals the requested path parameter (canonical hyphen form).
data[].company_namestringyesIssuer name.
data[].sectorstringyesSharadar sector classification. Null when unmapped.
data[].industrystringyesSharadar industry classification. Null when unmapped.
data[].issuer_cikstringyesIssuer CIK (10-character zero-padded).
data[].security_typestringyesSecurity title (e.g. `Common Stock`, `Class A Common Stock`).
data[].security_classstringyesNormalized security class (`Class A`, `Class B`).
data[].is_common_stockbooleanyes`true` for cash-equity common-stock rows.
data[].share_classstringyesShare class indicator for multi-class issuers.
data[].accession_numberstringyesSource filing accession number.
data[].form_typestringyesForm type (`3`, `4`, `5`, `4/A`, etc.).
data[].filed_atstringyesISO-8601 UTC filing acceptance timestamp.
data[].filing_datestringyesMirror of `filed_at` (back-compat alias).
data[].accepted_atstringyesISO-8601 UTC EDGAR acceptance timestamp.
data[].published_atstringyesISO-8601 UTC RSS-publication timestamp.
data[].rss_updated_atstringyesISO-8601 UTC most-recent RSS update.
data[].updated_atstringyesISO-8601 UTC last FinRadar-side update.
data[].period_of_reportstringyesISO `YYYY-MM-DD` Form 4 Item 3 period.
data[].is_latebooleanyes`true` when filed past the 2-business-day deadline.
data[].business_days_to_fileintegeryesBusiness days between trade and filing.
data[].is_amendmentbooleanyes`true` for `*/A` amendments.
data[].indirect_owner_namestringyesIndirect-ownership vehicle name when `ownership_nature='I'`.
data[].equity_swap_involvedbooleanno`true` for equity-swap derivative involvement.
data[].xml_urlstringyesSEC EDGAR XML primary document URL.
data[].index_urlstringyesSEC EDGAR filing index page URL.
data[].owner_idstringyesInternal ReportingOwner UUID.
data[].non_derivative_holding_countintegernoForm 4 Table I holdings count for the parent filing.
data[].derivative_holding_countintegernoForm 4 Table II holdings count for the parent filing.
data[].footnote_countintegernoFootnote count on the parent filing.
data[].co_ownersarrayyesPresent ONLY when `dedup_owners=true`. Joint-filer co-owners array.
data[].co_owner_countintegeryesLength of `co_owners` (only when `dedup_owners=true`).
metaobjectyesResult metadata block.
meta.paginationobjectnoPagination sub-block.
meta.pagination.totalintegernoTotal matching rows for the filter set.
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.
request_idstringyesPer-request UUID for log correlation.
timestampstringnoISO-8601 UTC response generation timestamp.

Sample response

·
  • "status": "success"
  • "data":
    ]
  • "meta":
    • "pagination":
    }
  • "request_id": "8a4d2e1c-bd8a-4f81-9e21-c32d40bf9e45"
  • "timestamp": "2026-05-02T15:34:11.205Z"
}

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/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).