ETF API
The ETF API provides detailed information about Exchange-Traded Funds including their price, all holdings, expense ratios, assets under management, and other key metrics.
Available endpoints:
- /v1/etf - Get detailed information for a specific ETF by ticker
- /v1/etflist - Get a list of every supported ETF ticker symbol
- /v1/etfsearch - Search for ETFs by AUM, expense ratio, holdings, or country
For data on Mutual Funds, use the Mutual Fund API instead.
Premium members have access to live prices, while free users only have access to 15-minute delayed data.
From 8,061 users
Applications using this API
API Status
API Response Times
Average | P50 | P75 | P90 | P95 |
|---|---|---|---|---|
| 372ms | 418ms | 462ms | 847ms | 1193ms |
Didn't find what you were looking for? Suggest an improvement
/v1/etf GET
https://api.api-ninjas.com/v1/etf
Returns comprehensive information about any ETF by its ticker. Premium members have access to live prices, while free users only have access to 15-minute delayed data.
Parameters
tickerrequiredETF ticker symbol (e.g.,
QQQ,SPY,VTI). You must pass the complete ticker symbol, including any exchange suffix (dot notation) when the listing requires it. For example,EUNL.DE, notEUNL.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
A JSON object with the following fields or an error if the request is unsuccessful.
etf_tickerETF ticker symbol.
etf_nameETF name.
isinInternational Securities Identification Number (ISIN) of the ETF.
cusipNine-character Committee on Uniform Security Identification Procedures (CUSIP) identifier for the ETF.
countryCountry of the ETF issuer.
pricepremium onlyCurrent price of the ETF in USD. ETF prices are updated in real-time for premium members. Free users receive 15-minute delayed prices.
expense_ratiopremium onlyAnnual expense ratio of the ETF as a percentage. For example, 0.2% would be
0.2.aumpremium onlyAssets under management of the ETF in USD.
num_holdingspremium onlyNumber of holdings in the ETF.
holdingspremium onlyArray of all holdings in the ETF, each with ticker, name, and percentage weight.
Sample Request Live Demo!
Try our APIs in the API playground
Sign up for a free API key to get started — no credit card required.
https://api.api-ninjas.com/v1/etf?ticker=QQQHeaders
X-Api-KeyLog in or sign up to get your API KeySample Response
Code Examples
1
2
curl -X GET "https://api.api-ninjas.com/v1/etf?ticker=SPY" \
-H "X-Api-Key: YOUR_API_KEY"If your programming language is not listed in the Code Example above, you can still make API calls by using a HTTP request library written in your programming language and following the above documentation.
/v1/etflist GET Business, Professional, or annual subscriptions only
https://api.api-ninjas.com/v1/etflist
Returns ETF ticker symbols supported by the ETF API, paginated up to 1000 per call. Useful for discovering which tickers can be passed to /v1/etf or /v1/etfsearch. Increment the offset parameter by 1000 until fewer than 1000 results are returned to walk the entire list.
Parameters
offsetoptionalNumber of results to skip for pagination. Default
0. Page size is1000.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
A JSON array of strings (up to 1000 supported ETF ticker symbols starting at offset) or an error if the request is unsuccessful.
Sample Request Live Demo!
Try our APIs in the API playground
Sign up for a free API key to get started — no credit card required.
https://api.api-ninjas.com/v1/etflistHeaders
X-Api-KeyLog in or sign up to get your API KeySample Response
Code Examples
1
2
curl -X GET "https://api.api-ninjas.com/v1/etflist?offset=0" \
-H "X-Api-Key: YOUR_API_KEY"/v1/etfsearch GET Business, Professional, or annual subscriptions only
https://api.api-ninjas.com/v1/etfsearch
Search for ETFs matching a combination of filters. Results are sorted by assets under management (descending) and capped at 50 per page. Use the offset parameter to paginate. At least one filter parameter is required.
Parameters
At least one of the following parameters must be provided.
min_aumoptionalMinimum assets under management in USD (e.g.
10000000000for $10B).max_aumoptionalMaximum assets under management in USD.
min_expense_ratiooptionalMinimum annual expense ratio as a decimal (e.g.
0.001for 0.1%).max_expense_ratiooptionalMaximum annual expense ratio as a decimal.
holdingsoptionalComma-separated list of ticker symbols. Only ETFs that hold every listed ticker will be returned (AND match). Example:
AAPL,MSFT.countryoptionalISO country code of the ETF issuer (e.g.
US,CA,DE).offsetoptionalNumber of results to skip for pagination. Default
0. Page size is50.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
A JSON array of up to 50 matching ETFs (sorted by AUM descending) or an error if the request is unsuccessful. Each entry contains the following fields. To retrieve full holdings for a specific result, call /v1/etf with its symbol.
symbolETF ticker symbol.
nameETF name.
countryISO country code of the ETF issuer.
expense_ratioAnnual expense ratio of the ETF as a decimal (e.g.
0.0009for 0.09%).aumAssets under management of the ETF in USD.
num_holdingsNumber of holdings in the ETF.
Sample Request Live Demo!
Try our APIs in the API playground
Sign up for a free API key to get started — no credit card required.
https://api.api-ninjas.com/v1/etfsearch?min_aum=10000000000&country=USHeaders
X-Api-KeyLog in or sign up to get your API KeySample Response
Code Examples
1
2
curl -X GET "https://api.api-ninjas.com/v1/etfsearch?min_aum=10000000000&country=US" \
-H "X-Api-Key: YOUR_API_KEY"Frequently Asked Questions
Can I use the ETF API for commercial purposes?
Yes, but you must have a premium subscription. Commercial use of the ETF API is not permitted on the free tier. See our pricing page to choose a plan that fits your needs.How do I get an API key and start using the ETF API?
Sign up for a free account to instantly get your API key, then pass it in theX-Api-Keyheader on every request. The documentation above includes ready-to-run examples in cURL, Python, JavaScript, Node.js, and more.What happens if I exceed my quota for the month?
Your API requests will simply be denied once you hit your monthly quota — you will never be charged more than the plan you signed up for. To increase your quota, you can upgrade your plan any time on our pricing page.What happens if a request to the ETF API fails?
The API responds with a standard HTTP status code and a JSON error message describing the problem. See our error codes reference for the full list of codes and how to resolve each one, or contact support if you need help.How do I get the full list of holdings for an ETF like QQQ or SPY?
Call the/v1/etfendpoint with the requiredtickerparameter (e.g.ticker=SPY, including any exchange suffix likeEUNL.DEwhen required); the response includes aholdingsarray where each entry has the constituent ticker,num_shares, percentageweight, and value, alongsidenum_holdings,aum, andexpense_ratio. For live quotes on those individual constituents, see the Stock Price API.How can I find ETFs that hold a specific stock or match an AUM and expense-ratio range?
Use the/v1/etfsearchendpoint, which accepts filters includingholdings(a comma-separated AND match likeAAPL,MSFTthat returns only ETFs holding every listed ticker),min_aum/max_aum,min_expense_ratio/max_expense_ratio, andcountry; results are sorted by AUM descending, capped at 50 per page, and you paginate withoffset. These search and listing endpoints require a Business, Professional, or annual subscription, shown on pricing.How do I discover every ETF ticker symbol the API supports?
The/v1/etflistendpoint returns a JSON array of supported ticker symbols, paginated up to 1000 per call; increment theoffsetparameter by 1000 until fewer than 1000 results come back to walk the entire list. To verify or resolve any individual symbol you can also use the Ticker API.How fresh are ETF prices, and why might the price field be missing?
Premium members receive real-time prices while free users get 15-minute delayed data, and theprice,aum,expense_ratio,num_holdings, andholdingsfields on/v1/etfare premium only. See pricing for the plans that unlock live prices and these fields, or use the Mutual Fund API for fund equivalents.