Skip to content
/api/v1/tickers/{ticker}/holders

Top institutional holders across ALL 9,600+ 13F filers with quarter-over-quarter change.

Top institutional holders across ALL 9,600+ 13F filers with quarter-over-quarter change. Queries form_13f_holdings directly (not just tracked funds). CUSIP successor chain expansion and amendment deduplication included. Returns status (New/Increased/Decreased/Unchanged/Closed) and change % vs previous quarter.

5 tokensSince v1.0.0

Top institutional holders for a ticker across ALL 9,600+ 13F filers (post-v3.3.0 rewrite — the legacy implementation was limited to the 668-fund tracked subset). Each holder row carries QoQ change in shares and a status classification (New / Increased / Decreased / Unchanged / Closed) so portfolio managers can spot smart-money rotation at a glance. CUSIP successor-chain expansion preserves M&A continuity (e.g. PFE/Wyeth merger, GOOGL share-class restructuring); amendment deduplication ensures one row per (CIK × period) pair. NOT-split-adjusted shares preserve the as-filed view — for split-adjusted historical aggregations use GET /api/v1/tickers/{ticker}/fund-trends. Pair with GET /api/v1/tickers/{ticker}/overview for the comprehensive company-overview view, GET /api/v1/13dg/holders/{ticker} for the activist-shareholder sibling (5%+ beneficial owners filing 13D/G), and GET /insider-module/api/insiders/transactions/by-ticker for the Form 4 insider-activity sibling.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
tickerpathrequired——Ticker symbol (canonical hyphen form). Server normalizes case + dot/slash variants. Multi-class issuers preserve the requested class. CUSIP successor chain is automatically expanded — for Alphabet (`GOOGL` / `GOOG`) returns positions across pre/post-2014-share-class-restructuring CUSIPs.AAPL
limitqueryoptional100—Max funds per page (default 100, max 500). For typical UI tables 20-50; for full-list export 500 + paginated walks.20
offsetqueryoptional0—Skip first N results for pagination (default 0). Use with `limit` to page through all holders. For tickers with 4000+ holders (mega-caps), 80+ paginated calls would be needed for full enumeration; use `POST /api/v1/form-13f/holdings` for bulk-export workflows.0
statusqueryoptionalall—Filter by QoQ status: `all` (default), `new` (just-opened positions), `increased` (added shares), `decreased` (trimmed shares), `unchanged` (held flat), `closed` (just-exited positions). For smart-money-momentum dashboards use `new` + `increased`; for distribution dashboards use `decreased` + `closed`.increased
periodqueryoptional——Specific report period (ISO `YYYY-MM-DD` quarter-end format like `2025-09-30`). Defaults to latest available period (typically the quarter ending 45-90 days ago given the SEC 45-day filing deadline + ETL lag).2025-09-30
quartersqueryoptional1—Number of quarters to return (default 1, max 20). When `>1`, response includes a `quarters[]` array with per-quarter holders and QoQ changes — useful for trend charts. When `1`, response is the flat single-period view shown in the sample.4

Response schema

FieldTypeNullableDescription
statusstringno—
request_idstringyes—
timestampstringno—
dataobjectnoOne quarter uses holders and totals directly. quarters>1 returns quarters[], ticker, cusips and available_quarters instead. Empty results use the single-quarter shape without pagination fields.
data.periodstringyesOptional; omitted when not applicable.
data.prev_periodstringyesOptional; omitted when not applicable.
data.holdersarraynoOptional; omitted when not applicable.
data.holders[].cikstringno—
data.holders[].namestringno—
data.holders[].sharesnumberno—
data.holders[].valuenumberno—
data.holders[].prev_sharesnumberno—
data.holders[].chg_pctnumberyes—
data.holders[].statusstringno—
data.total_sharesnumbernoOptional; omitted when not applicable.
data.total_valuenumbernoOptional; omitted when not applicable.
data.total_holdersintegernoOptional; omitted when not applicable.
data.total_countintegernoOptional; omitted when not applicable.
data.offsetintegernoOptional; omitted when not applicable.
data.limitintegernoOptional; omitted when not applicable.
data.security_namestringyes—
data.tickerstringnoOptional; omitted when not applicable.
data.cusipsarraynoOptional; omitted when not applicable.
data.cusips[]stringno—
data.quartersarraynoOptional; omitted when not applicable.
data.quarters[].periodstringyes—
data.quarters[].prev_periodstringyes—
data.quarters[].holdersarrayno—
data.quarters[].holders[].cikstringno—
data.quarters[].holders[].namestringno—
data.quarters[].holders[].sharesnumberno—
data.quarters[].holders[].valuenumberno—
data.quarters[].holders[].prev_sharesnumberno—
data.quarters[].holders[].chg_pctnumberyes—
data.quarters[].holders[].statusstringno—
data.quarters[].total_sharesnumberno—
data.quarters[].total_valuenumberno—
data.quarters[].total_holdersintegerno—
data.quarters[].total_countintegernoOptional; omitted when not applicable.
data.quarters[].offsetintegernoOptional; omitted when not applicable.
data.quarters[].limitintegernoOptional; omitted when not applicable.
data.available_quartersarraynoOptional; omitted when not applicable.
data.available_quarters[]stringno—

Sample response

·
  • "status": "success"
  • "request_id": null
  • "timestamp": "2026-09-25T12:00:00Z"
  • "data":
    • "holders":
    • "period": "2026-06-30"
    • "prev_period": "2026-03-31"
    • "total_shares": 100
    • "total_value": 20000
    • "total_holders": 1
    • "total_count": 1
    • "offset": 0
    • "limit": 100
    • "security_name": "APPLE INC"
    }
}

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/tickers/AAPL/holders?limit=20&offset=0&status=increased&period=2025-09-30&quarters=4" \
  -H "X-API-Key: YOUR_API_KEY"

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).