ETF holdings
Fund holdings as reported by the issuer portfolio or fund filing.
Parameters
symbolpathrequired
Ticker symbol, case-insensitive.
Response contract
Every field in the response is part of the contract.
Response fields
The top level keys a live response actually returned, read off the API rather than written down here.
etfnameissueras_of_dateholding_counttotal_weightexpense_ratioholdings
How this was verified
Called against 3 different subjects on the live API. Every field it returned, at every level, was compared with the contract above. Last checked August 18, 2026.
Request
curl "https://api.massari.ai/v1/funds/SPY/holdings" \
-H "Authorization: Bearer $MASSARI_TOKEN"Example response
{
"etf": "SPY",
"name": "SPDR S&P 500 ETF Trust",
"issuer": "spdr",
"as_of_date": "2026-04-17T00:00:00.000Z",
"holding_count": 503,
"total_weight": 0.9756,
"expense_ratio": 0.0945,
"holdings": [
{
"symbol": "NVDA",
"name": "NVDA",
"weight": 0.08012,
"shares": "286670335",
"market_value": 56401834000,
"sector": null,
"country": null,
"asset_class": "equity",
"source_class": "cached_market_data"
},
{
"symbol": "AAPL",
"name": "AAPL",
"weight": 0.06485,
"shares": "173194653",
"market_value": 45651900000,
"sector": null,
"country": null,
"asset_class": "equity",
"source_class": "cached_market_data"
}
]
}A real response from the live API, captured August 18, 2026. This one is CUT: long arrays, wide objects and long strings were trimmed to keep it readable, so treat it as a sample of the shape rather than all of it. Either way it is valid JSON.