vike

Example 50 of 65

Hyperliquid exchange-wide daily volume, trades and users

Roll the hourly venue-wide volume and fill counts of /v1/hyperliquid/stats/volume up into days (volume counts each trade once; halve the fill count for trades); 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 perp markets' traded notional and fill count per hour, newest first. Sum 24 rows for a day. volume counts each trade once; n_fills counts both sides of every trade, so halve it for 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 the fill count for trades.

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), 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.

Fill count is both sides; perp markets only

n_fills sums every fill row, and a trade has one row per side, so it is about twice the number of trades. volume counts each trade once (until 2026-10-25 it also counted both sides, so halve a day taken before that date). Without symbol the total covers perp markets, HIP-3 builder dexes included, and leaves out spot pairs and # outcome markets. 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"}