GET
/rewards/user/marketsGet user earnings and markets configuration
Returns an array of current rewards including user earnings and live percentages per market for a provided day. Results are paginated (100 items per page by default, max 500). Use next_cursor to fetch subsequent pages. A next_cursor value of "LTE=" indicates the last page. Requires CLOB L2 Auth headers.
- Base URL
- https://clob.polymarket.com
- Auth
- L2 API credentials (key, secret, passphrase)POLY_API_KEY, POLY_ADDRESS, POLY_SIGNATURE, POLY_PASSPHRASE, POLY_TIMESTAMP
- Rate limit
- 9,000 req / 10s (900 per second)
- Limit applies to
- CLOB API general
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| date | query | string | no | Date in YYYY-MM-DD format. Defaults to current date if not provided. |
| signature_type | query | integer | no | Signature type for address derivation (required for API KEY auth): - 0: EOA - 1: POLY_PROXY - 2: POLY_GNOSIS_SAFE |
| maker_address | query | string | no | Maker address to query data for |
| sponsored | query | boolean | no | If true, returns sponsored reward earnings |
| next_cursor | query | string | no | Pagination cursor from previous response |
| page_size | query | integer | no | Number of items per page (max 500, values above are capped) |
| q | query | string | no | Search query to filter markets by question/description |
| tag_slug | query | string | no | Filter by tag slug (can be repeated for OR logic) |
| favorite_markets | query | boolean | no | If true, only show markets favorited by the user (requires auth) |
| no_competition | query | boolean | no | Filter for markets with no competition |
| only_mergeable | query | boolean | no | Filter for only mergeable markets |
| only_open_orders | query | boolean | no | Filter for markets where user has open orders |
| only_open_positions | query | boolean | no | Filter for markets where user has open positions |
| order_by | query | string | no | Field to sort by |
| position | query | string | no | Sort direction |
Example
curl -X GET "https://clob.polymarket.com/rewards/user/markets" \
-H "POLY_API_KEY: $POLY_API_KEY" \
-H "POLY_ADDRESS: $POLY_ADDRESS" \
-H "POLY_SIGNATURE: $POLY_SIGNATURE" \
-H "POLY_PASSPHRASE: $POLY_PASSPHRASE" \
-H "POLY_TIMESTAMP: $POLY_TIMESTAMP"L2 requests are signed with HMAC-SHA256 using your API secret, and the timestamp is part of the signature, so keep the machine's clock accurate. A missing credential or a stale signature both come back as Unauthorized/Invalid api key. The Python SDK signs for you.
Response fields
| Field | Type | Description |
|---|---|---|
| limit | integer | Maximum number of items per page |
| count | integer | Number of items in the current response |
| total_count | integer | Total number of items across all pages |
| next_cursor | string | Cursor for the next page. "LTE=" indicates the last page. |
| data | object[] |
Responses
| Status | Meaning |
|---|---|
| 200 | Successfully retrieved user earnings and market configurations |
| 400 | Bad request - Invalid parameters |
| 401 | Unauthorized - Invalid API key or authentication failed |
| 500 | Internal server error |
Related endpoints
- GET /rewards/user CLOB API
- GET /rewards/user/total CLOB API
- GET /rewards/user/percentages CLOB API
- GET /rewards/markets/current CLOB API
- GET /rewards/markets/{condition_id} CLOB API
- GET /rewards/markets/multi CLOB API
From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.