GET
/v2/oiGet 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| condition | query | stringnull | no | Condition 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
| Field | Type | Description |
|---|---|---|
| condition_id | string | Condition id the row answers for; `GLOBAL` on the parameterless global figure. |
| value | number | Priced gross open interest in USDC; `0.0` when nothing is held. |
Responses
| Status | Meaning |
|---|---|
| 200 | Open interest per requested market, or the global figure |
| 400 | Invalid query params, or a malformed 'condition' id |
| 429 | Service is at heavy-query capacity; retry after `Retry-After` |
| 500 | Internal server error |
| 503 | Timed 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
- GET /oi Data API v1
From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.