GET
/v2/user-volumeGet a user's trading volume
One wallet's trading volume over a window, in both units side by side. `?user=` is required. `?start=` / `?end=` are epoch seconds, inclusive and optional: omitted or `0` disables a bound (full history). Volume is tracked in whole UTC days, so each bound is floored to its UTC day; the served window is the smallest whole-day window containing `[start, end]`.
- 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 |
|---|---|---|---|---|
| user | query | stringnull | yes | The wallet whose volume to return. Required. |
| start | query | integernull | no | Window start, epoch seconds, inclusive. Omitted or `0` disables the bound (the feeds' convention). Volume is tracked in whole UTC days, so the bound is floored to its UTC day. |
| end | query | integernull | no | Window end, epoch seconds, inclusive, floored to its UTC day. Omitted or `0` disables the bound. |
user is listed as optional in Polymarket's OpenAPI spec, but the API returns 400 without it (checked 2026-10-04).
Example
curl -X GET "https://data-api.polymarket.com/v2/user-volume?user=<user>"Response fields
| Field | Type | Description |
|---|---|---|
| trade_count | integer | Number of fills in the window. |
| volume | number | Both-sides traded volume over the window, in shares. |
| volume_usdc | number | Both-sides cash volume over the window, in USD. |
Responses
| Status | Meaning |
|---|---|
| 200 | The wallet's volume over the window: both-sides shares, the same measure in USD, and the trade count |
| 400 | Missing or empty 'user', or a 'user' that is a known protocol contract address |
| 429 | Too many requests; 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` |
From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.