Skip to main content
Use these reads to understand where trading activity is concentrated and how traders and integrations perform over time.

Market Activity

The examples below assume you already have a market object. To find or fetch one, see Discover Markets.
Given a market, read its condition and event IDs:

Recent Trades

Review the trades recently matched in a market, including their side, price, size, outcome, wallet, and timestamp. Trades are always returned in descending timestamp order (newest first).
Call listTrades() on a PublicClient or SecureClient.

Open Interest

Measure the value currently held in outstanding positions for one or more markets.
Call fetchOpenInterest() on a PublicClient or SecureClient. Pass up to 20 condition IDs, or omit conditionIds for the single global figure (served as conditionId: null).

Market Holders

Find the largest public holders for each outcome in a market.
Call listMarketHolders() on a PublicClient or SecureClient and walk the cursor pages. pageSize applies separately to each outcome token, so merge groups by assetId across pages. Set includePnl: true (one condition ID, page size at most 100) to add position economics to every holder row.

Event Live Volume

Summarize activity across an event and break the volume down by market.
Call fetchEventLiveVolume() on a PublicClient or SecureClient. Pass one or more event IDs; a list spans events and returns one combined result.

Market Resolution

Check a market’s resolution progress.
Call fetchResolutions() on a PublicClient or SecureClient.
Each row includes its status and lastUpdatedAt. payouts is present when published. No matching resolution returns an empty array.

Settlement estimates

A row that is waiting on an oracle can carry expected_settlement_time (RFC3339 UTC) and settlement_time_basis. Both are omitted whenever no estimate applies, including settled markets and proposals under extended review. Treat the value as the earliest time the row can settle, not as a deadline: a disputed vote can roll into a later round, and a liveness estimate can already be in the past while the proposal awaits finalization. The SDK Resolution types do not carry these fields yet; read them from the API response.

Token Lookup

Resolve ERC-1155 token ids to their market, outcome and neg-risk structure, or list every token of a condition, in one call. By token id, up to 50 per call, one row per known id in request order; unknown ids are simply absent:
By condition, up to 10 selectors per call. A selector is any of the condition ids the other routes carry: a ConditionalTokens condition id, a neg-risk market id, a polymarket-v2 condition id (64 or 66 characters), or the on-chain event id of a polymarket-v2 neg-risk structure. A neg-risk market id returns every market of the structure in question order, so the rows line up with the structure’s question indexes:
Each row carries token_id, condition_id (the 66-character id every other route uses), structural_condition_id (the polymarket-v2 id in the same form, null on ConditionalTokens tokens), module (v1_ctf for the ConditionalTokens market; every other value is a polymarket-v2 module), outcome_index, clob_index, outcome, opposite_token_id, resolved and final_price from on-chain settlement, the market’s title, market_slug, closed, neg_risk and neg_risk_market_id, question_index inside a neg-risk structure, and the market’s event_id and event_slug. A request that sets both selectors, or neither, returns 400. The response is not paginated. The TypeScript and Python SDKs do not expose this route yet; call it over HTTP.

Trader Leaderboard

Compare trader volume and profit and loss over a selected period.
Call listTraderLeaderboard() on a PublicClient or SecureClient. window defaults to one day, category to overall, and sortBy to PnL. Tied traders share a rank and the next rank skips.
Call fetchTraderLeaderboardStanding() on a PublicClient or SecureClient to read one wallet’s standing on both boards.
When called on a SecureClient, user can be omitted and defaults to the authenticated account’s wallet.
A null rank means the wallet is unranked on that board.

Biggest Winners

Compare individual winning positions by their profit at resolution.
Call listBiggestWinners() on a PublicClient or SecureClient.
window selects the resolution period. Each row is one position. Check kind before using eventId, which is null for Combos.

Builder Analytics

Evaluate the reach of a builder integration through its attributed trading activity.

Builder Leaderboard

Compare builders by attributed volume and active users.
Call listBuilderLeaderboard() on a PublicClient or SecureClient.

Builder Volume

Track attributed builder volume and active users over time.
Call fetchBuilderVolume() on a PublicClient or SecureClient. interval picks the bucket width and bucketLimit counts the most recent complete buckets (at most 90); every builder active in a bucket gets one row.