The ETF API provides detailed information about Exchange-Traded Funds including their holdings, expense ratios, assets under management, and other key metrics.
https://api.api-ninjas.com/v1/etf
Returns comprehensive information about any ETF by its ticker. For live pricing data, please use the Stock Price API with the same ticker.
ticker
requiredETF ticker symbol (e.g., QQQ
, SPY
, VTI
).
X-Api-Key
requiredAPI Key associated with your account.
etf_ticker
ETF ticker symbol.
etf_name
ETF name.
isin
International Securities Identification Number (ISIN) of the ETF.
cusip
Nine-character Committee on Uniform Security Identification Procedures (CUSIP) identifier for the ETF.
country
Country of the ETF issuer.
expense_ratio
premium onlyAnnual expense ratio of the ETF as a percentage. For example, 0.2% would be 0.2
.
aum
premium onlyAssets under management of the ETF in USD.
num_holdings
Number of holdings in the ETF.
holdings
Array of top holdings in the ETF, each with ticker, name, and percentage weight. Free users only get access to the first 3 holdings. Premium users get access to all holdings.
https://api.api-ninjas.com/v1/etf?ticker=QQQ
Headers
X-Api-Key
Log in or sign up to get your API Key
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
"etf_ticker": "QQQ",
"etf_name": "Invesco QQQ Trust",
"isin": "US46090E1038",
"cusip": "46090E103",
"country": "US",
"expense_ratio": 0.2,
"aum": 305184502800,
"num_holdings": 101,
"holdings": [
{
"ticker": "MSFT",
"num_shares": 61773595,
"weight": 0.08689999999999999,
"value": 27752405289.7,
"last_updated": 1747184735
},
{
"ticker": "AAPL",
"num_shares": 124827810,
"weight": 0.08239,
"value": 26312454069.9,
"last_updated": 1747184735
},
{
"ticker": "NVDA",
"num_shares": 202754805,
"weight": 0.07809,
"value": 24938841015,
"last_updated": 1747184735
},
"..."
]
}
1
2
3
4
5
6
7
8
import requests
ticker = 'QQQ'
api_url = 'https://api.api-ninjas.com/v1/etf?ticker={}'.format(ticker)
response = requests.get(api_url, headers={'X-Api-Key': 'YOUR_API_KEY'})
if response.status_code == requests.codes.ok:
print(response.text)
else:
print("Error:", response.status_code, response.text)
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.