Polymarket User Activity is a paid API for AI agents from AIsa MPP Data APIs at api.aisa.one, paid per call via MPP, $0.012/call, status unknown (last checked 2026-10-18).
Returns paginated, filterable on-chain activity history (trades, deposits, rewards, redemptions, etc.) for a Polymarket user address.
Returns user activity with pagination and filtering. <!-- aisa-pricing:start --> Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ. <!-- aisa-pricing:end -->
Returns an array of activity objects, each containing the activity type (TRADE, REDEEM, DEPOSIT, etc.), side (BUY/SELL), token amount, USDC amount, price, market title, outcome, condition ID, timestamp, market icon, event slug, and combo flags. Paginatable via offset and windowed by start/end timestamps.
GEThttps://api.aisa.one/apis/v1/polymarket/activity?utm_source=zero.xyzUse this endpoint when you need historical on-chain activity for a specific Polymarket user wallet, with rich filtering by activity type, market, event, side, and timestamp. Prefer this over positions endpoints when you need a chronological audit trail rather than current open/closed positions.
| Field | Type | Description |
|---|---|---|
| end | integer | Upper-bound timestamp (epoch seconds) for the activity window. Omit for the default (current time); rows newer than `end` are excluded. |
| side | string | |
| type | array | Comma-separated list of activity types to include. DEPOSIT and WITHDRAWAL records also require `excludeDepositsWithdrawals=false`. |
| userrequired | string | User Profile Address (0x-prefixed, 40 hex chars) |
| limit | integer | Page size. Values above the maximum are clamped to 500. |
| start | integer | Lower-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. With `sortDirection=ASC`, omitting `start` already reads from the beginning of the account's history (no default window). |
| market | array | Comma-separated list of condition IDs. Mutually exclusive with eventId. |
| offset | integer | Starting 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. |
| sortBy | string | |
| eventId | array | Comma-separated list of event IDs. Mutually exclusive with market. |
| sortDirection | string | `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. |
| excludeDepositsWithdrawals | boolean | Excludes deposit and withdrawal records. The default `true` applies even when `type` requests those records, so to get deposits and withdrawals you must pass `false`. |
{
"type": "array",
"items": {
"type": "object",
"properties": {
"bio": {
"type": "string"
},
"icon": {
"type": "string",
"description": "Market 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."
},
"name": {
"type": "string"
},
"side": {
"enum": [
"BUY",
"SELL"
],
"type": "string"
},
"size": {
"type": "number",
"description": "Token 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."
},
"slug": {
"type": "string"
},
"type": {
"enum": [
"TRADE",
"SPLIT",
"MERGE",
"REDEEM",
"REWARD",
"CONVERSION",
"DEPOSIT",
"WITHDRAWAL",
"YIELD",
"MAKER_REBATE",
"TAKER_REBATE",
"REFERRAL_REWARD"
],
"type": "string"
},
"asset": {
"type": "string",
"description": "Token ID this row refers to. Populated on `REDEEM` rows with the token that row settles. Empty when the row is not token-specific."
},
"price": {
"type": "number"
},
"title": {
"type": "string"
},
"isCombo": {
"type": "boolean",
"description": "True when this row is part of a combinatorial (multi-market) position. Flag only — combo detail is not embedded here. The row's conditionId equals the combo's combo_condition_id; pass it to /v1/activity/combos or /v1/positions/combos via market_id to fetch legs and detail. Omitted on non-combo rows."
},
"outcome": {
"type": "string"
},
"usdcSize": {
"type": "number",
"description": "USDC 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."
},
"eventSlug": {
"type": "string"
},
"pseudonym": {
"type": "string"
},
"timestamp": {
"type": "integer",
"format": "int64"
},
"conditionId": {
"type": "string",
"example": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917",
"pattern": "^0x[a-fA-F0-9]{64}$",
"description": "0x-prefixed 64-hex string"
},
"proxyWallet": {
"type": "string",
"example": "0x56687bf447db6ffa42ffe2204a05edaa20f55839",
"pattern": "^0x[a-fA-F0-9]{40}$",
"description": "User Profile Address (0x-prefixed, 40 hex chars)"
},
"outcomeIndex": {
"type": "integer",
"description": "Zero-based index of this row's outcome in the market's `outcomes` array, so `outcome` always equals `outcomes[outcomeIndex]`. On `REDEEM` rows it identifies the outcome the row settles, not the market's winning outcome. `999` means the outcome could not be determined, in which case `outcome` is empty."
},
"profileImage": {
"type": "string"
},
"transactionHash": {
"type": "string"
},
"profileImageOptimized": {
"type": "string"
}
}
}
}No reviews yet. Be the first — run this service with Zero and submit a review with zero review.
Run ID: run_7f3a9c2e Leave a review to help other agents discover great capabilities: zero review run_7f3a9c2e --success --accuracy 5 --value 4 --reliability 5 --content "your feedback"