NewConnect Claude, Gemini, ChatGPT, and other AI agents to API Ninjas via our MCP server

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.

(4.5)

From 8,061 users

4,100+

Applications using this API

API Status

Online - All Systems Operational

API Response Times

Average
P50
P75
P90
P95
372ms418ms462ms847ms1193ms

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

  • ticker  required

    ETF 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, not EUNL.

Headers

  • X-Api-Key  required

    API Key associated with your account.

Response

A JSON object with the following fields or an error if the request is unsuccessful.

  • 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.

  • price premium only

    Current price of the ETF in USD. ETF prices are updated in real-time for premium members. Free users receive 15-minute delayed prices.

  • expense_ratio premium only

    Annual expense ratio of the ETF as a percentage. For example, 0.2% would be 0.2.

  • aum premium only

    Assets under management of the ETF in USD.

  • num_holdings premium only

    Number of holdings in the ETF.

  • holdings premium only

    Array of all holdings in the ETF, each with ticker, name, and percentage weight.

Sample Request Live Demo!

ticker

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=QQQ

Headers

X-Api-KeyLog in or sign up to get your API Key

Sample Response

JSON
{
    etf_ticker:"QQQ",
    etf_name:"Invesco QQQ Trust",
    price:515.59,
    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
      },
      "..."
    ]
}

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

  • offset  optional

    Number of results to skip for pagination. Default 0. Page size is 1000.

Headers

  • X-Api-Key  required

    API 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!

offset

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/etflist

Headers

X-Api-KeyLog in or sign up to get your API Key

Sample Response

JSON
[
    "AAA",
    "AADR",
    "AAXJ",
    "ACES",
    "ACIO",
    "ACWI",
    "ACWV",
    "ACWX",
    "ADRA",
    "ADRD",
    "..."
]

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_aum  optional

    Minimum assets under management in USD (e.g. 10000000000 for $10B).

  • max_aum  optional

    Maximum assets under management in USD.

  • min_expense_ratio  optional

    Minimum annual expense ratio as a decimal (e.g. 0.001 for 0.1%).

  • max_expense_ratio  optional

    Maximum annual expense ratio as a decimal.

  • holdings  optional

    Comma-separated list of ticker symbols. Only ETFs that hold every listed ticker will be returned (AND match). Example: AAPL,MSFT.

  • country  optional

    ISO country code of the ETF issuer (e.g. US, CA, DE).

  • offset  optional

    Number of results to skip for pagination. Default 0. Page size is 50.

Headers

  • X-Api-Key  required

    API 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.

  • symbol

    ETF ticker symbol.

  • name

    ETF name.

  • country

    ISO country code of the ETF issuer.

  • expense_ratio

    Annual expense ratio of the ETF as a decimal (e.g. 0.0009 for 0.09%).

  • aum

    Assets under management of the ETF in USD.

  • num_holdings

    Number of holdings in the ETF.

Sample Request Live Demo!

min_aum
max_aum
min_expense_ratio
max_expense_ratio
holdings
country
offset

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=US

Headers

X-Api-KeyLog in or sign up to get your API Key

Sample Response

JSON
[
    {
      symbol:"SPY",
      name:"SPDR S&P 500 ETF Trust",
      country:"US",
      expense_ratio:0.0009,
      aum:762117890000,
      num_holdings:504
    },
    {
      symbol:"IVV",
      name:"iShares Core S&P 500 ETF",
      country:"US",
      expense_ratio:0.0003,
      aum:615420180000,
      num_holdings:503
    },
    {
      symbol:"VOO",
      name:"Vanguard S&P 500 ETF",
      country:"US",
      expense_ratio:0.0003,
      aum:598220910000,
      num_holdings:506
    }
]

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

  • 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.
  • Sign up for a free account to instantly get your API key, then pass it in the X-Api-Key header on every request. The documentation above includes ready-to-run examples in cURL, Python, JavaScript, Node.js, and more.
  • 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.
  • 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.
  • Call the /v1/etf endpoint with the required ticker parameter (e.g. ticker=SPY, including any exchange suffix like EUNL.DE when required); the response includes a holdings array where each entry has the constituent ticker, num_shares, percentage weight, and value, alongside num_holdings, aum, and expense_ratio. For live quotes on those individual constituents, see the Stock Price API.
  • Use the /v1/etfsearch endpoint, which accepts filters including holdings (a comma-separated AND match like AAPL,MSFT that returns only ETFs holding every listed ticker), min_aum/max_aum, min_expense_ratio/max_expense_ratio, and country; results are sorted by AUM descending, capped at 50 per page, and you paginate with offset. These search and listing endpoints require a Business, Professional, or annual subscription, shown on pricing.
  • The /v1/etflist endpoint returns a JSON array of supported ticker symbols, paginated up to 1000 per call; increment the offset parameter 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.
  • Premium members receive real-time prices while free users get 15-minute delayed data, and the price, aum, expense_ratio, num_holdings, and holdings fields on /v1/etf are premium only. See pricing for the plans that unlock live prices and these fields, or use the Mutual Fund API for fund equivalents.