Paid REST endpoints for Polymarket CLOB v2 data — fills, positions, candles, builder leaderboard, neg-risk events. Enriched with market metadata. Backed by polynode’s own indexer, not Goldsky.
Use this file to discover all available pages before exploring further.
REST endpoints for Polymarket CLOB v2 data, indexed and served by polynode. Every endpoint returns JSON enriched with market metadata (question, slug, outcome label, image, condition_id) baked in — you never need to look up a market name separately.This is the v2-only surface. The existing /v2/onchain/* endpoints cover v1 Polymarket (and will eventually unify onto the same indexer). Until then, use /clobv2/* for anything that needs v2 fills, positions, builder attribution, or neg-risk events.
v2 trades settle in pUSD (Polymarket USD), an ERC-20 on Polygon at 0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb. Every pUSD is backed 1:1 by USDC.e and the backing is enforced on-chain by the contract, so dollar amounts are exact.Fields named *_usdc in the response schemas (maker_usdc, taker_usdc, fee_usdc, notional_usdc, etc.) are the pUSD amounts of each fill. The “usdc” suffix is a holdover from v1 and reflects the dollar value — it does NOT mean USDC.e was the token that moved. If you’re verifying on-chain against Polygonscan, look for Transfer events on the pUSD contract above, not the USDC.e contract.Why you care:
Integrators: an API user wrapping USDC.e → pUSD via Polymarket’s Collateral Onramp will see their wallets/{address}/trades results denominated in the same units their pUSD balance moved.
Historical data: early v2 fills (pre-mainnet-launch on April 28, 2026) may show mixed pUSD / USDC.e transfers on-chain as wallets migrated; the aggregated amounts our API returns remain dollar-correct because 1 pUSD = 1 USDC.e.
v1 data: the legacy /v2/onchain/* endpoints are v1 Polymarket and genuinely denominated in USDC.e. Different exchange, different collateral.
All USDC / share / price fields in list responses are returned as JSON strings (e.g. "1.3440000000000000", not 1.344) to preserve full database precision. Parse to Decimal / BigNumber / bignumber.js before arithmetic. Integer counts (trade counts, market counts) remain JSON numbers.Single-object market-volume + market-orderbook responses return numbers for convenience.
Limits are per-API-key over a rolling 60-second window. When exceeded you get 429 Too Many Requests with {"error": "rate limit exceeded", "reset_at": <unix>}.
These endpoints exist on the server but are not yet documented because their backing data isn’t indexed:
/clobv2/wallets/{address}/redemptions
/clobv2/wallets/{address}/activity
/clobv2/markets/{condition_id}/oi
/clobv2/oi
They currently return the empty-shape response (count/volume fields zeroed). When the supporting subgraphs catch up on s4, they’ll light up with real data and get their own doc pages — no API contract change.