ETF Holdings

GET/gateway/v1/equity/etf/holdings

Returns a stored ETF or index-fund portfolio snapshot plus its independently resolved immediately previous snapshot, ordered newest to oldest. Available quarterly periods describe the stored holdings history. The latest pair is cached for 6 hours; an explicit historical as_of pair is cached until the next calendar quarter.

Query Parameters

symbolstringrequired

US-listed ETF or index-fund ticker symbol

Example: SPY
as_ofstring

Select the composition effective on or before this YYYY-MM-DD date; the response also includes its immediately previous snapshot

Example: 2026-03-31
asset_classenum<string>

Filter holdings by instrument type

Available options:equitybond
limitinteger

Maximum holdings to return

offsetinteger

Number of holdings to skip

ETF Holdings
const options = {method: 'GET'};

fetch('https://api.asksurf.ai/gateway/v1/equity/etf/holdings?symbol=SPY&as_of=2026-03-31', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
OK
{
  "$schema": "https://example.com/schemas/DataObjectResponseEquityETFHoldingsResponse.json",
  "data": {
    "available_periods": [
      {
        "as_of": "<string>",
        "quarter": 123,
        "year": 123
      }
    ],
    "snapshots": [
      {
        "fund": {
          "as_of": "<string>",
          "asset_class": "<string>",
          "cik": "<string>",
          "filing_date": "<string>",
          "name": "<string>",
          "offset": 123,
          "returned": 123,
          "source": "<string>",
          "total_holdings": 123,
          "total_net_assets": 123
        },
        "holdings": [
          {
            "asset_class": "<string>",
            "cusip": "<string>",
            "isin": "<string>",
            "logo_url": "<string>",
            "market_value": 123,
            "name": "<string>",
            "shares": 123,
            "ticker": "<string>",
            "weight": 123
          }
        ]
      }
    ],
    "symbol": "<string>"
  },
  "meta": {
    "cached": true,
    "credits_used": 123,
    "empty_reason": "<string>"
  }
}