🔍

Two endpoints let you discover what markets TAAPI supports at runtime:

GET /exchanges

GET /exchanges

Returns all supported exchanges. No parameters. No authentication required.

curl https://v2.taapi.io/exchanges \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch('https://v2.taapi.io/exchanges', {
  headers: { Authorization: 'Bearer YOUR_API_KEY' }
});
const exchanges = await res.json();
TODO(human): Confirm whether stock exchanges appear in the GET /exchanges response. If yes, document them here. If no, note that only crypto is supported and remove any NYSE/AAPL examples from other pages.

The response is a list of exchange identifiers. Pass the exact identifier string as the exchange parameter in indicator and candle requests.

Example response (illustrative)
[
  "binance",
  "binancefutures",
  "bybit",
  "coinbase",
  "kraken",
  "kucoin"
]
TODO(human): Replace with the actual response from GET /exchanges.

GET /exchanges/{exchange}/symbols

GET /exchanges/{exchange}/symbols

Returns all trading pairs supported for a given exchange.

ParameterTypeRequiredDescription
exchange string (path) Yes Exchange identifier, e.g. binance, bybit.
curl https://v2.taapi.io/exchanges/binance/symbols \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch('https://v2.taapi.io/exchanges/binance/symbols', {
  headers: { Authorization: 'Bearer YOUR_API_KEY' }
});
const symbols = await res.json();
Example response (illustrative)
[
  "BTCUSDT",
  "ETHUSDT",
  "SOLUSDT",
  "BNBUSDT",
  ...
]

Errors

Response
["BTCUSDT", "ETHUSDT", ...]
Response
{ "error": "Exchange not found: unknownexchange" }

Symbol format

Use the no-slash format: BTCUSDT. This is the canonical format accepted by all TAAPI endpoints and matches how symbols are returned by GET /exchanges/{exchange}/symbols.

Exchange casing

Exchange identifiers in REST requests are lowercase (e.g. binance, bybit). In WebSocket streaming update messages the subscription key uses uppercase (e.g. BINANCE:BTC/USDT:1m). This is intentional — the casing difference is by design, not a bug.