---
title: "Solana Traders Leaderboard"
method: GET
path: "/v2/pnl/leaderboard/top"
tags: ["Leaderboard"]
---

# Solana Traders Leaderboard

`GET /v2/pnl/leaderboard/top`

Ranks Solana trading wallets by recent PnL performance over supported windows (`1`, `7`, `30`, or `90` days). Use filters to remove low-signal wallets, arbitrage wallets, and one-off winners.

## Query parameters

- `sort` 'realized' | 'volume' | 'days' | 'roi' | 'win_percentage' | 'trades' | 'tokens'
- `direction` 'asc' | 'desc'
- `limit` integer
- `cursor` string
- `platform` 'axiom' | 'axiom-flash' | 'bloom' | 'photon'
- `excludeArbitrage` 'true' | 'false'
- `pnlMode` 'strict' | 'adjusted' | 'raw'
- `days` integer
- `minTrades` integer
- `minInvested` number
- `minDays` integer
- `minWinRate` number
- `minRoi` number
- `minClosedTokens` integer
- `maxSingleTokenPct` number

## Response `200`

Successful response.

- object
  - `traders` Top90dTrader[]
    - `wallet` string
    - `period` object
      - `realized` number, nullable
      - `realizedRaw` number, nullable — Gross realized PnL before strict or adjusted filtering.
      - `volume` number, nullable
      - `tradingDays` integer
      - `roi` number, nullable
      - `days` object
        - `profitable` integer
        - `losing` integer
        - `maxSinglePnl` number, nullable
        - `winRate` number, nullable
    - `pnlAdjustments` object
      - `mode` 'strict' | 'adjusted' | 'raw'
      - `invalidPnl` number, nullable
      - `adjustedCorrection` number, nullable
    - `ending` object
      - `pnl` object
        - `realized` number, nullable
        - `total` number, nullable
    - `invested` number, nullable
    - `proceeds` number, nullable
    - `counts` object
      - `buys` integer
      - `sells` integer
      - `trades` integer
      - `tokensTraded` integer
    - `averages` object
      - `buy` number, nullable
      - `sell` number, nullable
    - `tokens` object
      - `profitable` integer
      - `losing` integer
      - `closed` integer
    - `winRate` number, nullable
    - `timing` object
      - `firstTrade` integer, nullable
      - `lastTrade` integer, nullable
    - `lastSnapshotDate` string, date, nullable
    - `updatedAt` string, date-time, nullable
    - `identity` Identity — Unified wallet identity. Only fields with known values are returned; a wallet can carry multiple tags at once.
      - `name` string, nullable — Display name, if known.
      - `twitter` string, nullable — Twitter/X handle, if known.
      - `avatar` string, uri, nullable — Avatar image URL.
      - `type` string, nullable — Primary label for single-badge UIs, such as `kol`, `developer`, `pool`, `bot`, `hacker`, `spam_dusting`, `exchange`, or a platform tag.
      - `tags` string[] — All resolved labels for the wallet, including KOL, platform, pool, developer, bot, arbitrage, hacker, spam-dusting, or exchange tags.
      - `platforms` string[] — Normalized trading frontend tags such as `axiom`, `bloom`, or `photon`. Query filters also accept `axiom-flash`, which is normalized to `axiom` in identity responses.
      - `bot` object
        - `name` string, nullable
        - `avatar` string, uri, nullable
      - `pool` object
        - `program` string, nullable
        - `poolAddress` string, nullable
      - `developer` object
        - `token` string, nullable
        - `via` string[]
        - `pools` string[]
        - `creationTx` string, nullable
        - `createdAt` integer, nullable — Unix timestamp in seconds.
      - `hacker` object — Curated exploit/scam wallet label, when known.
        - `label` string, nullable
      - `spamDusting` object — Curated spam-dusting wallet label, when known.
        - `label` string, nullable
      - `exchange` object — Known centralized exchange hot wallet label, when known.
        - `name` string, nullable
  - `pagination` Pagination — Cursor-based pagination metadata.
    - `hasMore` boolean, required — Whether more pages exist after this one.
    - `nextCursor` string, nullable, required — Opaque cursor to pass as `?cursor=` for the next page. Null when there are no more results.
    - `count` integer, required — Number of items returned in this page.
    - `total` integer, required — Total number of matching items across all pages.
    - `pnlMode` 'strict' | 'adjusted' | 'raw' — Resolved PnL treatment mode when the endpoint supports `pnlMode`.
    - `enrich` string[] — List of enrichment modules applied to the response when supported.

## Other responses

- `400` — Invalid request parameters.
- `500` — Server error.

---

[API](https://skmtc.dev/solanatracker/apis/solana-tracker-data-api.md) · [All operations](https://skmtc.dev/solanatracker/apis/solana-tracker-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/solanatracker/solana-tracker-data-api/revisions/c07c6f82d0c4/schema)
