Skip to main content
GET
/
polymarket
/
trader
/
pnl
/
{address}
/
positions
Get trader position PnL
curl --request GET \
  --url https://api.struct.to/v1/polymarket/trader/pnl/{address}/positions
[
  {
    "position_id": "<string>",
    "condition_id": "<string>",
    "event_slug": "<string>",
    "outcome": "<string>",
    "outcome_index": 123,
    "total_buys": 123,
    "total_sells": 123,
    "buy_usd": 123,
    "sell_usd": 123,
    "realized_pnl_usd": 123,
    "avg_entry_price": 123,
    "avg_exit_price": 123,
    "total_fees": 123,
    "first_trade_at": 123,
    "last_trade_at": 123
  }
]

Path Parameters

address
string
required

Trader wallet address

Query Parameters

timeframe
enum<string>

Timeframe: 1d, 7d, 30d, lifetime (default: 7d)

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

Sort: realized_pnl_usd, buy_usd, sell_usd, total_buys, total_sells, total_fees (default: realized_pnl_usd)

Available options:
realized_pnl_usd,
buy_usd,
sell_usd,
total_buys,
total_sells,
total_fees
sort_direction
enum<string>

Sort direction: asc, desc (default: desc)

Available options:
asc,
desc
limit
integer<int32>

Results limit (default: 10, max: 200)

pagination_key
string

Cursor-based pagination key

condition_id
string

Filter by market condition ID (or use market_slug)

market_slug
string

Filter by market slug (alternative to condition_id)

position_id
string

Filter by specific outcome token (position ID)

Response

200 - application/json

Position-level PnL entries for this trader. Each entry is a specific outcome token with avg_entry_price and avg_exit_price.

position_id
string | null
condition_id
string | null
event_slug
string | null
outcome
string | null
outcome_index
integer<int32> | null
total_buys
integer<int64> | null
total_sells
integer<int64> | null
buy_usd
number<double> | null
sell_usd
number<double> | null
realized_pnl_usd
number<double> | null
avg_entry_price
number<double> | null

VWAP price paid per share across all buys (0–1)

avg_exit_price
number<double> | null

VWAP price received per share across all sells (0–1)

total_fees
number<double> | null
first_trade_at
integer<int64> | null
last_trade_at
integer<int64> | null
Last modified on March 17, 2026