Skip to content
/api/v1/ownership/positions/issuer/{issuer_cik}/holders

All holders of an issuer from position events, deduplicated via unified_holders.

All holders of an issuer from position events, deduplicated via unified_holders.

5 tokensSince v3.1.0

Why use this

All holders of an issuer rolled up from the Phase 47 unified position-event ledger — combines 13F snapshots + 13D/13G filings + Form 4 insider holdings into one deduplicated holder list per issuer. Each row shows the latest position state for the (holder, issuer) pair, derived from the most-recent contributing event of any type. The single canonical 'who owns this stock?' rollup that spans all three SEC reporting regimes — institutional 13F filers, 5%+ beneficial owners (13D/G), and Section 16 insiders all in one list. Pair with [GET /api/v1/ownership/positions/issuer/{issuer_cik}/timeline](/docs/ownership-and-positions/unified-holders/get-ownership-positions-issuer-timeline) for the time-ordered event view.

Common use case

WhaleWisdom-style institutional-ownership-breakdown pages — show all funds + insiders + beneficial owners holding AAPL today, sorted by share count or percent of class. Also useful for 'find all activist 13D filers in Berkshire's portfolio' workflows (filter `holders[].type=group` and the source-flag list to `[13D]`).

All holders of an issuer rolled up from the Phase 47 unified position-event ledger — the single canonical 'who owns this stock?' rollup that spans 13F + 13D/G + Form 4 reporting regimes. Each holder appears EXACTLY ONCE regardless of how many filing types contributed (a fund that filed both 13F and 13D appears as one row with sources: ["13F", "13D"]). Order: by shares_held DESC. The percent_of_class is the latest known across all source filings — typically derived from 13F (computed server-side as shares_held / shares_outstanding) or directly reported on 13D/G. Share counts are NOT split-adjusted server-side per the Phase 52 redirect convention; for split-adjusted aggregation use GET /api/v1/tickers/{ticker}/fund-trends. For the time-ordered event-feed view of the same data use GET /api/v1/ownership/positions/issuer/{issuer_cik}/timeline. For per-holder position history (a single holder's position evolution over time) use GET /api/v1/ownership/positions/{holder_uuid}/issuer/{issuer_cik}/history.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
issuer_cikpathrequiredIssuer CIK (the company being analyzed). Both 10-character zero-padded (`0000320193`) and short unpadded (`320193`) formats accepted. Returns 404 when no positions have ever been observed for the issuer (rare; typically only pre-IPO entities or de-registered issuers).0000320193

Response schema

FieldTypeNullableDescription
issuer_cikstringnoEchoed issuer CIK in 10-character zero-padded form.
issuer_tickerstringyesResolved issuer ticker (canonical hyphen form). Null when the issuer has no public-equity ticker.
as_ofstringnoISO-8601 UTC timestamp of the latest contributing event across all holders. Use to verify staleness (>30 days warrants a refresh during 13F filing windows).
holdersarraynoArray of unified-holder rows for this issuer. Order: by `shares_held` DESC (largest holders first). Deduplicated via Phase 47 unified-holder layer — a fund that filed both 13F and 13D for the same position appears as ONE row, not two.
holders[].holder_uuidstringnoPhase 47 unified-holder UUID.
holders[].namestringnoCanonical holder name.
holders[].cikstringyesPrimary 10-char zero-padded holder CIK.
holders[].typestringnoHolder classification — `individual` / `institution` / `group`.
holders[].shares_heldintegernoLatest known share count for this holder. NOT split-adjusted server-side (preserves the as-filed view per Phase 52 redirect convention) — for split-adjusted aggregation queries use [GET /api/v1/tickers/{ticker}/fund-trends](/docs/company-data/ticker-research/get-tickers-ticker-fund-trends) instead.
holders[].percent_of_classnumberyesLatest known percent of class held (0.0-100.0 decimal). Null on Form-4-only holders where the underlying filing did not include a class-percentage calculation.
holders[].sourcesarraynoArray of source-flag strings indicating which SEC reporting regimes contributed to this position — e.g. `["13F"]` (13F filer only), `["13D", "13F"]` (filed both), `["Form 4"]` (Section 16 insider only). Multi-source positions are common for activist 13F filers who cross 5% (Buffett's BRK both files 13F and 13D for AAPL pre-2020).
holders[].last_event_atstringnoISO-8601 UTC timestamp of the most-recent event affecting this position. The chronological sort key for 'recently active holders'.
metaobjectnoPagination block: `{ total: integer, limit: integer, offset: integer }`. `total` is the holder count for this issuer.

Sample response

·
  • "issuer_cik": "0000320193"
  • "issuer_ticker": "AAPL"
  • "as_of": "2026-04-15T20:14:32Z"
  • "holders":
    ]
  • "meta":
    • "total": 4218
    • "limit": 50
    • "offset": 0
    }
}

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/api/v1/ownership/positions/issuer/{issuer_cik}/holders?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).