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

Get all transactions by a specific insider (CIK).

Get all transactions by a specific insider (CIK). Each row includes total_beneficial_ownership and sector/industry classification from Sharadar. Response includes ownership_summary with per-company vehicle breakdown.

5 tokensSince v1.0.0

Why use this

Complete transaction history for one insider across all companies.

Common use case

Researching an insider like Elon Musk (CIK 1494730) — see all trades across TSLA, SpaceX, etc., with total shares owned per company.

Insider-scoped transaction history — one reporting person's complete trade tape across every issuer they file at. The natural lookup when a person/entity is the analyst's primary key (insider profile pages, activist-tracking dashboards, fund-manager activity feeds).

The path parameter expects a 10-character zero-padded CIK; shorter forms are auto-padded server-side. Returns HTTP 404 when the CIK cannot be resolved to any reporting owner. Use the ticker query parameter to narrow to a single-issuer history (e.g. 'all of Cook's AAPL trades') without falling back to /transactions/by-ticker.

The response carries a meta.insider block (cik / name / is_entity / total_companies) so UI page headers can render the insider profile without a second round-trip to GET /insider-module/api/insiders/insider/{insider_cik}. When dedup_owners=true, joint filings only surface for THIS insider if they were the deterministic winner of the dedup partition (lowest transaction_id); the surviving row carries the full co_owners array so the UI can show 'this trade was filed jointly by N entities'.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
cikpathrequiredInsider CIK number0000320193
limitqueryoptional50Limit results20
from_datequeryoptionalStart date (YYYY-MM-DD)2026-01-01
to_datequeryoptionalEnd date (YYYY-MM-DD)2026-04-01
dedup_ownersqueryoptionalfalseOpt-in server-side joint-filer dedup. When true, the response only includes the canonical winner of each natural-key partition (deterministic by lowest transaction_id) and adds co_owners + co_owner_count. The insider only appears for a joint filing if they were the canonical winner. Default-path response shape unchanged.true

Response schema

FieldTypeNullableDescription
statusstringnoAlways `success` on 2xx.
dataarraynoArray of transaction rows scoped to this insider across ALL issuers (or a single issuer when `ticker` is set). Sorted by `transaction_date DESC`. Empty array when the insider has no qualifying transactions in the date range — never null. Returns HTTP 404 when the insider CIK cannot be resolved at all.
data[].transaction_idstringyesStable internal primary key. When `dedup_owners=true`, the canonical winner of the joint-filer dedup partition (only present for joint filings where THIS insider was the winner).
data[].transaction_datestringyesISO `YYYY-MM-DD` trade execution date.
data[].transaction_codestringyesRaw SEC Form 4 transaction code.
data[].transaction_descriptionstringyesHuman-readable code description.
data[].acquired_disposed_codestringyes`A` (Acquired) or `D` (Disposed).
data[].sharesnumbernoShare count (split-adjusted).
data[].price_per_sharenumberyesPer-share USD price, rounded to 2 decimals.
data[].transaction_valuenumberyesComputed `shares × price_per_share` in USD.
data[].shares_owned_followingnumberyesPer-vehicle holdings after this transaction.
data[].value_owned_followingnumberyesComputed `shares_owned_following × price_per_share` in USD.
data[].ownership_naturestringyes`D` or `I`.
data[].is_derivativebooleanyes`true` for Form 4 Table II rows.
data[].is_rule_10b5_1booleanno`true` for 10b5-1 plan executions.
data[].is_cashless_exercisebooleanno`true` for option-exercise-and-immediate-sale patterns.
data[].insider_namestringyesThe reporting person's name (matches the `cik` path parameter for non-joint filings; may be a co-filer for joint filings on the dedup branch).
data[].insider_cikstringyesThe reporting person's CIK (10-character zero-padded).
data[].is_entitybooleanyes`true` for entity reporters.
data[].is_directorbooleannoDirector relationship to this issuer.
data[].is_officerbooleannoOfficer relationship to this issuer.
data[].is_ten_percent_ownerbooleanno10%-owner relationship to this issuer.
data[].insider_titlestringyesOfficer title raw text from the filing.
data[].officer_title_standardizedstringyesOfficer title normalized to FinRadar's vocabulary.
data[].is_c_suitebooleannoC-suite indicator.
data[].tickerstringyesIssuer ticker for THIS row (varies across rows when the insider files at multiple companies).
data[].company_namestringyesIssuer name for THIS row.
data[].sectorstringyesSharadar sector classification for the issuer.
data[].industrystringyesSharadar industry classification for the issuer.
data[].issuer_cikstringyesIssuer CIK.
data[].security_typestringyesSecurity title.
data[].is_common_stockbooleanyes`true` for cash-equity common-stock rows.
data[].accession_numberstringyesSource filing accession number.
data[].form_typestringyesForm type.
data[].filed_atstringyesISO-8601 UTC filing acceptance timestamp.
data[].is_amendmentbooleanyes`true` for `*/A` amendments.
data[].co_ownersarrayyesPresent ONLY when `dedup_owners=true`.
data[].co_owner_countintegeryesLength of `co_owners` (only when `dedup_owners=true`).
metaobjectyesResult metadata block — pagination + insider profile.
meta.paginationobjectnoPagination sub-block.
meta.pagination.totalintegernoTotal matching rows for the filter set.
meta.pagination.limitintegernoEffective page size.
meta.pagination.offsetintegernoEcho of requested offset.
meta.pagination.has_morebooleanno`true` when another page is available.
meta.insiderobjectnoInsider profile block — surfaces identity + cross-issuer reach (`total_companies`) so UIs don't need a separate `/insider/{insider_cik}` call to render the page header.
meta.insider.cikstringnoInsider CIK (10-character zero-padded).
meta.insider.namestringyesInsider legal name (`name_as_filed` from the most-recent Form 4).
meta.insider.is_entitybooleanyes`true` for entity reporters.
meta.insider.total_companiesintegernoDistinct count of issuers this insider has a current relationship with (from `OwnerRelationship` rows where `is_current=true`). Use this as a `n+1`-style hint when sizing UI tables.
request_idstringyesPer-request UUID for log correlation.
timestampstringnoISO-8601 UTC response timestamp.

Sample response

·
  • "status": "success"
  • "data":
    ]
  • "meta":
    • "pagination":
    • "insider":
    }
  • "request_id": "1f6a2b3c-9d4e-4a5f-b6c7-8d9e0a1b2c3d"
  • "timestamp": "2026-05-02T15:36:42.117Z"
}

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-insider/{cik}?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).