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.
# 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)}'# 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.
{
"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.
# 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.
# 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.
# 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.
Compare HYPE spot and HYPE perp volume on Hyperliquid over the last 24 hours