ETFs
ETF Holdings Top
/v2/etfs/holdings/topReturns top 10 holdings by weight, in the chosen view (display by market value, default; raw by absolute exposure weight).
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 |
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/top?isin=IE00B4L5Y983&view=display
Sent only to api.bavest.co for this request; not stored.
Response 200
Successful response · application/json
dataobjectsymbolstring | nullResolved ETF ticker, echoed from the lookup.
atDatestring (date)holdingsarray of HoldingRecord
metaResponseMetaResponse envelope metadata. Always present on a 200:
timeis set bycore/response.pyon every successful response. Errors carry the same block, built by the same code, so a client parses one meta shape whether the call succeeded or failed.timeintegerServer-side processing time in milliseconds
Example
17parametersobjectEcho of the request parameters the endpoint resolved
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.

