ETFs
ETF Holdings
/v2/etfs/holdingsReturns all holdings with weights, values, and share counts. Swaps, futures, Treasury bills, money market funds and cash are rows of their own (holdingType); view picks market-value weights (display, default) or the issuer's exposure weights (raw).
Included in: Pro, Growth.
Authentication
Send your API key in the x-api-key header on every request to https://api.bavest.co. The samples read it from the BAVEST_API_KEY environment variable. Get an API key · Authentication guide
Parameters
Required: one of symbol, isin, for example isin=IE00B4L5Y983.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| symbol | query | string | one of symbol, isin | ETF ticker symbol (e.g., |
| isin | query | string | one of symbol, isin | ETF ISIN code (e.g., Example |
| view | query | string | no | Holdings view. One of Default |
| limit | query | integer (int32) | no | Maximum number of results to return (default 100, max 1000) Default |
| offset | query | integer (int32) | no | Number of results to skip for pagination (default 0) Default |
| cursor | query | string | no | Opaque cursor for cursor-based pagination. When provided, returns results after the cursor position. Takes precedence over offset. |
Try it
ETF ticker symbol (e.g., `IWDA.AS`). Provide exactly one of symbol or isin; clear the ISIN example before using a symbol.
ETF ISIN code (e.g., `IE00B4L5Y983`, iShares Core MSCI World UCITS ETF). Provide exactly one of symbol or isin.
Holdings view. `display` (default) weighs every row by market value, so a fund sums to ~100, with cash, Treasury bills and money market funds as their own rows; swaps and futures (no market value) and negative cash rows are left out. `raw` lists every row and keeps the issuer's exposure weights, so derivatives count at notional (a 3x fund ~300) and swaps list their counterparty. Plain ETFs are the same in both views. Unrecognized values fall back to `display`.
GET /v2/etfs/holdings?isin=IE00B4L5Y983&view=display
Sent only to api.bavest.co for this request; not stored.
Response 200
Successful response · application/json
dataarray of HoldingRecordHoldings for the requested page.
namestring | nullrequiredHolding name. Null when the constituent has no resolved master-record name yet; the key is always present.
Example
Apple Inc.symbolstring | nullTicker symbol
Example
AAPLisinstring | nullISIN identifier
percentnumber (double) | nullrequiredWeight (%) of net assets. With
view=display(default) the market-value weight, so a fund's rows sum to ~100; swaps and futures without a market value and negative cash rows are left out (they are inraw). Withview=rawa derivative's exposure weight (a 3x fund sums to ~300, an inverse fund's swaps are negative). Plain ETFs carry the same rows and weights in both views. Null only when the issuer publishes neither weight.Example
7.79valuenumber (double) | nullIssuer-reported position value in the source currency, which is not normalized here. Null when not reported. Use calculatedValue for an explicitly labelled USD estimate.
sharenumber (double) | nullShares held
cusipstring | nullCUSIP identifier
calculatedValueobject | nullBavest-calculated USD estimate, separate from issuer-reported value. Only available for a currently matching equity position with no reported value.
holdingTypestring | nullPosition type.
equityfor a listed security; swaps, futures, Treasury bills, money market funds and cash / net other assets are kept as their own rows (no ISIN);otherfor an unlisted instrument such as a bond. Null on issuer top-10 lists that publish names only.One of
equityswapfuturecashmoney_markettreasury_billothernullExample
equitymarketValuenumber (double) | nullIssuer-reported market value in the source currency; the basis of
percentinview=display. Null when the issuer publishes none (swaps, futures).exposureValuenumber (double) | nullIssuer-reported exposure (notional plus gain/loss) of a swap or future, in the source currency; the basis of
percentinview=raw. Null for positions without one.Example
9920928648.41counterpartystring | nullSwap counterparty as the issuer names it. Null for every other position.
Example
BNP Paribas
metaResponseMetaResponse metadata for paginated endpoints. Offset pagination returns
page/pageSize/totalPages/totalCount; cursor pagination returnspageSize/hasMore/nextCursorandtotalCountonly when known.timeintegerServer-side processing time in milliseconds
Example
17parametersobjectEcho of the request parameters the endpoint resolved
pageintegerCurrent page number (offset pagination)
Example
1pageSizeintegerNumber of results per page
Example
50totalPagesintegerTotal number of pages (offset pagination)
Example
2totalCountintegerTotal number of results across all pages
Example
100hasMorebooleanWhether more results follow (cursor pagination)
nextCursorstring | nullCursor for the next page (cursor pagination), null on the last page
Errors
- 400Invalid request parameters. Returned when required query parameters are missing, have invalid types, or violate constraints (e.g., providing both symbol and isin when they are mutually exclusive).
- 401Missing or invalid API key.
- 404Resource not found.
- 429Rate limit exceeded. Retry after the `Retry-After` header interval.
- 500An unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value.
- 502Upstream data provider returned an error or is temporarily unavailable. Retry after a short delay.
- 503Bavest cannot read its data store right now. The security may well have data; retry after the `Retry-After` header interval.
- 504The request timed out waiting for a response from the upstream data provider. This may occur for complex queries or during peak load.
- defaultAn unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value.

