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; a trust that received its series id partway through is one fund, its earlier reports without one attributed to the series) 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
cusippathrequired——9-character CUSIP, alphanumeric.037833100
periodqueryoptional——Pin ONE reporting month (ISO date, the month-end as_of) instead of the default latest-per-fund view.2026-05-31
limitqueryoptional100—Rows per page (1-500).100
offsetqueryoptional0—Pagination offset.0

Response schema

FieldTypeNullableDescription
statusstringno—
request_idstringyes—
timestampstringno—
dataarraynoOne row per fund key, ordered by position USD value descending.
data[].series_idstringyesSEC fund series; null for whole-trust filings keyed by registrant.
data[].series_namestringyesFund name as filed.
data[].reg_cikstringnoRegistrant CIK, zero-padded to ten characters.
data[].reg_namestringyesRegistrant name as filed.
data[].as_ofstringyesReporting date of this position. Default results can contain different dates.
data[].accession_numberstringnoSource SEC filing accession.
data[].holdingobjectno—
data[].holding.namestringyes—
data[].holding.titlestringyes—
data[].holding.balancenumberyesPosition quantity in the filed units.
data[].holding.unitsstringyesFiled unit code, such as NS for shares.
data[].holding.val_usdnumberyesPosition value in US dollars, unchanged from the filing.
data[].holding.pct_valnumberyesAs-filed percentage of fund net assets; 7.50593247848 means 7.50593247848%. No rescaling.
data[].holding.asset_catstringyes—
data[].holding.derivative_catstringyes—
data[].fund_net_assetsnumberyesFund net assets in US dollars at the row's reporting date.
metaobjectno—
meta.cusipstringnoThe exact security CUSIP used by the holder query.
meta.periodstringnoRequested reporting date or latest_per_fund.
meta.paginationobjectno—
meta.pagination.totalintegeryesAlways null; no full-corpus count is performed.
meta.pagination.limitintegerno—
meta.pagination.offsetintegerno—
meta.pagination.has_morebooleannoTrue when another page is available.

Sample response

·
  • "status": "success"
  • "request_id": "nport-holders-example"
  • "timestamp": "2026-09-27T00:00:00Z"
  • "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?period=2026-05-31&limit=100&offset=0" \
  -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).