🔍

Replace {indicator} with any indicator name from the directory — for example /indicator/rsi, /indicator/macd, /indicator/ema. The request structure is identical for every indicator; only the indicator-specific parameters differ.

Parameters

NameTypeRequiredDefaultDescription
exchange string Yes Exchange identifier, e.g. binance, bybit, coinbase. See Exchanges for the full list.
symbol string Yes Trading pair, e.g. BTCUSDT.
timeframe string Yes Candle interval. One of: 1m, 5m, 15m, 1h, 4h, 1d, 1w.
results integer No 1 Number of historical values to return. Use max to return all available results. See Historical Values.
backtrack integer No 0 Candles to skip from the most recent. Shifts the result window back in time. See Historical Values.
[indicator params] varies No varies Each indicator accepts its own parameters (e.g. period, source). See the individual indicator page for the full list.

Example — RSI

curl -G https://v2.taapi.io/indicator/rsi \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "exchange=binance" \
  --data-urlencode "symbol=BTCUSDT" \
  --data-urlencode "timeframe=1h" \
  --data-urlencode "period=14"
const res = await fetch(
  'https://v2.taapi.io/indicator/rsi' +
  '?exchange=binance&symbol=BTCUSDT&timeframe=1h&period=14',
  { headers: { Authorization: 'Bearer YOUR_API_KEY' } }
);
const data = await res.json();
// { value: [62.34], timestamp: [1708300800] }
import requests

resp = requests.get(
    'https://v2.taapi.io/indicator/rsi',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    params={
        'exchange':  'binance',
        'symbol':    'BTCUSDT',
        'timeframe': '1h',
        'period':    14,
    }
)
print(resp.json())
# {'value': [62.34], 'timestamp': [1708300800]}

Response

Results are always wrapped in arrays, even when only one value is returned:

200 OK
{
  "value":     [62.34],
  "timestamp": [1708300800]
}

Multi-output indicators return named array fields instead of a single value. For example, MACD returns valueMACD, valueMACDSignal, and valueMACDHist. See each indicator's page for its specific output fields.

Errors

Response
{ "value": [62.34], "timestamp": [1708300800] }

Candle data is being fetched for the first time. Retry the same request after 1–2 seconds.

Response
{ "pending": true, "key": "ta:binance:BTCUSDT:1h:rsi:..." }
Response
{ "error": "Missing required: exchange, symbol, timeframe" }
Response
{ "error": "Invalid or missing API key." }
Response
{ "error": "Rate limit exceeded. Your plan allows 30 requests per 15 seconds." }

Historical values

Add results=N to get N historical values in one call. Add backtrack=N to shift the window back N candles. See Historical Values for a full explanation.

Last 5 RSI values
GET /indicator/rsi?exchange=binance&symbol=BTCUSDT&timeframe=1h&results=5
Response
{
  "value":     [61.2, 63.4, 58.9, 67.1, 62.3],
  "timestamp": [1708279200, 1708282800, 1708286400, 1708290000, 1708293600]
}
TODO(human): Confirm whether value[0] is the oldest or most recent result in a multi-value response. Verify with a live API call.

Data injection (bring your own candles)

To compute an indicator on your own candle data instead of fetching from an exchange, use POST /indicator/{indicator}. See Data Injection.