---
title: "Get Leaderboard"
method: GET
path: "/v2/polymarket/leaderboard"
tags: ["polymarket", "smart-wallet"]
---

# Get Leaderboard

`GET /v2/polymarket/leaderboard`

Get global leaderboard of smart wallets.

Supports filtering by trading styles and numeric thresholds.

## Query parameters

- `window` '1d' | '7d' | '30d' | 'all_time' — Time window for rolling metrics.
- `sort_by` 'realized_pnl' | 'total_pnl' | 'volume' | 'roi' | 'profit_factor' | 'win_rate' | 'trades' — Sort options for leaderboard.
- `order` 'asc' | 'desc' — Sort order direction enum.
- `style` string, nullable — Comma-separated styles to include (OR logic)
- `exclude_style` string, nullable — Comma-separated styles to exclude
- `min_realized_pnl` number, nullable — Minimum realized PnL in USD
- `max_realized_pnl` number, nullable — Maximum realized PnL in USD
- `min_total_pnl` number, nullable — Minimum total PnL in USD (realized + unrealized - net fees)
- `max_total_pnl` number, nullable — Maximum total PnL in USD (realized + unrealized - net fees)
- `min_volume` number, nullable — Minimum volume in USD
- `max_volume` number, nullable — Maximum volume in USD
- `min_trades` integer, nullable — Minimum trade count
- `max_trades` integer, nullable — Maximum trade count
- `min_roi` number, nullable — Minimum ROI (decimal)
- `max_roi` number, nullable — Maximum ROI (decimal)
- `min_profit_factor` number, nullable — Minimum profit factor
- `max_profit_factor` number, nullable — Maximum profit factor
- `min_win_rate` number, nullable — Minimum win rate (decimal)
- `max_win_rate` number, nullable — Maximum win rate (decimal)
- `min_avg_trade_usd` number, nullable — Minimum avg trade size in USD
- `max_avg_trade_usd` number, nullable — Maximum avg trade size in USD
- `min_wallet_age_days` integer, nullable — Minimum wallet age in days
- `max_wallet_age_days` integer, nullable — Maximum wallet age in days
- `min_avg_buy_price` number, nullable — Minimum avg buy price (0-1)
- `max_avg_buy_price` number, nullable — Maximum avg buy price (0-1)
- `min_avg_sell_price` number, nullable — Minimum avg sell price (0-1)
- `max_avg_sell_price` number, nullable — Maximum avg sell price (0-1)
- `min_entry_edge` number, nullable — Minimum entry edge (avg_sell - avg_buy)
- `max_entry_edge` number, nullable — Maximum entry edge (avg_sell - avg_buy)
- `limit` integer — Results per page
- `pagination_key` string, nullable — Cursor for pagination

## Response `200`

Successful Response

- LeaderboardResponse — Response for global leaderboard endpoint.
  - `window` '1d' | '7d' | '30d' | 'all_time', required — Time window for rolling metrics.
  - `sort_by` 'realized_pnl' | 'total_pnl' | 'volume' | 'roi' | 'profit_factor' | 'win_rate' | 'trades', required — Sort options for leaderboard.
  - `entries` LeaderboardEntry[], required — Leaderboard entries
    - `rank` integer, required — Position in leaderboard (1-indexed)
    - `user` string, required — Wallet address
    - `metrics` WindowMetrics, required — Metrics for a specific time window.
      - `realized_pnl` number, required — Realized profit/loss in USD (from closed positions)
      - `total_pnl` number, nullable — Total PnL in USD (realized + unrealized - net fees)
      - `volume` number, required — Trading volume in USD
      - `roi` number, required — Return on investment (decimal, e.g., 0.5 = 50%)
      - `trades` integer, required — Number of trades
      - `wins` integer, required — Number of winning positions closed
      - `losses` integer, required — Number of losing positions closed
      - `win_rate` number, required — Win rate (decimal, e.g., 0.6 = 60%)
      - `profit_factor` number, required — Profit factor (gross profit / gross loss)
      - `positions_closed` integer, required — Number of positions closed
      - `avg_buy_price` number, nullable — Volume-weighted average buy price (0-1)
      - `avg_sell_price` number, nullable — Volume-weighted average sell price (0-1)
      - `fees_paid` number — Taker fees paid in USD
      - `fees_refunded` number — DEPRECATED: always 0. Refunds are already netted into fees_paid.
    - `trading_styles` TradingStyleFlags, required — Multi-label trading style classification.
      - `is_whale` boolean, required — Large position trader (avg trade > $1000)
      - `is_market_maker` boolean, required — Balanced buy/sell + frequent trading
      - `is_active_trader` boolean, required — High trade frequency (>4 trades/position)
      - `is_buy_and_hold` boolean, required — Long holding periods (<=2 trades/position)
      - `is_degen` boolean, required — High-risk pattern (win rate < 35%, 50+ closes)
      - `is_high_conviction` boolean, required — Buys at high YES prices (>=0.80)
      - `is_contrarian` boolean, required — Takes unpopular sides (<=0.25)
      - `is_value_hunter` boolean, required — Enters at uncertain odds (0.35-0.55)
      - `primary_style` string, required — Primary trading style classification
    - `entry_edge` number, nullable — Price edge (avg_sell - avg_buy), only for all_time
    - `first_trade_at` integer, nullable — Unix timestamp of first trade
  - `pagination` CursorPagination, required — Cursor-based pagination for endpoints that don't support offset.
    - `limit` integer, required — Requested limit
    - `count` integer, required — Number of items in current response
    - `pagination_key` string, nullable — Base64-encoded cursor for next page
    - `has_more` boolean, required — Whether there are more items available

## Other responses

- `400` — Bad Request
- `422` — Validation Error
- `503` — Service Unavailable

---

[API](https://skmtc.net/predexon/apis/predexon-api.md) · [All operations](https://skmtc.net/predexon/apis/predexon-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/predexon/predexon-api/versions/80a306fbdb39/schema)
