Polymarket API reference / Data API v1
GET/activity

Get user activity

**Data API v2:** this route has a v2 counterpart, `GET /v2/activity`. 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
1,000 req / 10s (100 per second)
Limit applies to
Data API general

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/activity.

Parameters

NameInTypeRequiredDescription
limitqueryintegernoPage size. Values above the maximum are clamped to 500.
offsetqueryintegernoStarting index for pagination. Requests past the cap are rejected with a 400 (never silently clamped). To read history deeper than offset 5000, page inside `start`/`end` windows — each window has its own offset budget.
userquerystringyes
marketqueryobject[]noComma-separated list of condition IDs. Mutually exclusive with eventId.
eventIdqueryinteger[]noComma-separated list of event IDs. Mutually exclusive with market.
typequerystring[]noComma-separated list of activity types to include. DEPOSIT and WITHDRAWAL records also require `excludeDepositsWithdrawals=false`.
excludeDepositsWithdrawalsquerybooleannoExcludes deposit and withdrawal records. The default `true` applies even when `type` requests those records, so to get deposits and withdrawals you must pass `false`.
startqueryintegernoLower-bound timestamp (epoch seconds) for the activity window. Omit or pass `0` for the default window (most recent ~3 years); pass a positive epoch (e.g. `1`) to retrieve full history.
endqueryintegernoUpper-bound timestamp (epoch seconds) for the activity window. Omit for the default (current time); rows newer than `end` are excluded.
sortByquerystringno
sortDirectionquerystringno`DESC` (default) returns the newest rows first; `ASC` the oldest first. Both orders are stable — the same query returns the same rows at any `limit`/`offset`, so pages compose without gaps or repeats.
sidequerystringno

Example

curl -X GET "https://data-api.polymarket.com/activity?user=<user>"

Returns a list of objects with these fields

FieldTypeDescription
proxyWalletstringUser Profile Address (0x-prefixed, 40 hex chars)
timestampinteger
conditionIdstring0x-prefixed 64-hex string
typestring
sizenumberToken amount for this row. On `REDEEM` rows it is the number of tokens burned for this row's outcome, so redeeming both sides of a market returns one row per outcome instead of a single combined row.
usdcSizenumberUSDC amount for this row. On `REDEEM` rows it is the payout for this row's outcome and is `0` for a losing outcome; the rows of one redemption sum to the total payout.
transactionHashstring
pricenumber
assetstringToken ID this row refers to. Populated on `REDEEM` rows with the token that row settles. Empty when the row is not token-specific.
sidestring
outcomeIndexintegerZero-based index of this row's outcome in the market's `outcomes` array, so `outcome` always equals `outcomes[outcomeIndex]`.
titlestring
slugstring
iconstringMarket artwork. Falls back to the market image, then to the parent event's icon and image, when the market has no icon of its own. Empty on `CONVERSION` rows.
eventSlugstring
outcomestring
namestring
pseudonymstring
biostring
profileImagestring
profileImageOptimizedstring
isCombobooleanTrue when this row is part of a combinatorial (multi-market) position. Flag only — combo detail is not embedded here.

Responses

StatusMeaning
200Success
400Bad Request
401Unauthorized
500Server 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.