GET
/v2/tradesList trades
Keyset-paginated trade feed in the standard `{ data, pagination }` envelope. Pass `?cursor=` from a prior response's `next_cursor` to fetch the next page; it carries both the page size and the `(block_timestamp, sequence_id)` seek anchor, so deep pages cost the same as shallow ones.
- Base URL
- https://data-api.polymarket.com
- Auth
- Public, no key
- Rate limit
- 300 req / 10s (30 per second)
- Limit applies to
- /v2/trades
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 | no | Address to filter by; omit for the market/event/global feed. |
| limit | query | integernull | no | First-page size. Ignored when `cursor` is supplied (the cursor's size wins). |
| cursor | query | stringnull | no | Opaque pagination cursor from a prior response's `next_cursor`. |
| taker_only | query | booleannull | no | Defaults to `true`: each fill is served once, on its taker side. `false` includes the maker rows too. |
| filter_type | query | stringnull | no | CASH or TOKENS; defaults to TOKENS. |
| filter_amount | query | numbernull | no | Minimum trade size; defaults to 0.01, and 0 means the same. |
| start | query | integernull | no | Window start on `block_timestamp`, epoch seconds (inclusive); honored on the `user` shape only. Omitted or `0` floors to three years back; `start=1` asks for full history. |
| end | query | integernull | no | Window end, epoch seconds (inclusive); honored on the `user` shape only; omitted or `0` means now plus one day. |
| condition | query | stringnull | no | Condition id(s), comma-separated (at most 20 distinct values). `condition_id` / `conditionId` are accepted aliases. |
| event_id | query | stringnull | no | Event id(s), comma-separated (at most 20 distinct values). |
| side | query | stringnull | no | BUY or SELL. |
Example
curl -X GET "https://data-api.polymarket.com/v2/trades"Returns a list of objects with these fields
| Field | Type | Description |
|---|---|---|
| bio | string | Profile bio text. |
| condition_id | string | On-chain condition id of the market (`0x` hex). |
| event_slug | string | Parent event slug. |
| icon | string | Market icon URL. |
| name | string | Profile display name of the wallet. |
| outcome | string | Label of the traded outcome (e.g. `Yes`). |
| outcome_index | integer | Index of the traded outcome within the market; `999` means the outcome could not be labeled. |
| price | number | Execution price per share, in USDC. |
| profile_image | string | Profile image URL. |
| profile_image_optimized | string | Resized profile image URL, when one exists. |
| proxy_wallet | string | Proxy wallet the row belongs to; the address every wallet-keyed endpoint accepts as `user`. |
| pseudonym | string | Generated fallback handle for profiles without a display name. |
| side | string | `BUY` or `SELL`, from this wallet's perspective. |
| size | number | Filled quantity in shares; bare sizes are shares, never USD. |
| slug | string | Market slug; the URL segment on polymarket.com. |
| timestamp | integer | Block timestamp of the fill, epoch seconds. |
| title | string | Market question title (Gamma enrichment; empty when unenriched). |
| token_id | string | CLOB asset id of the traded outcome token. |
| transaction_hash | string | Hash of the settling transaction. |
Responses
| Status | Meaning |
|---|---|
| 200 | A page of trades |
| 400 | Invalid query params or cursor, a malformed 'condition' id, or a 'user' that is a known protocol contract address |
| 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` |
Errors this endpoint returns
Related endpoints
- GET /trades Data API v1
From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.