Hyperliquid leaderboard
GET /v1/markets/hyperliquid/leaderboard ranks every Hyperliquid trader
(~38k accounts) by PnL, ROI, or volume over a performance window
(day · week · month · allTime). It mirrors Hyperliquid's own network
leaderboard (the data behind app.hyperliquid.xyz/leaderboard), refreshed into
Artery on a schedule.
These are account-level totals — a trader's whole-account PnL/ROI/volume, not split by asset class. A per-asset-class breakdown (equities vs perp tokens vs spot) is a separate, computed capability and is not part of this endpoint.
This is network-wide and public — unlike /v1/me/stats,
which is the org-scoped leaderboard over your own wallets. Use /me/stats
for a competition among your customers; use this endpoint to see where any
address ranks across all of Hyperliquid.
When to use this
- Network rankings. Top traders by realized PnL or ROI over the last day, week, month, or all-time.
- Rank lookup. Pass
address=0x…to get one wallet's rank + metrics for a window without paging the whole board. - Volume leaders.
sortBy=vlmfor the highest-turnover accounts.
Request
bash# Top 100 traders by all-time PnL
curl -H "Authorization: Bearer art_live_<your-key>" \
"https://api.artery.questflow.ai/v1/markets/hyperliquid/leaderboard?window=allTime&sortBy=pnl&limit=100"
# One trader's rank by day ROI
curl -H "Authorization: Bearer art_live_<your-key>" \
"https://api.artery.questflow.ai/v1/markets/hyperliquid/leaderboard?window=day&sortBy=roi&address=0x85ecf584f25db6f146718b86d493e33c5af72052"Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
window | string | no | day (default), week, month, or allTime. The performance window. |
sortBy | string | no | pnl (default), roi, or vlm. The ranked metric. |
order | string | no | desc (default) or asc. |
limit | number | no | Page size, clamped to 1–500. Default 100. |
offset | number | no | Pagination offset. Default 0. |
address | string | no | A 0x wallet. When set, returns that trader's single entry + rank for (window, sortBy) instead of a page. |
Invalid window / sortBy / order / address → 400 validation_failed.
Response
jsonc{
"window": "allTime",
"sortBy": "pnl",
"order": "desc",
"capturedAt": "2026-06-15T02:00:00.000Z", // snapshot freshness (null if never pulled)
"total": 38913, // traders in this window
"count": 100,
"limit": 100,
"offset": 0,
"rows": [
{
"rank": 1,
"ethAddress": "0x85ecf584f25db6f146718b86d493e33c5af72052",
"displayName": null,
"accountValue": 58046991.96, // current account value (USD)
"pnl": 5052941.87, // window PnL (USD)
"roi": 0.0558, // window ROI as a FRACTION (0.0558 = 5.58%)
"vlm": 86129401448.88 // window traded volume (USD notional)
}
// …
]
}With address, the shape is { window, sortBy, order, capturedAt, trader }
where trader is a single row (with its rank) or null if the address isn't
on the board for that window.
roi is a fraction, not a percentage: 0.0558 means +5.58%. pnl,
vlm, and accountValue are in USD.
Freshness
The board is refreshed from Hyperliquid on a schedule (hourly by default), so
capturedAt can lag live by up to the refresh interval. The day/week/
month windows are rolling — they always describe the trailing period as of
capturedAt.