Skip to main content
POST
/
polymarket
/
trader
/
pnl
/
batch
Batch trader PnL summaries
curl --request POST \
  --url https://api.struct.to/v1/polymarket/trader/pnl/batch \
  --header 'Content-Type: application/json' \
  --data '
{
  "wallets": [
    "<string>"
  ],
  "timeframes": [
    "<string>"
  ]
}
'
{
  "0x96cfcb0c30942cfcd1cdf76c7d408794d66b1acb": {
    "lifetime": {
      "trader": {
        "address": "0x96cfcb0c30942cfcd1cdf76c7d408794d66b1acb",
        "name": "mintblade",
        "pseudonym": "Golden-Reclamation",
        "verified_badge": false
      },
      "realized_pnl_usd": 1878816.203922,
      "total_pnl_usd": 9094807.981258,
      "unrealized_pnl_usd": 7215991.777336,
      "usd_balance": 3367872.058961,
      "realized_pnl_pct": 21.719621,
      "total_pnl_pct": 105.13843,
      "open_positions_value": 14351553.789366,
      "events_traded": 4,
      "categories_traded": 1,
      "markets_traded": 5,
      "markets_won": 4,
      "markets_lost": 0,
      "market_win_rate_pct": 100,
      "avg_win_usd": 469704.050981,
      "avg_loss_usd": 0,
      "profit_factor": 0,
      "total_buys": 727,
      "total_sells": 0,
      "total_redemptions": 4,
      "total_volume_usd": 11916491.517144,
      "buy_volume_usd": 8522919.883091,
      "total_fees": 127397.55907,
      "total_wins_usd": 1878816.203922,
      "total_losses_usd": 0,
      "best_trade_pnl_usd": 1351658.511818,
      "best_trade_condition_id": "0xbc54d73527785bdc7b443cfdf3b0d59558c5ac2bbffca23425ecfbd161b07317",
      "best_trade_metadata": {
        "market_slug": "fifwc-ksa-ury-2026-06-15-ury",
        "event_slug": "fifwc-ksa-ury-2026-06-15",
        "question": "Will Uruguay win on 2026-06-15?",
        "title": "Uruguay"
      },
      "avg_hold_time_seconds": 518864,
      "first_trade_at": 1780521522,
      "last_trade_at": 1781580031,
      "open_position_count": 1
    }
  }
}

Body

application/json

Request body for the batch PnL endpoint.

wallets
string[]
required

Trader wallet addresses. Deduplicated and lower-cased before billing.

timeframes
string[] | null

Timeframes to fetch for every wallet. Defaults to ["lifetime"] when omitted. Valid values: 1d, 7d, 30d, lifetime.

Response

PnL summaries keyed by wallet and timeframe

{key}
object
Last modified on June 17, 2026