GET
/v1/market-positionsGet positions for a market
**Data API v2:** this route has a v2 counterpart, `GET /v2/positions`. See [Migrating to Data API v2](/migrate/data-api-v1-to-v2).
- Base URL
- https://data-api.polymarket.com
- Auth
- Public, no key
- Rate limit
- 1,000 req / 10s (100 per second)
- Limit applies to
- Data API general
Things to know
Data API v1 has been frozen since 4 September 2026. It still answers, but new fields and endpoints only go to v2.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| market | query | string | yes | The condition ID of the market to query positions for |
| user | query | string | no | Filter to a single user by proxy wallet address |
| status | query | string | no | Filter positions by status. - `OPEN` — Only positions with size > 0.01 - `CLOSED` — Only positions with size <= 0.01 - `ALL` — All positions regardless of size |
| sortBy | query | string | no | Sort positions by: - `TOKENS` — Position size (number of tokens) - `CASH_PNL` — Unrealized cash PnL - `REALIZED_PNL` — Realized PnL - `TOTAL_PNL` — Total PnL (cash_pnl + realized_pnl) |
| sortDirection | query | string | no | |
| limit | query | integer | no | Max number of positions to return per outcome token |
| offset | query | integer | no | Pagination offset per outcome token |
Example
curl -X GET "https://data-api.polymarket.com/v1/market-positions?market=<market>"Returns a list of objects with these fields
| Field | Type | Description |
|---|---|---|
| token | string | The outcome token asset ID |
| positions | object[] |
Responses
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 500 | Server Error |
Related endpoints
- GET /v1/accounting/snapshot Data API v1
- GET /v1/activity/combos Data API v1
- GET /v1/positions/combos Data API v1
- GET /v1/builders/leaderboard Data API v1
- GET /v1/builders/volume Data API v1
- GET /v1/leaderboard Data API v1
From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.