vike

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.

cURL
# 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.

Example response
{
  "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.

cURL — one 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"
cURL — the candle
# 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.

cURL — stats
# 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.

cURL — next page
# 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.

Example response
{  "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"}