Recipe 42 of 65
List every Hyperliquid instrument that traded in the last hour, including HIP-3 dexes and spot
/v1/hyperliquid/ohlcv/latest without dex returns one row for every perp that traded in the last 60 minutes on every dex, each naming its dex; market=spot does the same for spot pairs.
GET /v1/hyperliquid/ohlcv/latest answers it in one call: the newest 1-minute candle of every symbol with a trade in
the last 60 minutes. Leave out dex and it answers for the core venue and every HIP-3 builder dex at once; each row carries its
dex. The list of rows is the list of instruments that traded in the last hour. A second call with market=spot
gives the spot pairs. The full parameter list is on
Latest candle of every coin.
Quick answer
Leave out dex to cover every dex at once.
# every perp that traded in the last hour, on every dex, one row each
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/ohlcv/latest"Example response
Captured from the live API on 2026-10-24 at 17:16 UTC, trimmed to 3 of 594 rows: one each from the core venue and two builder dexes.
Rows come ordered by dex, then symbol. The capture held 594 instruments: 456 on the core venue (HL), 104 on
XYZ, 21 on PARA, 9 on IO and 4 on MKTS. A builder-dex symbol carries its dex as a lower-case prefix. ts is
the start of the candle's minute in epoch milliseconds.
{
"market": "perp",
"dex": null,
"interval": "1m",
"tz": "UTC",
"source": "1m fills rollup",
"lookback_minutes": 60,
"candles": [
{
"symbol": "BTC",
"dex": "HL",
"ts": 1792862160000,
"open": 80115.0,
"high": 80116.0,
"low": 80101.0,
"close": 80101.0,
"volume": 6.755890000000001,
"volume_usd": 541168.0063000001,
"n_trades": 101
},
{
"symbol": "mkts:US500",
"dex": "MKTS",
"ts": 1792861800000,
"open": 759.55,
"high": 759.55,
"low": 759.55,
"close": 759.55,
"volume": 0.02,
"volume_usd": 15.190999999999999,
"n_trades": 1
},
{
"symbol": "xyz:SP500",
"dex": "XYZ",
"ts": 1792862160000,
"open": 7613.8,
"high": 7614.2,
"low": 7613.8,
"close": 7614.2,
"volume": 0.5650000000000001,
"volume_usd": 4301.9453,
"n_trades": 8
}
]
}Variations
Spot pairs. Pass market=spot.
# every spot pair that traded in the last hour
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/ohlcv/latest?market=spot"It returned 56 spot pairs, each named by its raw index such as @107.
A count per dex. Group the rows by dex.
# how many instruments traded in the last hour on each dex
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/ohlcv/latest" \
| jq '.candles | group_by(.dex) | map({dex: .[0].dex, instruments: length})'One dex. Pass dex.
# only the markets of the PARA dex
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/ohlcv/latest?dex=PARA"Before you rely on it
Traded in the last hour, not listed
A market with no trade in the last 60 minutes is absent, so this is the active list, not every listed market. Call it
at a quiet hour and the list is shorter. New builder dexes appear without notice, so read the dex values from the
response instead of keeping your own list.
Not every symbol is a ticker
Spot rows are named by raw index (@107); /ohlcv accepts a spot token's name, such as symbol=HYPE&market=spot,
and answers with its index, but no route lists every index with its name. On the core venue 278 of the 456 rows
were named # and a number, such as #14730: these are outcome contracts, not perps, priced between 0 and 1 and
numbered in pairs (#14730 and #14731 are the two sides of one market). They come back tagged market: perp and
never appear in positions; filter on the first character if you want tickers only.
Ask your agent
No MCP tool lists every instrument at once; hl_ohlcv reads one symbol per call.