Hyperliquid stats: daily volume, open interest and perps analytics
Hyperliquid's perps volume hour by hour, for the venue or one coin, open interest per coin beside the venue's own figure, and equity and position counts over time: the numbers behind any Hyperliquid dashboard, over MCP, REST and the CLI.
“What were Hyperliquid's perps volume and open interest each day this week?”
hl_stats“Which coins carry the most open interest on Hyperliquid right now?”
hl_marketHyperliquid stats right now
The venue's equity, open interest and positions at the newest hour, and open interest per coin at the latest 5-minute snapshot: real answers of the API, captured on a schedule.
Venue stats · /stats
/v1/hyperliquid/statsOpen interest per coin · /positions/symbols
/v1/hyperliquid/positions/symbolsOpen interest and funding, on vike.io
Funding rate and open interest per perp, hourly over 1, 7 or 30 days, beside limit-order absorption: how much market buying and selling resting limit orders soaked up.
Volume, open interest and venue stats over time
Hour by hour, for the whole venue or one coin. Volume is the traded notional counted once per trade (one side), the figure the candles report; until 2026-10-25 it counted both sides of every trade and was exactly twice that.
Ask your AI: hl_stats (views ecosystem, volume; 1 credit a call) and hl_market (view open_interest; 1 credit a call). Connect Claude, ChatGPT or Cursor: AI & API →
Perps volume per hour, the whole venue or one coin
- Route
GET /v1/hyperliquid/stats/volume- CLI
vike-data hl stats- MCP
hl_stats· 1 credit- Cost
- 1 request of the hourly limit
Hourly perp volume, whole venue or one coin.
volume is the traded notional counted once per trade (one side), the figure the candles report; until 2026-10-25 it counted both sides of every trade and was exactly twice that. The venue total (no symbol) is perp volume, builder-dex perps included, and leaves out spot and outcome markets; naming one of those as symbol still returns it. n_fills counts fill records, two per trade (one for each side).
Parameters
| Parameter | In | Description |
|---|---|---|
symbol | query | HL ticker. Omit for the whole venue |
start | query | ISO-8601 UTC bounds |
end | query | ISO-8601 UTC bounds |
limit | query | Default 500, max 5000 |
cursor | query | Keyset cursor |
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats/volume?limit=168"
import os
from collections import defaultdict
import requests
r = requests.get(
"https://data.vike.io/v1/hyperliquid/stats/volume",
params={"limit": 168}, # the last 168 hours of the whole venue, newest first
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
).json()
daily = defaultdict(float)
for h in r["volume"]:
daily[h["ts"][:10]] += h["volume"] # each trade counted once
for day, usd in sorted(daily.items()): # the first and the last day are partial
print(day, f"${usd:,.0f}")
vike-data hl stats --view volume --limit 168
# any MCP client; or from the terminal:
vike-data call hl_stats --args '{"view": "volume", "limit": 168}'
Equity, open interest and positions of the whole venue, hour by hour
- Route
GET /v1/hyperliquid/stats- CLI
vike-data hl stats- MCP
hl_stats· 1 credit- Cost
- 1 request of the hourly limit
Ecosystem time series: perp equity, open interest, position counts.
Parameters
| Parameter | In | Description |
|---|---|---|
start | query | ISO-8601 UTC bounds |
end | query | ISO-8601 UTC bounds |
limit | query | Default 500, max 5000 |
cursor | query | Keyset cursor |
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats?limit=168"
import os, requests
r = requests.get(
"https://data.vike.io/v1/hyperliquid/stats?limit=168",
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
)
print(r.json())
vike-data hl stats --limit 168
# any MCP client; or from the terminal:
vike-data call hl_stats --args '{"view": "ecosystem", "limit": 168}'
Open interest per coin, beside the venue's own figure
- Route
GET /v1/hyperliquid/positions/symbols- CLI
vike-data hl market- MCP
hl_market· 1 credit- Cost
- 1 request of the hourly limit
Market-wide open interest per coin at the latest snapshot, with the venue's own OI alongside our aggregate so the two can be reconciled.
Parameters
None.
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/positions/symbols"
import os
import requests
coins = requests.get(
"https://data.vike.io/v1/hyperliquid/positions/symbols",
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
).json()
for c in coins[:10]: # the most open interest first
print(c["symbol"], f"${c['total_value']:,.0f}", "venue:", c["venue_open_interest_usd"])
vike-data hl market --view open_interest
# any MCP client; or from the terminal:
vike-data call hl_market --args '{"view": "open_interest"}'
13 studies
Each with the sentence to ask your AI instead. Every block was run against the live API on 2026-11-03.
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.
- Uses
/ohlcv,/stats,/stats/volume- Verified
- live API, 2026-11-03: 6 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the last 7 days of venue-wide volume and trades, by UTC day, counting each trade once
r = requests.get(
"https://data.vike.io/v1/hyperliquid/stats/volume?limit=168",
headers={"X-API-Key": API_KEY},
)
# then: 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)})'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# BTC volume and fills by the hour
r = requests.get(
"https://data.vike.io/v1/hyperliquid/stats/volume?symbol=BTC&limit=3",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the hourly BTC candles for the same hours; volume_usd and n_trades count each trade once
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=BTC&interval=1h&limit=4",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# venue-wide equity, open interest and position counts, newest hours first
r = requests.get(
"https://data.vike.io/v1/hyperliquid/stats?limit=3",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the 168 hours before the first page's last hour; NEXT is its nextCursor, passed back verbatim
first = requests.get(
"https://data.vike.io/v1/hyperliquid/stats/volume?limit=168",
headers={"X-API-Key": API_KEY},
).json()
NEXT = first["nextCursor"]
r = requests.get(
f"https://data.vike.io/v1/hyperliquid/stats/volume?limit=168&cursor={NEXT}",
headers={"X-API-Key": API_KEY},
)
How healthy is Hyperliquid: total perp equity, open interest and OI-to-equity over time?
One row per hour of total perp equity, open interest and position counts, from /v1/hyperliquid/stats; divide open_interest by total_perp_equity for the ratio.
- Uses
/positions/symbols,/stats- Verified
- live API, 2026-11-03: 6 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the last 30 days, one row per hour, newest first
r = requests.get(
"https://data.vike.io/v1/hyperliquid/stats?limit=720",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# every hour of September 2026
r = requests.get(
"https://data.vike.io/v1/hyperliquid/stats?start=2026-09-01T00:00:00Z&end=2026-09-30T23:59:59Z&limit=720",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# OI-to-equity and the share of positions in profit, hour by hour
r = requests.get(
"https://data.vike.io/v1/hyperliquid/stats?limit=168",
headers={"X-API-Key": API_KEY},
)
# then: jq '.metrics[] | {ts, oi_to_equity: (.open_interest / .total_perp_equity), in_profit: (.count_positions_in_profit / .count_open_positions)}'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# NEXT is the first page's nextCursor: the 720 hours before the last row it returned
first = requests.get(
"https://data.vike.io/v1/hyperliquid/stats?limit=720",
headers={"X-API-Key": API_KEY},
).json()
NEXT = first["nextCursor"]
r = requests.get(
f"https://data.vike.io/v1/hyperliquid/stats?limit=720&cursor={NEXT}",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# open interest per coin now, with the venue's published open interest beside it
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions/symbols",
headers={"X-API-Key": API_KEY},
)
Hyperliquid open interest per coin, and how it reconciles with the venue
Open interest of every Hyperliquid coin summed from open positions, with the venue's own figure beside it.
- Uses
/positions/symbols,/v1/hl-cohorts/symbols/{…}/metrics- Verified
- live API, 2026-11-03: 5 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# open interest of every coin at the latest snapshot, biggest first
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions/symbols",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the ten coins with the most open interest, with position counts
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions/symbols",
headers={"X-API-Key": API_KEY},
)
# then: jq '.[:10] | map({symbol, total_value, count})'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# our aggregate over the venue's published open interest, per coin
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions/symbols",
headers={"X-API-Key": API_KEY},
)
# then: jq '.[] | select(.venue_open_interest_usd != null) | {symbol, ratio: (.total_value / .venue_open_interest_usd)}'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the share of open positions that are longs, per coin
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions/symbols",
headers={"X-API-Key": API_KEY},
)
# then: jq '.[:20] | map({symbol, long_share: (.count_long / .count)})'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# BTC open interest and position count, one row per hour for a week
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/metrics?limit=168",
headers={"X-API-Key": API_KEY},
)
Hourly open interest and position count history of a Hyperliquid coin
One row per hour with position_count, long count, long and total notional in USD and bias, from /v1/hl-cohorts/symbols/{symbol}/metrics; /v1/hyperliquid/symbols/hourly adds the venue's own open interest per hour.
- Uses
/symbols/hourly,/v1/hl-cohorts/symbols/{…}/metrics- Verified
- live API, 2026-11-03: 5 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the newest hourly rows for BTC; the first row is the hour still in progress
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/metrics?limit=3",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# BTC hourly close, open interest, funding rate and premium for the last day
r = requests.get(
"https://data.vike.io/v1/hyperliquid/symbols/hourly?symbols=BTC&days=1",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# one week of hourly BTC rows
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/metrics?start=2026-10-10T00:00:00Z&end=2026-10-16T23:59:59Z&limit=168",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# hourly BTC positioning of positions opened within the previous 24 hours
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/metrics?openedWithin=24h&limit=48",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# hourly positioning in the XYZ platinum perp
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/symbols/xyz:PLATINUM/metrics?limit=24",
headers={"X-API-Key": API_KEY},
)
How is a Hyperliquid coin's open interest split by position size and by account size?
Split one coin's open positions into ten position-size buckets with /v1/hl-cohorts/symbols/{symbol}/size-breakdown; /cohort-metrics?axis=size splits the same book by the size of each wallet's account.
- Uses
/v1/hl-cohorts/segments,/v1/hl-cohorts/symbols/{…}/cohort-metrics,/v1/hl-cohorts/symbols/{…}/size-breakdown- Verified
- live API, 2026-11-03: 4 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# BTC open positions in ten position-size buckets, largest first
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/size-breakdown",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# BTC positioning per account-size tier, newest settled hour
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=size&hours=1",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# one week of BTC positioning per position-size bucket
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=tier&hours=168",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# every cohort ladder with its bounds
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/segments",
headers={"X-API-Key": API_KEY},
)
How concentrated is Hyperliquid open interest? Top-10 wallets' share of BTC OI
Sum size_usd of the 10 rows from /v1/hyperliquid/positions?symbol=BTC&sort=size&limit=10 and divide by BTC's total_value from /v1/hyperliquid/positions/symbols.
- Uses
/archive/url,/positions,/positions/symbols- Verified
- live API, 2026-11-03: 5 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the 10 biggest open BTC positions, largest first
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions?symbol=BTC&sort=size&limit=10",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# open interest per coin; take the BTC row
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions/symbols",
headers={"X-API-Key": API_KEY},
)
# then: jq '.[] | select(.symbol == "BTC")'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the 100 biggest open BTC positions, for a top-100 share
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions?symbol=BTC&sort=size&limit=100",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the top-10 notional and its split by side, to divide by BTC's total_value
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions?symbol=BTC&sort=size&limit=10",
headers={"X-API-Key": API_KEY},
)
# then: jq '{top10_usd: ([.positions[].size_usd] | add), longs_usd: ([.positions[] | select(.direction == "long") | .size_usd] | add), shorts_usd: ([.positions[] | select(.direction == "short") | .size_usd] | add)}'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# a temporary link to the current open positions of every asset, refreshed about every 5 minutes
r = requests.get(
"https://data.vike.io/v1/hyperliquid/archive/url?dataset=positions&date=latest",
headers={"X-API-Key": API_KEY},
)
List every Hyperliquid instrument that traded in the last hour, including HIP-3 dexes and spot
One row for every perp that traded in the last 60 minutes on every dex, each naming its dex, from /v1/hyperliquid/ohlcv/latest without dex; market=spot does the same for spot pairs.
- Uses
/ohlcv/latest- Verified
- live API, 2026-11-03: 4 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# every perp that traded in the last hour, on every dex, one row each
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# every spot pair that traded in the last hour
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest?market=spot",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# how many instruments traded in the last hour on each dex
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest",
headers={"X-API-Key": API_KEY},
)
# then: jq '.candles | group_by(.dex) | map({dex: .[0].dex, instruments: length})'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# only the markets of the PARA dex
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest?dex=PARA",
headers={"X-API-Key": API_KEY},
)
Screen all Hyperliquid coins for the biggest 1-minute move right now
One call to /v1/hyperliquid/ohlcv/latest returns the newest 1-minute candle of every perp that traded in the last hour; rank them by (close - open) / open, or by volume_usd for the most traded coins.
- Uses
/ohlcv,/ohlcv/latest- Verified
- live API, 2026-11-03: 4 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the five biggest 1-minute moves among coins with at least 20 trades in their newest minute
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest",
headers={"X-API-Key": API_KEY},
)
# then: jq '(.candles | map(.ts) | max) as $t | [.candles[] | select(.ts >= $t - 60000 and .n_trades >= 20 and (.symbol | startswith("#") | not)) | {symbol, dex, ts, open, close, n_trades, move_pct: ((.close - .open) / .open * 100)}] | sort_by(-(.move_pct | fabs)) | .[:5]'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the five coins with the most USD traded in their newest minute
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest",
headers={"X-API-Key": API_KEY},
)
# then: jq '(.candles | map(.ts) | max) as $t | [.candles[] | select(.ts >= $t - 60000 and (.symbol | startswith("#") | not)) | {symbol, dex, ts, volume_usd, n_trades}] | sort_by(-.volume_usd) | .[:5]'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the newest candle of every XYZ market
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest?dex=XYZ",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the last 60 one-minute ANIME candles
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=ANIME&interval=1m&limit=60",
headers={"X-API-Key": API_KEY},
)
Which HIP-3 builder dex is busiest this minute?
Call /v1/hyperliquid/ohlcv/latest without dex, keep the rows of the newest minute, and sum volume_usd and n_trades per dex; each row names its own dex.
- Uses
/ohlcv,/ohlcv/latest- Verified
- live API, 2026-11-03: 4 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# USD traded, trades and active symbols per dex in the newest minute
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest",
headers={"X-API-Key": API_KEY},
)
# then: jq '(.candles | map(.ts) | max) as $t | [.candles[] | select(.ts == $t and (.symbol | startswith("#") | not))] | group_by(.dex) | map({dex: .[0].dex, symbols: length, volume_usd: (map(.volume_usd) | add), n_trades: (map(.n_trades) | add)}) | sort_by(-.volume_usd)'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the newest candle of every XYZ market, most USD first
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest?dex=XYZ",
headers={"X-API-Key": API_KEY},
)
# then: jq '.candles | sort_by(-.volume_usd) | .[:5] | map({symbol, ts, volume_usd, n_trades})'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# symbols per dex that traded in the last 60 minutes
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest",
headers={"X-API-Key": API_KEY},
)
# then: jq '[.candles[] | select(.symbol | startswith("#") | not)] | group_by(.dex) | map({dex: .[0].dex, symbols: length})'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# 24 hourly candles of one XYZ market
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=xyz:MRNA&dex=XYZ&interval=1h&limit=24",
headers={"X-API-Key": API_KEY},
)
HIP-3 stock perps on Hyperliquid: candles, volume, and who trades them
Candles, volume, biggest holders and recent large fills of a HIP-3 stock perp such as xyz:TSLA.
- Uses
/builders/{…}/fills,/ohlcv,/ohlcv/latest,/positions,/v1/hl-cohorts/symbols/{…}/large-fills- Verified
- live API, 2026-11-03: 5 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# a week of daily xyz:TSLA candles, whole UTC days
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=xyz:TSLA&dex=XYZ&interval=1d&start=2026-10-17T00:00:00Z&end=2026-10-24T00:00:00Z",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the 20 biggest open xyz:TSLA positions, largest first
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions?symbol=xyz:TSLA&sort=size&limit=20",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# xyz:TSLA fills over $50,000 in the last 24 hours
r = requests.get(
"https://data.vike.io/v1/hl-cohorts/symbols/xyz:TSLA/large-fills",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the newest 1-minute candle of every XYZ market that traded in the last hour
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest?dex=XYZ",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the newest xyz:TSLA fills routed through one builder code
r = requests.get(
"https://data.vike.io/v1/hyperliquid/builders/0xb84168cf3be63c6b8dad05ff5d755e97432ff80b/fills?symbol=xyz:TSLA&limit=100",
headers={"X-API-Key": API_KEY},
)
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.
- Uses
/ohlcv,/ohlcv/latest- Verified
- live API, 2026-11-03: 5 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# HYPE spot: USD traded over the last 24 hourly candles
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=HYPE&market=spot&interval=1h&limit=24",
headers={"X-API-Key": API_KEY},
)
# then: jq '{symbol, volume_usd: ([.candles[].volume_usd] | add)}'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# HYPE perp: the same 24 hours
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=HYPE&interval=1h&limit=24",
headers={"X-API-Key": API_KEY},
)
# then: jq '{symbol, volume_usd: ([.candles[].volume_usd] | add)}'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the newest 1-minute candle of every spot pair, most USD first
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest?market=spot",
headers={"X-API-Key": API_KEY},
)
# then: jq '.candles | sort_by(-.volume_usd) | .[:5] | map({symbol, ts, volume_usd, n_trades})'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# HYPE resolves to @107
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=HYPE&market=spot&interval=1d&limit=1",
headers={"X-API-Key": API_KEY},
)
# then: jq -r '.symbol'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# HYPE spot, 168 hourly candles; repeat without market=spot for the perp
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=HYPE&market=spot&interval=1h&limit=168",
headers={"X-API-Key": API_KEY},
)
# then: jq '[.candles[].volume_usd] | add'
Pick a tradable universe: the most liquid, most volatile or largest-OI Hyperliquid perps
Rank coins by open interest from /v1/hyperliquid/positions/symbols, then measure volatility from hourly closes on /v1/hyperliquid/symbols/hourly and daily volume from /v1/hyperliquid/ohlcv.
- Uses
/ohlcv,/ohlcv/latest,/positions/symbols,/symbols/hourly- Verified
- live API, 2026-11-03: 4 calls, all 200
The code
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the 30 coins with the most open interest
r = requests.get(
"https://data.vike.io/v1/hyperliquid/positions/symbols",
headers={"X-API-Key": API_KEY},
)
# then: jq '.[:30] | map({symbol, total_value, count})'
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# hourly closes of a basket over 30 days, one row per coin-hour
r = requests.get(
"https://data.vike.io/v1/hyperliquid/symbols/hourly?symbols=BTC,ETH,HYPE,SOL,ZEC&days=30",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# BTC's traded notional on 2026-10-23
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=BTC&interval=1d&start=2026-10-23T00:00:00Z&end=2026-10-24T00:00:00Z",
headers={"X-API-Key": API_KEY},
)
import os
import requests
API_KEY = os.environ["VIKE_API_KEY"] # your key, read from the environment
# the newest 1-minute candle of every coin that traded in the last hour
r = requests.get(
"https://data.vike.io/v1/hyperliquid/ohlcv/latest",
headers={"X-API-Key": API_KEY},
)