Polymarket API reference / Data API v2
GET/v2/oi

Get open interest

Priced gross open interest per market. Pass `?condition=` as a comma-separated list of condition ids (aliases `condition_id` / `conditionId`, matching the feeds); omit it for the single global figure (`condition_id = "GLOBAL"`, still a one-element array).

Base URL
https://data-api.polymarket.com
Auth
Public, no key
Rate limit
800 req / 10s (80 per second)
Limit applies to
General (all /v2 endpoints)

Things to know

Every v2 response wraps its payload in a data field. Paginated reads return an opaque cursor in pagination and do not accept offset. Under load the API answers 429 with a Retry-After header.

Parameters

NameInTypeRequiredDescription
conditionquerystringnullnoCondition id(s), comma-separated (at most 20 distinct values). `condition` is the unified key across v2 (same as the feeds); `condition_id` / `conditionId` are accepted aliases. Omit for global open interest.

Example

curl -X GET "https://data-api.polymarket.com/v2/oi"

Returns a list of objects with these fields

FieldTypeDescription
condition_idstringCondition id the row answers for; `GLOBAL` on the parameterless global figure.
valuenumberPriced gross open interest in USDC; `0.0` when nothing is held.

Responses

StatusMeaning
200Open interest per requested market, or the global figure
400Invalid query params, or a malformed 'condition' id
429Service is at heavy-query capacity; retry after `Retry-After`
500Internal server error
503Timed out (the request deadline, the datastore statement timeout, or the connection pool's acquire budget) or a serving dependency is unavailable; retry after `Retry-After`

Related endpoints

Polymarket's API serves current state only, so it cannot show what a market's book looked like after it resolved. PolyTest records Up/Down markets while they run and keeps the snapshots. Try it free, or read the full rate limit reference.

From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.