/api/v1/nport/holders-of/{cusip}Reverse lookup: funds holding a security
Every fund whose latest published N-PORT report holds the given CUSIP — one row per fund with its position size — or pin one historical reporting month with period=.
Why use this
Common use case
The reverse index over the whole N-PORT holdings corpus: give it a security, get the funds that hold it. The default view answers "who holds it NOW" — for each fund, the position from its latest published reporting month that contains the CUSIP — while period= answers "who held it in month X" for any historical month.
Each row is one fund (series; whole-trust filers key by registrant so distinct trusts never merge) with the position's size three ways: balance in the filed unit, val_usd, and pct_val of the fund's net assets — with fund_net_assets on the row so concentration is readable without a second call.
Scope note: this is the REGISTERED FUND ownership map (mutual funds + ETFs from their monthly N-PORT reports). It complements, and does not replace, the 13F institutional view: N-PORT covers bonds and derivatives position-by-position and reports monthly, while 13F covers all large institutional managers (including hedge funds, which file no N-PORT) quarterly on equities. For the 13F-side reverse lookup use POST /api/v1/form-13f/holdings in the Institutional Holdings group.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| cusip | path | required | — | — | 9-character CUSIP, alphanumeric. | 037833100 |
| period | query | optional | — | — | Pin ONE reporting month (ISO date, the month-end as_of) instead of the default latest-per-fund view. | 2026-05-31 |
| limit | query | optional | 100 | — | Rows per page (1-500). | 100 |
| offset | query | optional | 0 | — | Pagination offset. | 0 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| data[] | array | no | One row per holding fund, ordered by position USD value descending. Default view: each fund's LATEST published month that holds the CUSIP; with period=, exactly that month. |
| data[].series_id | string | yes | The holding fund's SEC series id (null for whole-trust filings; those key by registrant instead, so a trust never collapses into another). |
| data[].series_name | string | yes | Fund name as filed. |
| data[].reg_cik | string | no | Registrant CIK (10-char zero-padded). |
| data[].reg_name | string | yes | Registrant (trust) name. |
| data[].as_of | string | no | The reporting month the position is from. |
| data[].accession_number | string | no | The filing the position came from. |
| data[].holding | object | no | The position itself: { name, title, balance, units, val_usd, pct_val, asset_cat, derivative_cat }. balance is in the unit named by units (NS shares / PA principal / NC contracts); pct_val is the as-filed decimal fraction of the fund's net assets. |
| data[].fund_net_assets | number | yes | The fund's net assets that month — the denominator behind pct_val, so relative position size is readable per row. |
| meta.cusip | string | no | Echoed CUSIP. |
| meta.period | string | no | 'latest_per_fund' (default) or the pinned month. |
| meta.pagination | object | no | { total: null, limit, offset, has_more } — page forward with offset while has_more is true. |
Sample response
- "status": "success"
- "data":
- "meta":
- "cusip": "037833100"
- "period": "latest_per_fund"
- "pagination":
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/nport/holders-of/037833100?api_Token=YOUR_API_KEY&period=2026-05-31&limit=100&offset=0" \
-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).