Recipe 50 of 65
Hyperliquid exchange-wide daily volume, trades and users
/v1/hyperliquid/stats/volume gives hourly venue-wide volume and fill counts to roll up into days (halve both, each trade is counted from both sides); daily distinct traders are not served by the API and come from the fills archive.
GET /v1/hyperliquid/stats/volume answers the volume and trades: without symbol it returns the whole venue's traded
notional and fill count per hour, newest first. Sum 24 rows for a day. Both figures count every trade twice, once for each side, so halve them for the
traded volume and the number of trades. Daily active users are not in this response; see the caveat. The full parameter lists are on
Volume by coin and Exchange stats.
Quick answer
Read 168 hours and roll them up by UTC day, halving both figures.
# the last 7 days of venue-wide volume and trades, by UTC day, counting each trade once
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats/volume?limit=168" \
| jq '.volume | group_by(.ts[:10]) | map({day: .[0].ts[:10], hours: length, volume_usd: ((map(.volume) | add) / 2), trades: ((map(.n_fills) | add) / 2 | floor)})'Example response
Captured from the live API on 2026-10-24 at 17:16 UTC with limit=3, all three rows shown.
ts is the start of the hour, volume the USD notional of every fill in it and n_fills the number of fills, over
every market (symbol: null). The 17:00 row is the hour in progress. 16:00 UTC is $931M of fills, about $466M traded.
{
"volume": [
{
"ts": "2026-10-24T17:00:00+00:00",
"volume": 88954522.76906112,
"n_fills": 101693,
"symbol": null
},
{
"ts": "2026-10-24T16:00:00+00:00",
"volume": 931259987.9218321,
"n_fills": 496094,
"symbol": null
},
{
"ts": "2026-10-24T15:00:00+00:00",
"volume": 2269356179.8221626,
"n_fills": 825940,
"symbol": null
}
],
"nextCursor": "eyJ0cyI6IjIwMjYtMTAtMjQgMTU6MDA6MDAifQ"
}Variations
Check the double count on one coin. With symbol, the same route answers one coin; set it beside the hourly candle of that coin.
# BTC volume and fills by the hour
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats/volume?symbol=BTC&limit=3"# the hourly BTC candles for the same hours; volume_usd and n_trades count each trade once
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=BTC&interval=1h&limit=4"On the same capture BTC's 16:00 hour read volume $511,282,097 and n_fills 45,210 on this route, against volume_usd
$255,641,049 and n_trades 22,605 on the candle: exactly two to one.
Accounts and open interest per hour. /stats is the venue's hourly state: perp equity, open interest, open-position counts, and count_wallets.
# venue-wide equity, open interest and position counts, newest hours first
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats?limit=3"On the same capture the 16:00 row read count_wallets 139,474, count_open_positions 424,653 and open_interest
$14.99B.
Page back further. nextCursor continues below the oldest hour returned; pass it back verbatim.
# the 168 hours before the cursor; NEXT is the previous response's nextCursor, passed back verbatim
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats/volume?limit=168&cursor=$NEXT"Before you rely on it
Daily users are not served
Volume and trades are served; venue-wide distinct daily traders are not. count_wallets in /stats counts the
wallets that had an account snapshot in that hour, whether or not they traded, so it is not a daily-users figure.
For distinct traders per day, count distinct wallet values in the day's fills file from the Parquet archive.
Both sides, every market
volume and n_fills sum every fill row, and a trade has one row per side, so both are about twice the traded figure.
Without symbol they also include spot pairs and every HIP-3 builder dex, not just core perps. The newest row is the
hour in progress, and the newest day in the roll-up is partial.
Ask your agent
No MCP tool returns venue-wide volume history: run the Quick answer call.