On-Chain Indicator

GET/gateway/v1/market/onchain-indicator

Returns on-chain indicator time-series for BTC or ETH.

Available metrics: `nupl`, `sopr`, `mvrv`, `puell-multiple`, `nvm`, `nvt`, `nvt-golden-cross`, `exchange-flows` (inflow/outflow/netflow/reserve).

Long ranges: each response is capped at about 100 data points. When `meta.has_more=true`, split `from`/`to` into smaller windows (about 90 days for daily data) and merge by timestamp client-side. For exchange-flow metrics, `all_exchange`, `spot_exchange`, and `derivative_exchange` are aggregate filters, not sums over the curated individual exchange list.

Query Parameters

symbolenum<string>required

Token ticker symbol. Can be `BTC` or `ETH`.

Available options:BTCETH
Example: BTC
metricenum<string>required

On-chain metric name. Can be `nupl`, `sopr`, `mvrv`, `puell-multiple`, `nvm`, `nvt`, `nvt-golden-cross`, or `exchange-flows/{inflow,outflow,netflow,reserve}`.

Available options:nuplsoprmvrvpuell-multiplenvmnvtnvt-golden-crossexchange-flows/inflowexchange-flows/outflowexchange-flows/netflowexchange-flows/reserve
Example: nupl
granularityenum<string>

Aggregation granularity.

Available options:day
Example: day
fromstring

Start of time range. Accepts Unix seconds or date string (YYYY-MM-DD). Defaults to 90 days ago when omitted. Maximum range is 365 days. Responses are capped at about 100 data points; when meta.has_more is true, split from/to into smaller windows (about 90 days for daily data).

Example: 2026-01-01
tostring

End of time range. Accepts Unix seconds or date string (YYYY-MM-DD). Defaults to today when omitted. Maximum range is 365 days. Responses are capped at about 100 data points; when meta.has_more is true, split from/to into smaller windows (about 90 days for daily data).

Example: 2026-03-01
exchangeenum<string>

Curated exchange filter for exchange-flow metrics. Use /v1/market/exchange-flow/exchanges to list labels.

Available options:all_exchangespot_exchangederivative_exchangecoinbase_primebinancecoinbase_advancedokxkrakenbybitbitstampgeminibitgetkucoinbitfinexgate_ioderibitmexchtx_globalbitflyercoinonebithumbupbithashkey_exchange
Example: all_exchange
On-Chain Indicator
const options = {method: 'GET'};

fetch('https://api.asksurf.ai/gateway/v1/market/onchain-indicator?symbol=BTC&metric=nupl&granularity=day&from=2026-01-01&to=2026-03-01&exchange=all_exchange', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
OK
{
  "$schema": "https://example.com/schemas/DataResponseMarketMetricPoint.json",
  "data": [
    {
      "exchange": "<string>",
      "exchange_name": "<string>",
      "metric": "<string>",
      "project_id": "<string>",
      "symbol": "<string>",
      "timestamp": 123,
      "value": 123
    }
  ],
  "meta": {
    "cached": true,
    "credits_used": 123,
    "empty_reason": "<string>",
    "has_more": true,
    "limit": 123,
    "offset": 123,
    "total": 123,
    "watermark": 123
  }
}