Fund holdings

The positions of one portfolio snapshot per fund, by weight; every page stays on the same snapshot. The connected source lists most ETFs' every position (SPY's 502), some ETFs' largest positions only and the 10 largest of a mutual fund, with weights only: meta.snapshot gives how many positions the snapshot lists and the share of the fund they cover, and quantity and market_value are null. holding links the listing a position trades as on any market OHLC carries, and provider_symbol keeps the position's own code either way. A new list far shorter than the fund's previous snapshot is not published; the previous snapshot stays. A fund that holds a commodity directly, such as a gold trust, lists no positions; its allocations describe it. Snapshots are monthly and the newest three are kept. An instrument that is not a fund returns 404 identifier-not-found, as an unknown ID does; a fund without a snapshot returns an empty list. A mutual fund's ID returns 403 mutual-funds-not-entitled for keys whose plan does not include mutual funds, and an ETF's positions in mutual funds are left out for those keys. Default order: snapshot_date ascending, id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.

GET/v1/funds/{instrument_id}/holdings
Required capability
funds.read
Data timing
As published by the source
Credits
50 credits per request.
Live endpoint. Request examples query live data with your API key; response examples are illustrative. History and coverage vary by dataset and plan; see dataset coverage.

Parameters

instrument_idstringrequired · path
Stable public identifier.
effective_datestringoptional · query
Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.
as_ofstringoptional · query
Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.
known_fromstringoptional · query
First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.
known_tostringoptional · query
Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.
orderstringoptional · query
Direction on snapshot_date; ties use ID ascending.

ascdesc

Default: asc
limitintegeroptional · query
Maximum records per page.Default: 100
cursorstringoptional · query
Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.
formatstringoptional · query
Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.

jsoncsv

Response fields

Returns data as an array of records. All example values are illustrative.

idstring
Record identifier, stable across revisions.
fund_idstring
Opaque stable public identifier; never an internal database key.
snapshot_datestring
snapshot date
holdingobject
holding
provider_symbolstring · null
The code the fund's holdings list gives the position: a ticker with its market (2330.TW, SHEL.LSE, AAPL.US) or a bond's ISIN (US16411QAN16.BOND). Set whether or not holding links a listing, so a position on a market OHLC does not carry can still be identified; null for one listed by name only (cash, and a mutual fund's positions).
namestring
Position name, including unlisted assets or cash.
asset_typestring
Position asset type.
quantitystring · null
Shares or units held. The connected source reports position weights only: always null.
market_valueobject
Market value of the position. The connected source reports position weights only: always null.
weightstring · null
Share of the fund's net assets, as a ratio; 0.0738 means 7.38%. Null for a position the source lists without a weight.

Response metadata

Responses include meta.timezone. Dataset responses include next_cursor; health and exports have their own metadata. Request tracing uses the X-Request-ID header.

Read the shared data conventions

When something goes wrong

An empty data: [] is a successful query with no matching records. Invalid symbols, permissions and malformed parameters produce an RFC 9457 problem with an actionable detail.

Error codes & retry guidance

Plans

Requires funds.read. Access, recency and history depth come from the plan definitions the API enforces.

PlanAccessRecencyHistory
FreeNot included——
DeveloperNot included——
ProIncludedAs published15 years
CommercialIncludedAs publishedFull history
ScaleIncludedAs publishedFull history

History is how far back a plan may request. How far records actually go for a symbol is history_from in dataset coverage. Nothing is real-time. Compare plans