---
title: "Get KOL Leaderboard for a Period"
method: GET
path: "/v2/pnl/leaderboard/kols/period"
tags: ["Leaderboard"]
---

# Get KOL Leaderboard for a Period

`GET /v2/pnl/leaderboard/kols/period`

## Request

- Base URL: `https://data.solanatracker.io`
- URL: `https://data.solanatracker.io/v2/pnl/leaderboard/kols/period`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/solanatracker/apis/solana-tracker-data-api/docs/v2/pnl/leaderboard/kols/period/get.ts> (a function with typed inputs; its response is checked against the schema)

Ranks tracked KOL wallets inside a defined window. Use `period` for rolling windows like `7d` or `30d`, or `start` and `end` for explicit dates.

## Query parameters

- `sort` 'realized' | 'volume' | 'days' | 'ending_total'
- `direction` 'asc' | 'desc'
- `limit` integer
- `cursor` string
- `period` '1d' | '7d' | '14d' | '30d' | '90d' | 'all'
- `start` string, date
- `end` string, date

## Response `200`

Successful response.

- object
  - `traders` object[]
    - `wallet` string
    - `period` object
      - `realized` number, nullable: Realized PnL during the period.
      - `volume` number, nullable: Trading volume during the period.
      - `tradingDays` integer: Number of days with trading activity.
    - `ending` object: Cumulative PnL as of the last day of the period.
      - `pnl` PnlBlock: Realized, unrealized, and total profit/loss in USD.
        - `realized` number, nullable: Profit/loss from closed trades (tokens fully or partially sold).
        - `realizedRaw` number, nullable: Unfiltered realized PnL before `pnlMode` adjustments. Present on position rows and leaderboard period stats when available.
        - `unrealized` number, nullable: Paper profit/loss on tokens still held, based on current market price.
        - `total` number, nullable: Sum of realized + unrealized PnL.
    - `lastSnapshotDate` string, date, 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.dev/solanatracker/apis/solana-tracker-data-api/revisions/c07c6f82d0c4?raw)
