Polymarket API reference / CLOB API
GET/rewards/user/markets

Get 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

NameInTypeRequiredDescription
datequerystringnoDate in YYYY-MM-DD format. Defaults to current date if not provided.
signature_typequeryintegernoSignature type for address derivation (required for API KEY auth): - 0: EOA - 1: POLY_PROXY - 2: POLY_GNOSIS_SAFE
maker_addressquerystringnoMaker address to query data for
sponsoredquerybooleannoIf true, returns sponsored reward earnings
next_cursorquerystringnoPagination cursor from previous response
page_sizequeryintegernoNumber of items per page (max 500, values above are capped)
qquerystringnoSearch query to filter markets by question/description
tag_slugquerystringnoFilter by tag slug (can be repeated for OR logic)
favorite_marketsquerybooleannoIf true, only show markets favorited by the user (requires auth)
no_competitionquerybooleannoFilter for markets with no competition
only_mergeablequerybooleannoFilter for only mergeable markets
only_open_ordersquerybooleannoFilter for markets where user has open orders
only_open_positionsquerybooleannoFilter for markets where user has open positions
order_byquerystringnoField to sort by
positionquerystringnoSort 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

FieldTypeDescription
limitintegerMaximum number of items per page
countintegerNumber of items in the current response
total_countintegerTotal number of items across all pages
next_cursorstringCursor for the next page. "LTE=" indicates the last page.
dataobject[]

Responses

StatusMeaning
200Successfully retrieved user earnings and market configurations
400Bad request - Invalid parameters
401Unauthorized - Invalid API key or authentication failed
500Internal server error

Related endpoints

Polymarket's API serves current state only, so it cannot show what a market's book looked like after it resolved. PolyTest records Up/Down markets while they run and keeps the snapshots. Try it free, or read the full rate limit reference.

From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.