Coverage Check

Check whether a ticker is covered for current and historical data.

To request the addition of a dataset, contact data@etf-holdings.com.

Loading coverage check.

Current

limited historyup to date
GET/api/v1/current/holdings

The current endpoint uses issuer-reported holdings and weights. It is the more granular path because issuers can update holdings more frequently than public filing cycles.

The current endpoint only supports a limited issuer set.

  • ARK...
  • Dimensional...
  • Fidelity...
  • First Trust...
  • Global X...
  • Invesco...
  • iShares...
  • Schwab...
  • State Street...
  • VanEck...
  • Vanguard...
  • WisdomTree...

Historical coverage is limited. Historical current-endpoint responses are served from cached results created by earlier queries rather than from a fully backfilled archive.

When historical current-endpoint data is available, it comes from the last cached snapshot on or before the requested date rather than from data after that date.

Query parameters

ticker
ETF or fund ticker symbol.
at(optional)
ISO date or timestamp for the requested query time. If omitted, the current endpoint uses the current time.
limit(optional)
Maximum number of holdings to return. Billing is based on the number of holdings returned.

Loading request runner.

Example

curl "https://etf-holdings.com/api/v1/current/holdings" \
  --get \
  --data-urlencode "ticker=VOO" \
  -H "Authorization: Bearer $ETF_HOLDINGS_API_KEY"

Output

Successful current-endpoint responses return one row per holding. That keeps the exact security name or identifier the source used for each row visible in the response instead of collapsing everything into a ticker-only summary.

When the API has a ticker for a row, it also tries to include stable ticker-level identifiers such as cik, compositeFigi, and shareClassFigi. CUSIP and ISIN may be omitted from the response due to licensing restrictions even when the source data includes them.

ticker
The ETF or fund ticker that was requested.
asOf
The holdings date that the API resolved for the response.
holdings[]
The returned holdings rows, sorted by descending weight. If limit is set, the API truncates this array after sorting.
holdings[].weight
The holding weight as a decimal fraction of the portfolio.
holdings[].identifiers
A sparse object containing only the identifiers the API could confidently attach to that holding row. Ticker-level cik, compositeFigi, and shareClassFigi are included when the API can resolve the ticker. Depending on licensing and availability, cusip and isin may also be present.
holdings[].identifiers.original
The raw identifier or name seen in the source row before any ticker mapping. Some identifier types may be omitted from the response due to licensing restrictions.

Success example

{
  "ticker": "VOO",
  "asOf": "2026-06-10",
  "holdings": [
    {
      "weight": 0.0712,
      "identifiers": {
        "ticker": "AAPL",
        "name": "Apple Inc.",
        "cik": "0000320193",
        "compositeFigi": "BBG000B9XRY4",
        "shareClassFigi": "BBG001S5N8V8",
        "original": "Apple Inc."
      }
    },
    {
      "weight": 0.0631,
      "identifiers": {
        "ticker": "MSFT",
        "name": "Microsoft Corp.",
        "cik": "0000789019",
        "compositeFigi": "BBG000BPH459",
        "shareClassFigi": "BBG001S5TD05",
        "original": "Microsoft Corp."
      }
    }
  ]
}

Unavailable example

{
  "error": {
    "code": "holdings_unavailable",
    "message": "Holdings are not available for that request",
    "requestId": "req_123"
  }
}

Historical

broader historysnapshot-based
GET/api/v1/historical/holdings

The historical endpoint returns the latest supported holdings snapshot on or before the requested date.

Responses return a holdings array. Each holding includes its weight plus an identifiers object with any identifiers the API could confidently attach to that row, along with an original string that preserves the raw identifier or name shown in the original row before any ticker mapping.

Use the coverage checker below to see which historical years are currently supported for a ticker.

The historical API is in development. Contact data@etf-holdings.com with data coverage or quality issues.

Query parameters

ticker
ETF or fund ticker symbol.
at(optional)
ISO date or timestamp for the requested query time. If omitted, the historical endpoint uses the current time.
limit(optional)
Maximum number of holdings to return. Billing is based on the number of holdings returned.
tickerMapping(optional)
Controls identifier-to-ticker mapping in historical results. none is the default for speed. partial keeps only the faster mappings and skips the slower CUSIP-based lookup. full enables the broader mapping pass. Unmapped rows keep the exact source identifier or name from the original row.

Loading request runner.

Example

curl "https://etf-holdings.com/api/v1/historical/holdings" \
  --get \
  --data-urlencode "ticker=VOO" \
  --data-urlencode "tickerMapping=none" \
  -H "Authorization: Bearer $ETF_HOLDINGS_API_KEY"

Output

Successful historical-endpoint responses also return one row per holding. The original field preserves the raw filing identifier or security name for that row, and the rest of the identifier fields stay sparse unless the API can resolve them confidently. When the API resolves a ticker for a filing row, it also tries to include identifiers such as cik, compositeFigi, and shareClassFigi. CUSIP and ISIN may be omitted from the response due to licensing restrictions even when the source data includes them.

ticker
The ETF or fund ticker that was requested.
asOf
The holdings date that the API resolved for the historical snapshot.
source
A source label for the resolved historical snapshot.
holdings[]
The returned holdings rows, sorted by descending weight. If limit is set, the API truncates this array after sorting.
holdings[].weight
The holding weight as a decimal fraction of the reported portfolio.
holdings[].identifiers
A sparse object containing only the identifiers the API could confidently attach to that holding row, such as ticker, cik, compositeFigi, shareClassFigi, or name. Depending on licensing and availability, cusip and isin may also be present.
holdings[].identifiers.original
The raw identifier or name seen in the original row before any ticker mapping. Some identifier types may be omitted from the response due to licensing restrictions. This is the best field to use if you want to apply your own mapping later.

Success example

{
  "ticker": "IWM",
  "asOf": "2008-06-30",
  "holdings": [
    {
      "weight": 0.000231345924,
      "identifiers": {
        "name": "Gaiam Inc.",
        "original": "Gaiam Inc."
      }
    },
    {
      "weight": 0.000373316479,
      "identifiers": {
        "name": "Greenfield Online Inc.",
        "original": "Greenfield Online Inc."
      }
    }
  ]
}

Unavailable example

{
  "error": {
    "code": "holdings_unavailable",
    "message": "Holdings are not available for that request",
    "requestId": "req_123"
  }
}