Skip to main content
GET
/
polymarket
/
trader
/
global_pnl
Get global PnL leaderboard
curl --request GET \
  --url https://api.struct.to/v1/polymarket/trader/global_pnl
[
  {
    "trader": {
      "address": "<string>",
      "verified_badge": true,
      "name": "<string>",
      "pseudonym": "<string>",
      "profile_image": "<string>",
      "x_username": "<string>"
    },
    "realized_pnl_usd": 123,
    "open_positions_value": 123,
    "events_traded": 1,
    "categories_traded": 1,
    "markets_traded": 1,
    "markets_won": 1,
    "markets_lost": 1,
    "market_win_rate_pct": 123,
    "avg_win_usd": 123,
    "avg_loss_usd": 123,
    "profit_factor": 123,
    "total_buys": 1,
    "total_sells": 1,
    "total_redemptions": 1,
    "total_merges": 1,
    "converted_count": 1,
    "converted_shares_gained": 123,
    "converted_shares_lost": 123,
    "total_volume_usd": 123,
    "buy_volume_usd": 123,
    "sell_volume_usd": 123,
    "redemption_volume_usd": 123,
    "merge_volume_usd": 123,
    "total_fees": 123,
    "total_wins_usd": 123,
    "total_losses_usd": 123,
    "avg_hold_time_seconds": 123,
    "maker_rebate_count": 1,
    "maker_rebate_usd": 123,
    "reward_count": 1,
    "reward_usd": 123,
    "yield_count": 1,
    "yield_usd": 123,
    "open_position_count": 1,
    "total_pnl_usd": 123,
    "unrealized_pnl_usd": 123,
    "usd_balance": 123,
    "realized_pnl_pct": 123,
    "total_pnl_pct": 123,
    "total_splits": 1,
    "convert_collateral_usd": 123,
    "split_volume_usd": 123,
    "best_trade_pnl_usd": 123,
    "best_trade_condition_id": "<string>",
    "worst_trade_pnl_usd": 123,
    "worst_trade_condition_id": "<string>",
    "best_trade_metadata": {
      "condition_id": "<string>",
      "market_slug": "<string>",
      "title": "<string>",
      "question": "<string>",
      "image_url": "<string>",
      "event_slug": "<string>"
    },
    "worst_trade_metadata": {
      "condition_id": "<string>",
      "market_slug": "<string>",
      "title": "<string>",
      "question": "<string>",
      "image_url": "<string>",
      "event_slug": "<string>"
    },
    "first_trade_at": 123,
    "last_trade_at": 123
  }
]

Query Parameters

timeframe
enum<string>

Default: lifetime

Available options:
1d,
7d,
30d,
lifetime
sort_by
enum<string>

Default: total_pnl_usd

Available options:
realized_pnl_usd,
total_pnl_usd,
unrealized_pnl_usd,
realized_pnl_pct,
total_pnl_pct,
usd_balance,
total_volume_usd,
markets_traded,
events_traded,
categories_traded,
markets_won,
markets_lost,
market_win_rate_pct,
avg_win_usd,
avg_loss_usd,
profit_factor,
total_buys,
total_sells,
total_redemptions,
total_merges,
total_fees,
total_wins_usd,
total_losses_usd,
best_trade_pnl_usd,
worst_trade_pnl_usd,
buy_volume_usd,
sell_volume_usd,
redemption_volume_usd,
merge_volume_usd,
split_volume_usd,
total_splits,
total_converts,
maker_rebate_count,
maker_rebate_usd,
reward_count,
reward_usd,
yield_count,
yield_usd,
avg_hold_time_seconds,
first_trade_at,
last_trade_at,
open_positions_value,
open_position_count
sort_direction
enum<string>

Default: desc

Available options:
asc,
desc
limit
integer<int32>

Default 50, max 500

pagination_key
string

Cursor from a previous response

Response

Leaderboard page

trader
object
required
realized_pnl_usd
number<double>
required
open_positions_value
number<double>
required
events_traded
integer<int64>
required
Required range: x >= 0
categories_traded
integer<int64>
required
Required range: x >= 0
markets_traded
integer<int64>
required
Required range: x >= 0
markets_won
integer<int64>
required
Required range: x >= 0
markets_lost
integer<int64>
required
Required range: x >= 0
market_win_rate_pct
number<double>
required
avg_win_usd
number<double>
required
avg_loss_usd
number<double>
required
profit_factor
number<double>
required
total_buys
integer<int64>
required
Required range: x >= 0
total_sells
integer<int64>
required
Required range: x >= 0
total_redemptions
integer<int64>
required
Required range: x >= 0
total_merges
integer<int64>
required
Required range: x >= 0
converted_count
integer<int64>
required
Required range: x >= 0
converted_shares_gained
number<double>
required
converted_shares_lost
number<double>
required
total_volume_usd
number<double>
required
buy_volume_usd
number<double>
required
sell_volume_usd
number<double>
required
redemption_volume_usd
number<double>
required
merge_volume_usd
number<double>
required
total_fees
number<double>
required
total_wins_usd
number<double>
required
total_losses_usd
number<double>
required
avg_hold_time_seconds
number<double>
required
maker_rebate_count
integer<int64>
required
Required range: x >= 0
maker_rebate_usd
number<double>
required
reward_count
integer<int64>
required
Required range: x >= 0
reward_usd
number<double>
required
yield_count
integer<int64>
required
Required range: x >= 0
yield_usd
number<double>
required
open_position_count
integer<int64>
required
Required range: x >= 0
total_pnl_usd
number<double>
unrealized_pnl_usd
number<double>
usd_balance
number<double>

Wallet cash held in pUSD + USDC at this point in time. Stable per block.

realized_pnl_pct
number<double> | null
total_pnl_pct
number<double> | null
total_splits
integer<int64>

Number of split transactions in the selected timeframe.

Required range: x >= 0
convert_collateral_usd
number<double>
split_volume_usd
number<double>

USD collateral split into outcome tokens in the selected timeframe.

best_trade_pnl_usd
number<double> | null
best_trade_condition_id
string | null
worst_trade_pnl_usd
number<double> | null
worst_trade_condition_id
string | null
best_trade_metadata
object

Market metadata (condition_id, slug, title, question, image_url, event_slug) for the market behind the best PnL trade in this summary at this timeframe. null when no trade qualifies.

worst_trade_metadata
object

Market metadata for the market behind the worst PnL trade.

first_trade_at
integer<int64> | null
last_trade_at
integer<int64> | null
Last modified on June 13, 2026