Top Traders (Market)
Every wallet that holds (or has held) a position in a single market, grouped by outcome and sorted by P&L. The ‘who’s making money on this market’ feed.
btc-updown-5m-1777179000) or the condition_id (e.g. 0xa7ae8a41...). It does not accept an outcome token id — pass the market identifier, not the side.
avgPrice, realizedPnl, etc.) — distinct from polynode’s V2 onchain endpoints which use snake_case. Different schemas, different use cases. Default cap is 50 rows per outcome; configurable up to 500.Request
TOTAL_PNL and REALIZED_PNL are sorted by Polymarket’s data-api directly. CURRENT_VALUE, SIZE, and INITIAL_VALUE are sorted in-process after the fetch (and after min_size if set), so they pair cleanly with the holder-filtering use case.Response
Top-level fields
Per-trader fields (outcomes[].positions[])
Examples
Top 10 traders on a market by total P&L
By condition_id, with first/last trade timestamps
Drill into specific wallets within a market
Closed positions only
Notes
- Default cap of 50 rows per outcome unless
limitis set higher (max 500). On very large markets with deep tail traders, paginate withoffset. - Sort ties on equal P&L are non-deterministic — two wallets at the same
totalPnlmay swap positions between calls. UseproxyWalletas a stable secondary key on the client side if you need consistent ordering. size = 0is normal on closed positions, redeemed positions, or fully-exited positions. UserealizedPnlandtotalBoughtto detect history.firstTradeAt/lastTradeAtrequire?includeTrades=trueand trip a separate heavy-endpoint rate limit (20 req/min per key). Don’t request it on every refresh — fetch once and cache.
When to use this vs. other position endpoints
Authorizations
Path Parameters
Condition ID (0x-prefixed) or market slug
Query Parameters
Maximum holders per outcome token (default 50, max 500)
1 <= x <= 500Pagination offset (default 0)
x >= 0Sort holders by field
TOKENS, CASH_PNL, REALIZED_PNL, TOTAL_PNL Sort direction
ASC, DESC Filter by position status
OPEN, CLOSED, ALL Enrich each position with firstTradeAt and lastTradeAt timestamps. Responses will be slower. Default false. Rate limited to 60 requests per minute per key (separate from your standard rate limit).
Filter to specific wallet address(es). Accepts a single address or multiple comma-separated addresses (max 20). Returns only those wallets' positions in this market.
Response
Market positions grouped by outcome token
Holder positions for a market, grouped by outcome token.

