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

Current holdings for a specific insider across all companies.

Current holdings for a specific insider across all companies. Returns ownership_summary with per-company vehicle breakdown including total_beneficial_ownership. Includes sector/industry classification from Sharadar.

5 tokensSince v1.0.0

Why use this

Complete holdings portfolio for one insider.

Common use case

Seeing all current stock positions for an insider across every company they're associated with, broken down by ownership vehicle.

Insider-scoped holdings table — one reporting person's complete current position book across every issuer they file at. Combines non-derivative and derivative positions when include_derivative=true (default).

The meta.ownership_summary block is the killer feature here: a per-issuer roll-up of {total_shares_direct, total_shares_indirect, total_beneficial, ownership_vehicles[]} keyed by issuer_cik, providing the exact data needed to render an insider profile page showing 'AAPL: 3.2M direct + 50K via GRAT Trust 2024 = 3.28M total' tooltips without N+1 round-trips.

Use the ticker query parameter to narrow to a single issuer (e.g. all of Cook's positions at AAPL). Returns HTTP 404 when the CIK cannot be resolved. For transactions (not positions) by the same insider use GET /insider-module/api/insiders/transactions/by-insider/{cik}; for the broader insider profile (roles, 365d stats, recent transactions) use GET /insider-module/api/insiders/insider/{insider_cik}.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
cikpathrequiredInsider CIK number0000320193

Response schema

FieldTypeNullableDescription
statusstringnoAlways `success` on 2xx.
dataarraynoArray of insider holdings rows scoped to ONE reporting person (across all issuers, or a single issuer when `ticker` is set). Sorted by `reported_date DESC` (most recent snapshot first). Empty array when the insider has no holdings on file. Returns HTTP 404 when the CIK cannot be resolved at all.
data[].holding_idstringnoStable internal UUID, serialized as a string.
data[].security_titlestringnoTitle of the security (e.g. `Common Stock`, `Stock Option`).
data[].amount_ownednumbernoNumber of shares (or contract units, for derivatives) currently owned in this vehicle.
data[].ownership_naturestringno`'direct'` or `'indirect'`. Defaults to `'direct'` when source filing's nature field is missing.
data[].reported_datestringyesISO `YYYY-MM-DD` date of the source filing reporting this position.
data[].tickerstringyesIssuer ticker (varies across rows when the insider holds positions at multiple issuers).
data[].company_namestringyesIssuer name.
data[].sectorstringyesSharadar sector classification for the issuer.
data[].industrystringyesSharadar industry classification for the issuer.
data[].issuer_cikstringyesIssuer CIK.
data[].is_derivativebooleanno`true` for derivative positions; `false` for cash-equity.
data[].total_beneficial_ownershipnumberyesAggregate shares this insider beneficially owns at THIS row's issuer across ALL vehicles. Null when the underlying filings do not report it.
data[].accession_numberstringyesSource filing accession number.
data[].filed_atstringyesISO-8601 UTC filing acceptance timestamp.
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.
metaobjectyesResult metadata block — pagination + insider profile + per-issuer ownership_summary.
meta.paginationobjectnoPagination sub-block.
meta.pagination.totalintegernoTotal non-derivative holdings rows for the filter set (note: count is from the non-derivative query only — derivative inclusion is handled at row-emit time).
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.
meta.insider.cikstringnoInsider CIK.
meta.insider.namestringyesInsider legal name.
meta.insider.is_entitybooleanyes`true` for entity reporters.
meta.insider.total_companiesintegernoDistinct count of issuers this insider has holdings at (independent of pagination — full-set count).
meta.ownership_summaryobjectnoMap keyed by `issuer_cik` → `{total_shares_direct, total_shares_indirect, total_beneficial, ownership_vehicles[]}`. The vehicle-level breakdown the UI uses to render 'AAPL: 3.2M direct + 50K via GRAT Trust 2024' tooltips.
meta.ownership_summary.{cik}.total_shares_directnumbernoSum of shares across direct-ownership vehicles for this issuer.
meta.ownership_summary.{cik}.total_shares_indirectnumbernoSum of shares across indirect-ownership vehicles for this issuer.
meta.ownership_summary.{cik}.total_beneficialnumbernoAggregate beneficial ownership rolled up across all vehicles. Defaults to `0` when missing.
meta.ownership_summary.{cik}.ownership_vehiclesarraynoArray of `{nature, name, shares, as_of}` per vehicle. `nature='direct'|'indirect'`; `name` is the indirect-vehicle label (null for direct); `shares` = current vehicle holdings; `as_of` = ISO date the vehicle was most-recently observed.
request_idstringyesPer-request UUID for log correlation.
timestampstringnoISO-8601 UTC response timestamp.

Sample response

·
  • "status": "success"
  • "data":
    ]
  • "meta":
    • "pagination":
    • "insider":
    • "ownership_summary":
    }
  • "request_id": "ab3c5d7e-9f1a-4b2c-8d6e-7f9a0b1c2d3e"
  • "timestamp": "2026-05-02T15:44:33.018Z"
}

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