---
title: "Get trader leaderboard"
method: GET
path: "/api/v1/leaderboard"
tags: ["Leaderboard"]
---

# Get trader leaderboard

`GET /api/v1/leaderboard`

Returns ranked traders (grades S/A/B) sorted by score descending. Supports cursor pagination and optional category/strategy filters.

## Query parameters

- `limit` integer
- `cursor` string
- `category` string
- `strategy` 'accumulator' | 'algo_trader' | 'arbitrageur' | 'directional' | 'event_driven' | 'market_maker' | 'momentum' | 'scalper' | 'speculator' | 'swing_trader'

## Headers

- `If-None-Match` string

## Response `200`

Ranked trader list

- object
  - `object` 'list', required
  - `data` LeaderboardEntry[], required
    - `id` string, required
    - `address` string, required
    - `username` string, nullable
    - `grade` string, nullable
    - `streak_tier` 'hot' | 'rising' | 'neutral' | 'cooling' | 'cold', nullable — Hot-streak tier (trailing-7d cross-sectional percentile); a separate axis from the all-time grade. Null when no recent activity.
    - `score` number, nullable
    - `pnl` number, nullable
    - `volume` number, nullable
    - `markets_traded` integer, nullable
    - `win_rate` number, nullable
    - `strategy_type` string, nullable
    - `platform` string, required
    - `last_active` string, date-time, nullable
  - `has_more` boolean, required
  - `next_cursor` string, nullable
  - `meta` ResponseMeta, required
    - `request_id` string, required — Unique request ID (req_ prefix).
    - `cached` boolean, required
    - `cache_age_s` integer, nullable — Cache age in seconds, null if not cached.

## Other responses

- `304` — Not Modified. Returned when If-None-Match matches the current leaderboard payload.
- `401` — Missing or invalid API key
- `402` — Active Insider subscription required
- `403` — Account access denied
- `408` — Request exceeded the server's 30-second transport timeout. The timeout response has an empty body because it is generated before handler-level JSON error shaping.
- `423` — Account is locked
- `429` — Rate limit exceeded (100 req/min; batch endpoints also reserve 100 batch item units/min before execution)
- `503` — Redis-backed authenticated rate limiter unavailable; retry after the per-process outage cooldown

## Changes

- **2026-06-01** `a311bdcfd354` — 1 warning, 1 info
  - removed the optional property `data/items/form_tier` from the response with the `200` status
  - added the optional property `data/items/streak_tier` to the response with the `200` status
- **2026-06-01** `422bd4dc1611` — 54 warning, 2 info
  - added the new `account_locked` enum value to the `error/code` response property for the response status `401`
  - added the new `account_locked` enum value to the `error/code` response property for the response status `402`
  - added the new `account_locked` enum value to the `error/code` response property for the response status `403`
  - added the new `account_locked` enum value to the `error/code` response property for the response status `423`
  - …52 more
- **2026-05-07** `2907497f4ca3` — 1 breaking, 14 info
  - the `query` request parameter `strategy` was restricted to a list of enum values
  - added the new optional `header` request parameter `If-None-Match`
  - added the new enum value `accumulator` to the `query` request parameter `strategy`
  - added the new enum value `algo_trader` to the `query` request parameter `strategy`
  - …11 more
- **2026-04-03** `24aa764c32ea` — 2 info
  - added the non-success response with the status `403`
  - added the non-success response with the status `423`
- **2026-03-25** `e658903dd89b` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/0xinsider/apis/0xinsider-api/changes/api/v1/leaderboard/get.md)

---

[API](https://skmtc.dev/0xinsider/apis/0xinsider-api.md) · [All operations](https://skmtc.dev/0xinsider/apis/0xinsider-api/llms.txt) · [OpenAPI document](https://skmtc.dev/0xinsider/apis/0xinsider-api/revisions/137fa0fd3297?raw)
