GET
/api/v1/hyperliquid/leaderboardStandard tier+ · 300 req/minHyperliquid trader leaderboard snapshot for a given time window.
Who's making money on Hyperliquid right now? This returns the top N traders for a given window (1d, 7d, 30d, YTD, or all-time), ranked by PnL. Use it to watch smart-money addresses, seed a copy-trading tool, or build a whale-follower UI.
Query parameters
All query parameters are optional unless marked required.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| window | enum | optional | 1d | Which leaderboard window. 1d7d30dytdall |
| limit | number | optional | 50 | How many traders to return. Max 200. |
Response shape
Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.
data payloadtypescript
// Wrapped in the standard envelope:
// {
// data: /* shape below */,
// meta?: { total?: number; limit?: number; offset?: number; ... }
// }
{
window: "1d" | "7d" | "30d" | "ytd" | "all";
ts: number | null; // snapshot ts of the leaderboard we rendered
traders: Array<{
rank: number;
address: string;
pnl: number; // USD
pnlPercent: number | null;
volume: number; // USD
accountValue: number; // USD
}>;
}Example
Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.
Requestbash
curl -sS "http://localhost:3000/api/v1/hyperliquid/leaderboard?window=7d&limit=10" \
-H "Authorization: Bearer cg_live_YOUR_KEY"Responsejson
{
"data": {
"window": "7d",
"ts": 1744834800000,
"traders": [
{
"rank": 1,
"address": "0xabc123...def",
"pnl": 4250000,
"pnlPercent": 0.58,
"volume": 310000000,
"accountValue": 11500000
},
{
"rank": 2,
"address": "0x9f8b...01a",
"pnl": 3110000,
"pnlPercent": 0.41,
"volume": 215000000,
"accountValue": 10200000
}
]
},
"meta": { "total": 2, "window": "7d", "limit": 10 }
}Notes
- Addresses are the raw EVM address — lowercase, no checksum cast. Normalise client-side if you need EIP-55.
- A missing snapshot returns `{ traders: [] }` with `ts: null` — that's a 200, not a 404.
Next
Check the error code reference, or get an API key to try the request against your own account.