vike

Recipe 55 of 65

Which Hyperliquid tokens trade more on spot than on perp?

For a token you name, sum volume_usd from /v1/hyperliquid/ohlcv with market=spot and from the perp over the same hours; spot rows carry a spot index (@107), not a name, so a screen of every token needs the names first.

GET /v1/hyperliquid/ohlcv answers it for one token in two calls over the same hours, one with market=spot, and a sum of volume_usd on each. The spot call takes the token's name and answers with its spot index in symbol. A screen over every token is harder, because the all-symbols snapshot names spot pairs by index only. The full parameter list is on Candles.

Quick answer

Sum each leg over the same 24 hourly candles.

cURL — spot
# HYPE spot: USD traded over the last 24 hourly candles
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/ohlcv?symbol=HYPE&market=spot&interval=1h&limit=24" \
  | jq '{symbol, volume_usd: ([.candles[].volume_usd] | add)}'
cURL — perp
# HYPE perp: the same 24 hours
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/ohlcv?symbol=HYPE&interval=1h&limit=24" \
  | jq '{symbol, volume_usd: ([.candles[].volume_usd] | add)}'

Example response

Captured from the live API on 2026-10-24 at 17:16 UTC: the spot call without the jq tail, trimmed to the newest 2 of 24 candles.

symbol is the spot index the name resolved to: HYPE is @107. Summed over the 24 candles, HYPE spot traded $48.0M and the HYPE perp $446.9M in the same hours: the perp did 9.3 times the spot volume. Both count each trade once.

Example response
{
  "symbol": "@107",
  "market": "spot",
  "dex": "HL",
  "interval": "1h",
  "tz": "UTC",
  "source": "1h fills rollup",
  "candles": [
    {
      "ts": 1792857600000,
      "open": 75.071,
      "high": 75.772,
      "low": 74.841,
      "close": 75.619,
      "volume": 36333.08999999998,
      "volume_usd": 2732675.2912600036,
      "n_trades": 3028
    },
    {
      "ts": 1792861200000,
      "open": 75.611,
      "high": 75.633,
      "low": 75.43,
      "close": 75.591,
      "volume": 8209.319999999996,
      "volume_usd": 620032.7123000004,
      "n_trades": 541
    }
  ]
}

Variations

Right now, one minute. The newest minute of every spot pair, and of every perp, in two calls; HYPE is the @107 row on the spot side.

cURL — spot, newest minute
# the newest 1-minute candle of every spot pair, most USD first
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/ohlcv/latest?market=spot" \
  | jq '.candles | sort_by(-.volume_usd) | .[:5] | map({symbol, ts, volume_usd, n_trades})'

On the same capture HYPE's 17:15 minute was $3,474 on spot (@107, 18 trades) against $11,234 on the perp (60 trades). The busiest spot row was @243 with $34.7k; the response does not say which token that is.

Find a token's spot index. Ask for one candle by name; the response's symbol is the index to look for in the spot snapshot.

cURL — name to index
# HYPE resolves to @107
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/ohlcv?symbol=HYPE&market=spot&interval=1d&limit=1" \
  | jq -r '.symbol'

A longer window. A day can be dominated by one burst. A week of hourly candles per leg is a steadier comparison.

cURL — a week
# HYPE spot, 168 hourly candles; repeat without market=spot for the perp
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/ohlcv?symbol=HYPE&market=spot&interval=1h&limit=168" \
  | jq '[.candles[].volume_usd] | add'

Before you rely on it

Spot rows are named by index, so a full screen needs the names first

/ohlcv/latest?market=spot returns @107, @243 and so on, never a token name, and the API has no list that maps every index to its name. The name-to-index lookup works one token at a time, and a name with no spot pair is a 400. So screen the tokens you can name (for example every perp ticker), not every spot index.

Compare the same hours and enough of them

Sum both legs over the same ts values; a bar exists only where its market traded. The newest candle on each leg is still forming. Many spot pairs trade a few times an hour, so one minute, or even one hour, is too short to call a winner.

Ask your agent

Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words. The hl_ohlcv tool answers one call per market, at 1 credit a call.

Ask your agent
Compare HYPE spot and HYPE perp volume on Hyperliquid over the last 24 hours
Example response
{  "symbol": "@107",  "market": "spot",  "dex": "HL",  "interval": "1h",  "tz": "UTC",  "source": "1h fills rollup",  "candles": [    {      "ts": 1792857600000,      "open": 75.071,      "high": 75.772,      "low": 74.841,      "close": 75.619,      "volume": 36333.08999999998,      "volume_usd": 2732675.2912600036,      "n_trades": 3028    },    {      "ts": 1792861200000,      "open": 75.611,      "high": 75.633,      "low": 75.43,      "close": 75.591,      "volume": 8209.319999999996,      "volume_usd": 620032.7123000004,      "n_trades": 541    }  ]}