> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solanatracker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get KOL Leaderboard for a Period

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

## SDK Example

<CodeGroup>
  ```typescript SDK
  import { Client } from '@solana-tracker/data-api';

  const client = new Client({ apiKey: 'YOUR_API_KEY' });

  const data = await client.getPnlV2KOLPeriodLeaderboard({ period: '7d', limit: 50 });

  ```
</CodeGroup>


## OpenAPI

````yaml /data-api/pnl-v2/openapi.json get /v2/pnl/leaderboard/kols/period
openapi: 3.1.0
info:
  title: SolanaTracker PnL V2 API
  description: >-
    Profit-and-loss tracking for Solana wallets. Provides wallet PnL summaries,
    token-level positions, leaderboards, KOL rankings, risk analysis, and
    historical performance data. All monetary values are in USD. All timestamps
    are Unix milliseconds unless noted otherwise.
  version: 2.0.0
servers:
  - url: https://data.solanatracker.io
    description: Production
security:
  - apiKey: []
tags:
  - name: Leaderboard
    description: Top traders, whales, and KOL rankings
  - name: Token
    description: Per-token trader and holder data
  - name: Wallet
    description: Wallet-level PnL, positions, history, and analysis
  - name: Batch
    description: Bulk wallet summaries and position lookups
paths:
  /v2/pnl/leaderboard/kols/period:
    get:
      tags:
        - Leaderboard
      summary: Get KOL Leaderboard for a Period
      description: >-
        Ranks tracked KOL wallets inside a defined window. Use `period` for
        rolling windows like `7d` or `30d`, or `start` and `end` for explicit
        dates.
      operationId: getKOLPeriodLeaderboard
      parameters:
        - name: sort
          in: query
          description: Field to rank by.
          schema:
            type: string
            enum:
              - realized
              - volume
              - days
              - ending_total
            default: realized
        - $ref: '#/components/parameters/direction'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/cursor'
        - name: period
          in: query
          description: Time period shorthand. Ignored if `start`/`end` are provided.
          schema:
            type: string
            enum:
              - 1d
              - 7d
              - 14d
              - 30d
              - 90d
              - all
            default: 30d
        - name: start
          in: query
          description: Start date (YYYY-MM-DD). Overrides `period`.
          schema:
            type: string
            format: date
        - name: end
          in: query
          description: End date (YYYY-MM-DD). Overrides `period`.
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traders:
                    type: array
                    items:
                      allOf:
                        - $ref: '#/components/schemas/PeriodTrader'
                        - type: object
                          properties:
                            identity:
                              $ref: '#/components/schemas/Identity'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
              example:
                traders:
                  - wallet: 515vh1DrPuwMATt9Zoq9kP4sJL9fyojA1dHJu4DQpNRp
                    period:
                      realized: 191701.24
                      volume: 492805.25
                      tradingDays: 8
                    ending:
                      pnl:
                        realized: 29933166.94
                        unrealized: -258.98
                        total: 29932907.96
                    lastSnapshotDate: '2026-04-19'
                    identity:
                      name: crypto cir...
                      twitter: null
                      avatar: >-
                        https://kol-avatar.solanatracker.io/515vh1DrPuwMATt9Zoq9kP4sJL9fyojA1dHJu4DQpNRp
                  - wallet: AuPp4YTMTyqxYXQnHc5KUc6pUuCSsHQpBJhgnD45yqrf
                    period:
                      realized: 133553.83
                      volume: 345418.1
                      tradingDays: 8
                    ending:
                      pnl:
                        realized: 877222.21
                        unrealized: -9818.18
                        total: 867404.04
                    lastSnapshotDate: '2026-04-19'
                    identity:
                      name: null
                      twitter: null
                      avatar: >-
                        https://kol-avatar.solanatracker.io/AuPp4YTMTyqxYXQnHc5KUc6pUuCSsHQpBJhgnD45yqrf
                pagination:
                  hasMore: true
                  nextCursor: >-
                    eyJzb3J0VmFsdWUiOjEzMzU1My44MzMyODczMjIxNywidGllQnJlYWtlciI6IkF1UHA0WVRNVHlxeFlYUW5IYzVLVWM2cFV1Q1NzSFFwQkpoZ25ENDV5cXJmIn0=
                  count: 2
                  total: 2
        '400':
          description: Invalid request parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-codeSamples:
        - lang: typescript
          label: SDK
          source: >
            import { Client } from '@solana-tracker/data-api';


            const client = new Client({ apiKey: 'YOUR_API_KEY' });


            const data = await client.getPnlV2KOLPeriodLeaderboard({ period:
            '7d', limit: 50 });
      x-code-samples:
        - lang: typescript
          label: SDK
          source: >
            import { Client } from '@solana-tracker/data-api';


            const client = new Client({ apiKey: 'YOUR_API_KEY' });


            const data = await client.getPnlV2KOLPeriodLeaderboard({ period:
            '7d', limit: 50 });
components:
  parameters:
    direction:
      name: direction
      in: query
      description: Sort direction.
      schema:
        type: string
        enum:
          - asc
          - desc
        default: desc
    limit:
      name: limit
      in: query
      description: Number of results per page.
      schema:
        type: integer
        default: 100
    cursor:
      name: cursor
      in: query
      description: >-
        Opaque pagination cursor returned from the previous page's
        `pagination.nextCursor`.
      schema:
        type: string
  schemas:
    PeriodTrader:
      type: object
      description: Trader performance within a specific time period.
      properties:
        wallet:
          type: string
        period:
          type: object
          properties:
            realized:
              type:
                - number
                - 'null'
              description: Realized PnL during the period.
            volume:
              type:
                - number
                - 'null'
              description: Trading volume during the period.
            tradingDays:
              type: integer
              description: Number of days with trading activity.
        ending:
          type: object
          description: Cumulative PnL as of the last day of the period.
          properties:
            pnl:
              $ref: '#/components/schemas/PnlBlock'
        lastSnapshotDate:
          type:
            - string
            - 'null'
          format: date
    Identity:
      type: object
      description: >-
        Unified wallet identity. Only fields with known values are returned; a
        wallet can carry multiple tags at once.
      properties:
        name:
          type:
            - string
            - 'null'
          description: Display name, if known.
        twitter:
          type:
            - string
            - 'null'
          description: Twitter/X handle, if known.
        avatar:
          type:
            - string
            - 'null'
          format: uri
          description: Avatar image URL.
        type:
          type:
            - string
            - 'null'
          description: >-
            Primary label for single-badge UIs, such as `kol`, `developer`,
            `pool`, `bot`, `hacker`, `spam_dusting`, `exchange`, or a platform
            tag.
        tags:
          type: array
          items:
            type: string
          description: >-
            All resolved labels for the wallet, including KOL, platform, pool,
            developer, bot, arbitrage, hacker, spam-dusting, or exchange tags.
        platforms:
          type: array
          items:
            type: string
          description: >-
            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:
          type: object
          properties:
            name:
              type:
                - string
                - 'null'
            avatar:
              type:
                - string
                - 'null'
              format: uri
        pool:
          type: object
          properties:
            program:
              type:
                - string
                - 'null'
            poolAddress:
              type:
                - string
                - 'null'
        developer:
          type: object
          properties:
            token:
              type:
                - string
                - 'null'
            via:
              type: array
              items:
                type: string
            pools:
              type: array
              items:
                type: string
            creationTx:
              type:
                - string
                - 'null'
            createdAt:
              type:
                - integer
                - 'null'
              description: Unix timestamp in seconds.
        hacker:
          type: object
          description: Curated exploit/scam wallet label, when known.
          properties:
            label:
              type:
                - string
                - 'null'
        spamDusting:
          type: object
          description: Curated spam-dusting wallet label, when known.
          properties:
            label:
              type:
                - string
                - 'null'
        exchange:
          type: object
          description: Known centralized exchange hot wallet label, when known.
          properties:
            name:
              type:
                - string
                - 'null'
    Pagination:
      type: object
      description: Cursor-based pagination metadata.
      properties:
        hasMore:
          type: boolean
          description: Whether more pages exist after this one.
        nextCursor:
          type:
            - string
            - 'null'
          description: >-
            Opaque cursor to pass as `?cursor=` for the next page. Null when
            there are no more results.
        count:
          type: integer
          description: Number of items returned in this page.
        total:
          type: integer
          description: Total number of matching items across all pages.
        pnlMode:
          type: string
          enum:
            - strict
            - adjusted
            - raw
          description: Resolved PnL treatment mode when the endpoint supports `pnlMode`.
        enrich:
          type: array
          description: List of enrichment modules applied to the response when supported.
          items:
            type: string
      required:
        - hasMore
        - nextCursor
        - count
        - total
    Error:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message.
      required:
        - error
    PnlBlock:
      type: object
      description: Realized, unrealized, and total profit/loss in USD.
      properties:
        realized:
          type:
            - number
            - 'null'
          description: Profit/loss from closed trades (tokens fully or partially sold).
        realizedRaw:
          type:
            - number
            - 'null'
          description: >-
            Unfiltered realized PnL before `pnlMode` adjustments. Present on
            position rows and leaderboard period stats when available.
        unrealized:
          type:
            - number
            - 'null'
          description: >-
            Paper profit/loss on tokens still held, based on current market
            price.
        total:
          type:
            - number
            - 'null'
          description: Sum of realized + unrealized PnL.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API Key for authentication

````