Skip to content
/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=.

10 tokensoffset paginationSince 3.139.0

Why use this

The fund-side ownership map of a security: which mutual funds and ETFs hold it, how much (balance + USD value), and what share of each fund's net assets it represents. The N-PORT counterpart to 13F institutional-holder lookups — monthly, and covering the full registered-fund universe.

Common use case

Listing every fund holding one bond CUSIP (funds disclose bonds position-by-position — coverage 13F equity filings cannot give), measuring fund-complex exposure to a single issuer, or reconstructing who held a security in a specific past month via period=.

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

NameInRequiredDefaultAllowedDescriptionExample
cusippathrequired9-character CUSIP, alphanumeric.037833100
periodqueryoptionalPin ONE reporting month (ISO date, the month-end as_of) instead of the default latest-per-fund view.2026-05-31
limitqueryoptional100Rows per page (1-500).100
offsetqueryoptional0Pagination offset.0

Response schema

FieldTypeNullableDescription
data[]arraynoOne 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_idstringyesThe 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_namestringyesFund name as filed.
data[].reg_cikstringnoRegistrant CIK (10-char zero-padded).
data[].reg_namestringyesRegistrant (trust) name.
data[].as_ofstringnoThe reporting month the position is from.
data[].accession_numberstringnoThe filing the position came from.
data[].holdingobjectnoThe 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_assetsnumberyesThe fund's net assets that month — the denominator behind pct_val, so relative position size is readable per row.
meta.cusipstringnoEchoed CUSIP.
meta.periodstringno'latest_per_fund' (default) or the pinned month.
meta.paginationobjectno{ 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

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