ETF Holdings API
ETF holdings by ticker and date.
Send an ETF ticker and date. Get holdings with weights and exact identifiers as JSON.
Coverage
Check ticker coverage.
See whether a ticker has current holdings and which historical years are supported.
A few live checks are available without signing in. Need request details too?
CurrentWaiting
Check current endpoint coverageCheck current endpoint coverage.
HistoricalWaiting
Check historical endpoint coverageCheck supported historical years.
API
Query old holdings like any other date.
Ask for a ticker and date. The API returns the resolved holdings date, the SEC source form when historical data is used, and each holding's weight and identifiers.
GET
/api/v1/historical/holdings?ticker=SPY&at=1997-12-31&limit=3Need more info?Read the docs
Request
curl "https://etf-holdings.com/api/v1/historical/holdings?ticker=SPY&at=1997-12-31&limit=3" \
-H "Authorization: Bearer $ETF_HOLDINGS_API_KEY"Response
{
"ticker": "SPY",
"asOf": "1997-09-30",
"source": "N-30D",
"holdings": [
{
"weight": 0.03035840526,
"identifiers": {
"ticker": "GE",
"name": "General Electric Co.",
"original": "General Electric Co."
}
},
{
"weight": 0.021660011916,
"identifiers": {
"name": "Exxon Corp.",
"original": "Exxon Corp."
}
},
{
"weight": 0.021600987918,
"identifiers": {
"ticker": "MSFT",
"name": "Microsoft Corp. *",
"original": "Microsoft Corp. *"
}
}
]
}Pricing
$1 per 100,000 holdings returned.
Add prepaid credits as needed. The minimum top-up is $10.
- Billing is based on the number of holdings returned.
- Authentication errors, validation errors, and requests with no holdings are not billable.
- Usage is shown by API key.
- Monthly requests
- 3,000
- Holdings returned
- 1,500,000
- Estimated daily spend
- $0.50
- Estimated monthly spend
- $15.00
- $10 top-up covers
- 1,000,000 holdings