GET
/positionsGet current positions for a user
**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
- 150 req / 10s (15 per second)
- Limit applies to
- /positions
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. The v2 version of this call is GET /v2/positions.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| user | query | string | yes | User address (required) |
| market | query | object[] | no | Comma-separated list of condition IDs. Mutually exclusive with eventId. |
| eventId | query | integer[] | no | Comma-separated list of event IDs. Mutually exclusive with market. |
| sizeThreshold | query | number | no | |
| redeemable | query | boolean | no | |
| mergeable | query | boolean | no | |
| includeArchived | query | boolean | no | Include positions in archived markets that are still active. Archived positions are excluded by default. |
| limit | query | integer | no | |
| offset | query | integer | no | |
| sortBy | query | string | no | |
| sortDirection | query | string | no | |
| title | query | string | no |
Example
curl -X GET "https://data-api.polymarket.com/positions?user=<user>"Returns a list of objects with these fields
| Field | Type | Description |
|---|---|---|
| proxyWallet | string | User Profile Address (0x-prefixed, 40 hex chars) |
| asset | string | |
| conditionId | string | 0x-prefixed 64-hex string |
| size | number | |
| avgPrice | number | |
| initialValue | number | |
| grossInitialValue | number | Remaining entry basis including attributed BUY fees, at six-decimal source precision. `initialValue` and `avgPrice` keep their fee-exclusive semantics, so the fee-exclusive basis is… |
| entryFeesUsdc | number | Attributed BUY-fee component of `grossInitialValue`, at six-decimal source precision. SELL fees are exit costs and are never included. Returned as an explicit `0` when the fee component is zero. |
| currentValue | number | |
| cashPnl | number | |
| percentPnl | number | |
| totalBought | number | |
| realizedPnl | number | |
| percentRealizedPnl | number | |
| curPrice | number | |
| redeemable | boolean | |
| mergeable | boolean | |
| title | string | |
| slug | string | |
| icon | string | |
| eventSlug | string | |
| outcome | string | |
| outcomeIndex | integer | |
| oppositeOutcome | string | |
| oppositeAsset | string | |
| endDate | string | |
| negativeRisk | boolean |
Responses
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 500 | Server Error |
Related endpoints
- GET /v2/positions Data API v2
From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.