Skip to main content
GET
Wallet P&L
Returns P&L data for a wallet in USD. Without a time parameter, it returns the wallet’s current all-time P&L. With period, after, or before, it returns this boundary calculation across all matching positions:
Both boundaries are inclusive. A state change timestamped exactly at after or before is included.
Owner addresses. Pass an owner EOA as the wallet address and the response combines the EOA’s Polymarket wallets (Safe, proxy, deposit wallets) that have data for this endpoint. Passing a Safe, proxy or deposit wallet returns just that wallet, as before. Combined responses list the combined wallets in wallets. See Owner addresses.

Fees and accounting scope

For standard spot market positions, realized and unrealized P&L exclude separately reported trader-paid fees, rebates, and rewards. net_realized_pnl means the combined realized gains and losses, not an after-fee return. Use Fees Paid, Rebates, and the optional Wallet Summary accounting fields when you need those separate amounts. include_combos=true adds a component with different fee treatment: Combo P&L includes each signed order’s recorded exchange fill fee in its cost basis or sale proceeds. That does not make the standard spot component fee-inclusive. Perps has its own endpoint accounting model; do not infer its fee or funding treatment from either component.

Time-window behavior

The two modes have different counting semantics: all-time wins and losses are current position counts; time-windowed wins, losses, and the legacy events field count positions whose realized state changed. Time-windowed responses declare count_type: "positions_changed". Do not compare the counts directly.
Time-windowed P&L is a realized-state change, not a historical snapshot of the all-time leaderboard. It captures realized changes reflected by sells, merges, redemptions, and timestamped corrections. A buy-and-hold position can therefore contribute 0 to a window even if terminal treatment makes the resolved position profitable in current all-time P&L. For the same reason, an after=1&before=now result is not expected to equal the all-time response or leaderboard total.
The boundary calculation uses Polynode’s recovered Polymarket weighted-average-cost state. The difference is scope and timing, not a simpler cost-basis formula: all-time P&L uses the current recovered portfolio state, including terminal treatment for resolved holdings and current unrealized P&L, while a time window reports only the change in realized state across its boundaries.
Wallet P&L supports focused market filters such as category, tags/tag_slug, market/market_slug, event_slug, and condition_id. For leaderboard views, use one primary filter dimension per request.

Request

Query parameters

Examples

All-time P&L

All-time P&L including combos

For time-windowed or tag-filtered P&L, the response stays successful. If combo P&L cannot be safely added to that filtered view, combo_pnl.included is false and the standard market P&L fields remain unchanged.

30-day P&L

Filtered P&L

30-day P&L with unrealized

Pass include_unrealized=true to add current unrealized P&L to the realized-state change. This does not turn the response into a historical portfolio-value change between after and before.

Response fields (all-time)

Response fields (with period)

Additional fields (with include_unrealized=true)

Owner address fields

Present only when you pass an owner EOA. See Owner addresses. Totals and counts are summed across the combined wallets. With period, after, or before, every wallet uses the same window, and address stays the address you passed. With include_combos=true, combo_pnl is included only when it is available for every combined wallet; otherwise the response covers market positions only. A wallet whose P&L is not loaded yet is left out of the combination and of wallets.

Errors

Authorizations

x-api-key
string
header
required

Path Parameters

address
string
required

Wallet address, or an owner EOA to combine every Polymarket wallet it owns

Query Parameters

period
enum<string>

Time window shortcut

Available options:
1d,
7d,
30d,
1y
after
integer

Inclusive Unix timestamp lower bound; the realized-state baseline is taken immediately before this timestamp

before
integer

Inclusive Unix timestamp upper bound

include_unrealized
boolean
default:false

Add current unrealized P&L to the time-windowed realized-state change; this is not the unrealized-P&L change between the requested boundaries

Response

Wallet P&L

Owner-address responses add the optional fields below. See the page for the full response.

wallets
object[]

Present only when you pass an owner EOA: the combined wallets, in a fixed order.