/api/v1/form-13f/holdings/searchFind which funds hold a specific security by ticker or CUSIP.
Find which funds hold a specific security by ticker or CUSIP.
Why use this
Common use case
Reverse-lookup: given a TICKER or CUSIP, find all tracked institutional funds that hold the security in the requested quarter — answers 'Which hedge funds hold Apple?' This is the FinRadar surface most-similar to WhaleWisdom's 'Holders' page or Whalewisdom's 13F filers of XYZ lookup.
CUSIP successor chain expansion is automatic: a query for GOOGL correctly captures BOTH the pre-2014-share-class-restructuring CUSIPs AND the post-restructuring CUSIPs (the position is preserved across corporate actions). For Berkshire's class-A and class-B shares, query each share class separately (BRK-A vs BRK-B) since they have distinct CUSIPs and economic interests.
Results are sorted by value_usd DESC (largest holder first); use pct_of_portfolio to find HIGH-CONVICTION holders — a 38% portfolio weight (e.g. Berkshire→Apple) is a far stronger conviction signal than a 0.4% weight (e.g. Vanguard→Apple). The status field surfaces position-change momentum — multiple New holders for the same security in the same quarter is a powerful institutional discovery signal.
For the per-fund full-portfolio view (forward direction) see GET /api/v1/form-13f/fund/{cik}; for split-adjusted historical aggregations (Phase 52 surface) see GET /api/v1/tickers/{ticker}/fund-trends. All monetary values in USD (post-Plan-51 thousands correction); share counts NOT split-adjusted on this endpoint (preserves as-filed view).
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| q | query | required | — | — | Ticker symbol (e.g. AAPL) or CUSIP (e.g. 037833100). Min 2 chars. | apple |
| limit | query | optional | 20 | — | Max fund results (up to 100) | 20 |
| period | query | optional | — | — | Report period filter (YYYY-MM-DD). Defaults to latest. | 2025Q4 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| query | string | no | Echoed-back search query — the literal `q` value as received. Useful for caching keys client-side. |
| resolved | object | no | CUSIP-resolution metadata: `{ ticker, cusip, name_of_issuer, cusip_chain }`. The chain expansion handles corporate actions — for example a query for `GOOGL` automatically expands to BOTH the pre-2014-share-class-restructuring CUSIPs AND the post-restructuring CUSIPs, so the holders list correctly captures the fund's economic exposure across the corporate action. |
| resolved.cusip_chain | array | no | Array of CUSIPs that resolve to the same security after corporate-action successor mapping. For Apple: `['037833100']` (single CUSIP, no successors). For Alphabet: includes both pre- and post-2014 GOOG/GOOGL CUSIPs. The reverse-lookup query expands across the full chain. |
| period | string | no | ISO `YYYY-MM-DD` reporting quarter. Echoed from request; defaults to the latest available quarter. |
| holders | array | no | Array of institutional funds holding the security in the requested period. Sorted by `value_usd DESC` (largest holder first). Page size capped by `limit` (default 20, max 100). Each row carries the fund's identity + position size — drill-down to the fund's full portfolio via [GET /api/v1/form-13f/fund/{cik}](/docs/institutional-holdings/form-13f-api/get-form-13f-fund-cik). |
| holders[].cik | string | no | Fund CIK as a 10-character zero-padded string. Stable join key against the rest of the 13F surface. |
| holders[].name | string | no | Fund's registrant name AS FILED on the 13F-HR (typically all-caps in EDGAR convention). |
| holders[].shares | number | no | Share count held by this fund in the period. NOT split-adjusted (as-filed view) — for split-adjusted aggregations across history use [GET /api/v1/tickers/{ticker}/fund-trends](/docs/ticker-research/get-tickers-ticker-fund-trends). For BRK-A specifically, share counts are tiny (Berkshire-A trades at $700K+/share so even mega-holdings are only thousands of shares). |
| holders[].value_usd | number | no | Position value in USD (post-Plan-51 thousands correction). Sum of `shares * price` from the filed 13F-HR. |
| holders[].pct_of_portfolio | number | yes | Position weight as a percentage of the fund's total portfolio value. Useful for finding the fund's HIGH-CONVICTION holders ('Apple is 38% of Berkshire's book' = much stronger conviction signal than 'Apple is 0.4% of Vanguard's book'). Null when the fund's `portfolio_value` aggregation is missing. |
| holders[].change_shares | number | no | QoQ share-count delta (`current_shares - prior_shares`). Positive = fund added; negative = fund trimmed. Zero for unchanged positions. NOT split-adjusted. |
| holders[].status | string | no | Position-status label: `New` (no prior position), `Increased`, `Decreased`, `Unchanged`, `Closed` (in prior quarter, gone now). The most signal-rich status for momentum analysis is `New` — multiple new-buy holders for the same security is a conviction signal. |
| count | integer | no | Total holder count after pagination cap. NVIDIA Q4 2025: ~3,200 distinct holders (heavily covered by institutions); micro-cap stocks: 5-50 holders. |
Sample response
- "query": "AAPL"
- "resolved":
- "ticker": "AAPL"
- "cusip": "037833100"
- "name_of_issuer": "APPLE INC"
- "cusip_chain":
- "period": "2025-09-30"
- "holders":
- "count": 3
Errors
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected server-side failure. Retry with backoff; report if persistent. |
Code samples
curl "https://api.finradar.ai/api/v1/form-13f/holdings/search" \
-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).