Skip to main content
The leaderboard endpoint surfaces the highest-performing Polymarket traders for any rolling time window. Use it to discover “smart money,” build watchlists, or seed your own analytics pipeline. Endpoint: GET /v1/analytics/leaderboard

Filters

Combine filters to zero in on the traders that matter to your strategy.
ParameterTypeDescription
time_framestringRolling window for stats: 1H, 4H, 1D, 3D, 7D, 30D. Default: 30D.
sort_bystringRank by pnl, roi, win_rate, or market_count. Default: pnl.
tagstringMarket category: all, sports, crypto, geopolitics, politics, finance, esports, pop-culture, tech, economy, weather, elections, tweets-markets, basketball, hockey, soccer, tennis, counter-strike-2, dota-2, league-of-legends, 5M, 15M. Default: all.
min_win_rate / max_win_ratefloatWin rate range (0–100).
min_roi / max_roifloatROI percentage range.
last_active_hoursintOnly include traders who placed an order in the last N hours.
min_market_count / max_market_countintFilter by number of markets traded in the window.
limitintResults per page. Default: 50, max: 100.
offsetintPagination offset. Default: 0.
On the Demo tier, limit is capped at 20 and offset must be 0. Upgrade your plan to paginate beyond the first page.

Code examples

import PolyEdgeClient from './polyedge.js';

const client = new PolyEdgeClient('YOUR_API_KEY');

const leaderboard = await client.getLeaderboard({
  time_frame: '7D',
  tag: 'crypto',
  sort_by: 'roi',
  min_win_rate: 55,
  min_market_count: 5,
  limit: 10,
});

for (const trader of leaderboard.traders) {
  console.log(`#${trader.rank} ${trader.profile.name}`);
  console.log(`  ROI: ${trader.roi}% | Win rate: ${trader.win_rate}% | Markets: ${trader.markets_count}`);
}

Response fields

Each object in the traders array contains:
FieldTypeDescription
rankintPosition on the leaderboard for the requested window.
profileobjectTrader metadata: address, name, profile_image, x_username, profile_created_at, last_trade_at.
total_pnlstringRaw profit and loss in micro-USDC (divide by 1e6 for USDC).
total_volumestringTotal volume traded in micro-USDC.
roifloatReturn on investment as a percentage.
win_ratefloatPercentage of markets that resolved in the trader’s favour.
markets_countintNumber of markets traded in the window.
wins_countintNumber of markets won in the window.

Example response

{
  "traders": [
    {
      "profile": {
        "address": "0x9f2fe025f84839ca81dd8e0338892605702d2ca8",
        "name": "surfandturf",
        "profile_image": "",
        "x_username": "",
        "profile_created_at": "2026-04-01T06:03:57Z",
        "last_trade_at": "2026-04-06T02:32:33Z"
      },
      "total_pnl": "639292755514",
      "total_volume": "2190632870982",
      "roi": 46.52,
      "win_rate": 61.54,
      "rank": 1,
      "markets_count": 26,
      "wins_count": 16
    }
  ],
  "total_count": 202991
}
Combine min_win_rate, min_roi, and a short time_frame (e.g. 1D) to surface traders who are hot right now rather than those coasting on months-old gains. Then cross-reference with last_active_hours to confirm they are still active before you copy a position.