Schemas Get a free key
LIVE --:--:-- UTC Hyperliquid positions snapshot on a 5-min UTC grid — last boundary --:-- next in -:--
Sources · Hyperliquid

Free Hyperliquid API & historical data

Hyperliquid perps, wallet by wallet: traders, positions, fills, funding and ledgers, liquidations, builders, venue stats and candles — 45 routes under /v1/hyperliquid, free with one key (20,000 requests an hour, 200 a minute). The 10 cohort routes live under /v1/hl-cohorts and have their own page.

45
routes · 10 more on HL Cohorts
5-min
position snapshots, kept 1 year
fills
2025-12-31
time-bar candles since the end of that day

Point-in-time cohorts, for backtests

A position in the history carries the label its wallet had in that hour (pnl_cohort_basis, pnl_cohort_as_of), and label_causal the previous hour's, which has no lookahead. On /v1/hl-cohorts/symbols/{symbol}/cohort-metrics, axis=pnl with labelBasis=point_in_time returns each hour's label as it was, from 2026-04-07: with the default grading, daily resolution before 2026-08-06 and hourly from it. Position, liquidation and cohort-metrics responses say which basis each label has. Point-in-time vs current labels →

Position snapshots about every 5 minutes

Open positions are usually snapshotted 5 to 7 minutes apart and kept for one year. History is served from 2026-05-01: the 5-minute snapshots begin 2026-05-08 and the days before are hourly. The hourly cohort series are rolled up from the snapshots and start earlier, on 2026-04-07; some of their hours were rebuilt from fills rather than measured. Parquet files come one per UTC day from 2026-05-08, the first a partial day. Positions →

Standing orders

What was resting on a market at a 5-minute snapshot, what became of one wallet's orders, and where a coin's stops and limits cluster: three routes. Snapshots begin 2026-10-23 21:45 UTC; earlier instants, back to 2026-07-29, are rebuilt from checkpoints about 12 minutes apart, and a rebuild can miss short-lived orders. On /orders and /order-clusters, source says which feed answered; on the wallet route it names the feed behind the newest snapshot, not the window. Orders →

One key, one MCP server

Hyperliquid, HL Cohorts, Polymarket and on-chain wallets and tokens share one API key and one hourly budget (20,000 requests), over REST and over MCP at https://data.vike.io/mcp. Not every route has an MCP tool; the order routes do not. Connect an MCP client →

Paging is keyset, not offset. A paged list route returns nextCursor — pass it back verbatim as cursor, and stop when it is null (the order=asc event feeds are the exception: they keep returning a cursor, so stop on an empty page). A deep page costs the same as the first, and rows inserted while you page cannot shift across a page boundary. Page sizes are per route (most raw lists go to 5,000 rows).
Traders

Hyperliquid leaderboard: who is trading, and how well

Rankings that carry drawdown, Calmar, profit factor and streaks beside PnL — and one that separates trading PnL from deposits.

GET /v1/hyperliquid/traders Top perp traders by a metric over a window; size ≤ 100. Same ranking the MCP tool and AI chat quote.
GET /v1/hyperliquid/positions/match Who else is in this trade: open positions matching symbol · side · leverage · entry price; limit ≤ 500.
GET /v1/hyperliquid/leaderboard Leaderboard with drawdown, Calmar, recovery and profit factor, expectancy, streaks; window 1d | 7d | 30d | all; cursor.
GET /v1/hyperliquid/leaderboard/flow-adjusted Ranked on fills-derived realized PnL, with deposits and withdrawals reported beside it and a flow_unbalanced flag; cursor.

Leaderboard · /leaderboard

GET/v1/hyperliquid/leaderboard?limit=10
Open this side to see the captured response.

    
window
limit
GET/v1/hyperliquid/leaderboard?window={window}&limit={limit}

    
Press Send ▶ — the captured response appears here

    
Positions

Hyperliquid positions and open interest

Latest positions, or history from the 5-minute snapshots when you pass start / end.

GET /v1/hyperliquid/positions Latest open positions; pass start / end for history from the 5-minute snapshots — bound it by symbol or wallet. limit ≤ 5,000, cursor.
GET /v1/hyperliquid/positions/symbols Open interest per coin at the latest snapshot, with the venue's own OI beside it so the two reconcile.

Open interest per coin · /positions/symbols

GET/v1/hyperliquid/positions/symbols
Open this side to see the captured response.

    
symbol
cohort
limit
GET/v1/hyperliquid/positions?symbol={symbol}&cohort={cohort}&limit={limit}

    
Press Send ▶ — the captured response appears here

    

Every position row says where its PnL label came from: pnl_cohort_basis (point_in_time | current) and pnl_cohort_as_of.

Orders

Hyperliquid order history: what was resting, and what became of it

Limit orders on the book and the stops and take-profits waiting to trigger, from the 5-minute snapshots since 2026-10-23 21:45 UTC and, back to 2026-07-29, rebuilt from checkpoints about 12 minutes apart, which can miss short-lived orders.

GET /v1/hyperliquid/orders Orders resting at one instant, for a symbol, a wallet or both; at floors to 5 minutes; order_type, created_from / created_to; limit ≤ 1,000, cursor.
GET /v1/hyperliquid/wallets/{address}/orders What became of one wallet's orders in a window of up to 30 days: each order seen resting or filled, with its fills and a status; limit ≤ 1,000, cursor.
GET /v1/hyperliquid/symbols/{symbol}/order-clusters One coin's standing orders within range_pct of the mid, bucketed by price: bids and asks by limit price, stops and take-profits by trigger price.
Wallets

Hyperliquid wallet data: fills, funding, ledger

Summary, round-trip trades, raw fills, funding, the ledger and the builders its flow goes through.

GET /v1/hyperliquid/wallets/{address} Equity, cohorts, risk metrics, open positions and lifetime external flow for one wallet.
GET /v1/hyperliquid/wallets/{address}/trades Closed round-trip trades; symbol, start / end; limit ≤ 5,000, cursor.
GET /v1/hyperliquid/wallets/{address}/trades/summary Trade statistics overall and per coin — medians beside means.
GET /v1/hyperliquid/wallets/{address}/fills Raw fills; symbol, side = buy | sell, start / end; limit ≤ 5,000, cursor.
GET /v1/hyperliquid/wallets/{address}/funding Funding paid and received; limit ≤ 5,000, cursor.
GET /v1/hyperliquid/wallets/{address}/ledger Deposits, withdrawals, transfers and vault events; event_type filter; limit ≤ 5,000, cursor.
GET /v1/hyperliquid/wallets/{address}/builders Which builders this wallet's flow is routed through, as a share of its builder-routed volume; cursor.
GET /v1/hyperliquid/wallets/{address}/twaps One wallet's TWAP orders, one row per status line; symbol, status, twap_id, start / end, order; limit ≤ 5,000, cursor.
GET /v1/hyperliquid/twaps TWAP orders across wallets, one row per status line; wallet, twap_id, symbol, status, order; limit ≤ 5,000, cursor.
GET /v1/hyperliquid/ledger Deposits, withdrawals, transfers and vault events across wallets; min_usd, event_type, wallet, order; limit ≤ 5,000, cursor.
GET /v1/hyperliquid/leverage-changes Positions whose leverage or margin mode changed between two position snapshots; change, min_leverage, wallet, symbol, order; limit ≤ 5,000, cursor.

Fills tape · /wallets/{address}/fills

GET
Open this side to see the captured response.

    
address
symbol
limit
GET/v1/hyperliquid/wallets/{address}/fills?symbol={symbol}&limit={limit}

    
Press Send ▶ — the captured response appears here

    

The tape replays the fills captured for the most active wallet in the captured /traders reply. The builder's address chip is that same wallet.

Liquidations

Hyperliquid liquidations: where they happened, and where they would

Liquidation events (exact, from the node's fills since 2026-08-03; older rows inferred from position snapshots), the share of each coin's open interest close to liquidation, and one coin's open positions binned by their own liquidation price.

GET /v1/hyperliquid/liquidations Liquidation events, exact from the node's fills since 2026-08-03 (older rows inferred from position snapshots), each with its point-in-time pnl cohort where the label table covers it; limit ≤ 5,000, cursor.
GET /v1/hyperliquid/liquidations/risk Share of each coin's open interest sitting close to liquidation; axis + cohort filter; limit ≤ 500.
GET /v1/hyperliquid/symbols/{symbol}/liquidation-heatmap One coin's open positions binned by their own liquidation price and weighted by notional; a position reporting none is counted apart; bins 5–500.

OI near liquidation · /liquidations/risk

GET/v1/hyperliquid/liquidations/risk
Open this side to see the captured response.

    

Recent liquidations · /liquidations

GET/v1/hyperliquid/liquidations?limit=20
Open this side to see the captured response.

    
symbol
direction
limit
GET/v1/hyperliquid/liquidations?symbol={symbol}&direction={direction}&limit={limit}

    
Press Send ▶ — the captured response appears here

    
Builders

Hyperliquid builder codes: revenue, volume, users

A builder is a front-end or bot that attaches its address to an order and earns a slice of the fee. fee_usd is the builder's own revenue, not what the trader paid.

GET /v1/hyperliquid/builders Builder leaderboard: fee revenue, routed volume, unique traders, fills, market share; sort = fee | volume | users | fills; cursor.
GET /v1/hyperliquid/builders/stats Builder-code economics for the whole venue, day by day, plus lifetime totals.
GET /v1/hyperliquid/builders/{builder} One builder: window totals, per-asset and per-dex breakdowns, user volume deciles.
GET /v1/hyperliquid/builders/{builder}/users Wallets routing through one builder, ranked by volume, fees or their own PnL; cursor.
GET /v1/hyperliquid/builders/{builder}/fills Raw builder-routed fills, newest first, each fee beside its fee_token; cursor.
GET /v1/hyperliquid/builders/{builder}/series Fee, volume, users and fills per 1h or 1d bucket; cursor.

Builder leaderboard · /builders

GET/v1/hyperliquid/builders?limit=10
Open this side to see the captured response.

    
window
sort
limit
GET/v1/hyperliquid/builders?window={window}&sort={sort}&limit={limit}

    
Press Send ▶ — the captured response appears here

    
Venue

Hyperliquid stats over time

Perp equity, open interest and position counts; hourly volume; HYPE holders with staked balances.

GET /v1/hyperliquid/stats Ecosystem time series: perp equity, open interest, position counts; start / end; cursor.
GET /v1/hyperliquid/stats/volume Hourly perp volume, the whole venue or one coin; cursor.
GET /v1/hyperliquid/hype/holders HYPE holders: spot balance plus staked, per wallet; cursor.

Venue stats · /stats

GET/v1/hyperliquid/stats
Open this side to see the captured response.

    
limit
GET/v1/hyperliquid/hype/holders?limit={limit}

    
Press Send ▶ — the captured response appears here

    
Candles

Hyperliquid historical candles (OHLCV) from executed fills

Time bars and tick bars, perp and spot, the core venue and the HIP-3 DEXs — over REST, as an NDJSON export, and live over a WebSocket.

GET /v1/hyperliquid/ohlcv Bars from executed fills: 1m 5m 15m 30m 1h 4h 1d, or Nt tick bars; market = perp | spot; dex; start / end; limit ≤ 5,000.
GET /v1/hyperliquid/ohlcv/export The same bars as an NDJSON stream — one header line, then one bar per line; up to 5,000 bars per call.
GET /v1/hyperliquid/symbols/hourly Close · open interest · funding · premium per coin per hour, many coins at once; days ≤ 400.

Candles · /ohlcv

GET/v1/hyperliquid/ohlcv?symbol=BTC&interval=1h&market=perp&limit=48
Open this side to see the captured response.

    

Captured for BTC, ETH, SOL and HYPE at 1m, 15m, 1h, 4h and 1d, plus 15t tick bars (one bar per 15 trades) for BTC — 48 bars each.

Intervals

1m5m15m30m1h4h1dNt

Time bars come from minute and hourly rollups kept from the end of 2025-12-31. Tick bars (15t = one bar per 15 trades) are built from raw fills, kept without expiry, back to 2025-12-31 — the response's source says which table answered.

Markets and DEXs

market=perpmarket=spot

dex=HL is the core venue (perp and spot). HIP-3 builder-deployed perp DEXs — XYZ, CASH, HYNA, KM, FLX, VNTL, PARA, MKTS among them — are read live from the fills table, so a newly deployed DEX works without a release.

Three ways out

REST /ohlcv, limit ≤ 5,000 per call, start / end as ISO-8601 UTC or epoch ms. Bulk /ohlcv/export as NDJSON. Live closed bars on wss://data.vike.io/v1/stream (time intervals only).

NDJSON export

The first line names what answered — symbol, market, dex, interval, tz, source; every following line is one bar. Served as an attachment named hl_<symbol>_<interval>.ndjson.

bash
curl -H "X-API-KEY: vk_…" -o hl_BTC_1h.ndjson \
  "https://data.vike.io/v1/hyperliquid/ohlcv/export?symbol=BTC&interval=1h&start=2026-01-01T00:00:00Z"

WebSocket — closed bars

Authenticate with the same X-API-KEY header (?token= is for browsers, and puts the key in the URL), then subscribe per symbol and interval; market and dex are optional. A bar arrives about 30 to 45 seconds after its interval closes. seq rises by one per frame for a subscription, and its first value is wherever the feed has got to; across a reconnect compare ts, and backfill any step bigger than one interval over REST.

json
{"action": "subscribe", "symbol": "BTC", "interval": "1m"}

Build an /ohlcv request

symbol
market
limit
GET/v1/hyperliquid/ohlcv?symbol={symbol}&interval={interval}&market={market}&limit={limit}

    
Press Send ▶ — the captured response appears here

    

… or many symbols per hour with /symbols/hourly

symbols
days
GET/v1/hyperliquid/symbols/hourly?symbols={symbols}&days={days}

    
Press Send ▶ — the captured response appears here

    
Archive

Hyperliquid Parquet archive: fills and positions, one file per UTC day

Fills from 2026-05-01, positions from 2026-05-08. A file has no URL of its own: you ask the API for a signed link, valid 7 days.

GET /v1/hyperliquid/archive/datasets Which UTC days exist and what is in each file (rows, bytes, snapshots), the column schema and the current-positions file.
GET /v1/hyperliquid/archive/url A signed Cloudflare R2 link to one file, valid 7 days: dataset = fills | positions, date = YYYY-MM-DD (or latest for positions); redirect=1 answers 302.

Asking for a link is one ordinary request on your hourly budget; the download itself spends none, and there is no download quota. A link works for any number of requests until it expires, so DuckDB or pyarrow can read byte ranges straight from it. Free and keyless: BTC fills of one hour and BTC positions at one snapshot, starting at /archive/hl-samples/manifest.json.

The 10 routes under /v1/hl-cohorts

Hyperliquid cohorts →

Who is long and who is short by account size, realized-PnL percentile and position tier — every cohort of one coin, hourly, up to 8,760 hours in one request, with point-in-time labels.

FAQ

Hyperliquid API FAQ

How do I get Hyperliquid historical data?
Over REST with one free key: candles from the end of 2025-12-31, 5-minute position snapshots kept for one year, and wallet fills kept with no expiry, back to 2025-12-31. Candles also come as an NDJSON export.
How often are Hyperliquid positions captured?
Every 5 minutes, and the snapshots are kept for one year. /positions serves the latest by default and history when you pass start / end.
How do I page through a long list?
Read nextCursor from the response and send it back as cursor until it is null. There is no offset parameter: a keyset cursor makes every page cost the same and keeps rows from shifting between pages.
How far back do the candles go?
Time bars from the end of 2025-12-31 UTC. Tick bars are built from raw fills, kept without expiry back to 2025-12-31.
Can I get candles for HIP-3 DEXs and spot pairs?
Yes: pass dex for a builder-deployed perp DEX and market=spot for a spot pair. Symbols can be a perp ticker, a spot token or a raw index such as @107.
Is this Hyperliquid API free?
Yes. One free key, 20,000 requests an hour and 200 a minute, up to 3 keys per account, nothing billed.