Query every position on Polymarket. Filter by wallet, market, status, or minimum size. Full history with cursor pagination.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | No | Filter by wallet address |
market_slug | string | No | Filter by market slug (e.g. will-zohran-mamdani-win-the-2025-nyc-mayoral-election) |
condition_id | string | No | Filter by condition ID (0x-prefixed, 64 hex chars) |
token_id | string | No | Filter by outcome token ID |
status | string | No | open (size > 0), closed (size = 0), or all (default) |
min_size | number | No | Minimum position size in shares |
limit | integer | No | Results per page (1-500, default 100) |
order | string | No | Sort direction: desc (default) or asc. Sorted by wallet address. |
pagination_key | string | No | Cursor from a previous response to fetch the next page |
market_slug — human-readable URL slug from Polymarket. Returns positions for all outcomes.condition_id — unique condition identifier. Returns positions for all outcomes.token_id — specific outcome token. Returns positions for only that outcome.| Field | Type | Description |
|---|---|---|
wallet | string | Wallet address holding the position |
token_id | string | Outcome token ID |
size | number | Current position size in shares. 0 means the position is closed. |
avg_price | number | Average entry price (0 to 1) |
realized_pnl | number | Realized profit/loss in USD |
total_bought | number | Total amount bought in USD |
status | string | "open" (size > 0) or "closed" (size = 0) |
market | string | Market question text |
market_slug | string | Market URL slug |
outcome | string | Outcome label (e.g. “Yes”, “No”) |
condition_id | string | Market condition ID |
image | string | null | Market image URL. null for some delisted or niche markets. |
| Field | Type | Description |
|---|---|---|
count | number | Number of positions in this response |
pagination.limit | number | Requested page size |
pagination.has_more | boolean | true if more results exist beyond this page |
pagination.pagination_key | string | Pass this as pagination_key in the next request to get the next page |
status=open to get only positions with a non-zero size.
market_slug to see all wallets with positions on a specific market.
min_size to find positions above a threshold.
| Status | Response | Condition |
|---|---|---|
| 400 | {"error": "market_slug not found"} | Invalid or unknown market_slug |
| 400 | {"error": "condition_id not found"} | Invalid or unknown condition_id |
| 401 | {"error": "API key required. Pass via ?key= or x-api-key header."} | Missing API key |
| 403 | {"error": "V2 endpoints require a paid plan. See polynode.dev/pricing for details."} | Free tier key |
| 429 | {"error": "Rate limited. N req/s for your tier.", "retryAfterMs": ...} | Rate limited |
realized_pnl field reflects actual profit/loss from closed portions of the position. For open positions, it reflects any partial closes.market, market_slug, outcome, condition_id, image) is enriched from our index. Very old or delisted markets may not have metadata.Filter by wallet address
Filter by market slug
Filter by condition ID
Filter by outcome token ID
Filter by position status
open, closed, all Minimum position size in shares
Results per page (1-500, default 100)
1 <= x <= 500Sort direction
desc, asc Cursor from a previous response to fetch the next page
Position results with pagination