Request
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
side | string | both | maker, taker, or both |
token_id | string | — | Filter trades involving this token |
condition_id | string | — | Filter by market condition ID (resolves to token IDs) |
market_slug | string | — | Filter by market slug (resolves to token IDs) |
min_amount | integer | — | Minimum maker_amount_filled (raw 6-decimal) |
sort_by | string | — | order_hash groups fills by limit order visually (individual fill rows, sorted by most recent order) |
group_by | string | — | user_trade returns Polymarket-style user-visible trade rows; transaction_hash is an alias; order_hash aggregates wallet-visible fills per order |
after | integer | — | Start of time range (Unix timestamp) |
before | integer | — | End of time range (Unix timestamp) |
include_combos | boolean | false | Add combo trades in a separate combo_trades branch. If the wallet has no combo trades, the response remains 200 with an empty combo branch. |
order | string | desc | asc or desc |
limit | integer | 100 | Max 300 |
offset | integer | 0 | Pagination offset |
Example
Maker-only trades
Trades for a specific token
Trades in a time window
Include combo trades
combo_trades so existing consumers of the standard trades array do not need to change parsing logic.
Response fields
Top-level combo fields
| Field | Type | Description |
|---|---|---|
include_combos | boolean | Present when include_combos=true was requested |
included_position_types | array | Includes market and combo when combo inclusion was requested |
combo_trades | array | Combo trade rows for the wallet |
combo_trade_count | integer | Number of combo trade rows returned in this page |
combo_has_more | boolean | Whether more combo trade rows are available |
combo_source | string | Source label for the combo trade branch |
Trade data
| Field | Type | Description |
|---|---|---|
id | string | Unique fill ID (transaction_hash + log index) |
maker | string | Maker wallet address |
taker | string | Taker wallet address |
maker_asset_id | string | Asset the maker provided (0 = USDC) |
taker_asset_id | string | Asset the taker provided (0 = USDC) |
maker_amount | number | USD amount the maker provided |
taker_amount | number | USD amount the taker provided |
fee | number | Fee charged (USD) |
token_id | string | Outcome token ID for the visible trade leg |
asset | string | Alias for token_id, included for Polymarket compatibility |
amount | number | Alias for size, included for Polymarket compatibility |
price | number | Computed price per outcome token (maker_amount / taker_amount or inverse) |
size | number | Number of outcome tokens traded (USD) |
timestamp | string | Unix timestamp |
transaction_hash | string | On-chain transaction hash |
order_hash | string | Unique order hash for this fill |
builder | string | Builder attribution code (hex) |
side | integer | Maker’s limit order direction: 0 = maker was buying tokens, 1 = maker was selling tokens, null for V1 trades. This is the maker’s side, not the queried wallet’s action. Use direction instead for the wallet’s perspective. |
role | string | maker or taker — which side the queried wallet was on in this fill |
direction | string | BUY or SELL — whether the queried wallet bought or sold outcome tokens. This is the field you want for understanding what the wallet did. |
Market context
| Field | Type | Description |
|---|---|---|
market | string | Market question text |
slug | string | Market URL slug |
outcome | string | Outcome label (e.g. “Yes”, “Aurora”) |
outcome_index | integer | Outcome position (0 or 1) |
image | string | Market image URL |
condition_id | string | Market condition ID |
Sort fills by order hash
User-visible trades
group_by=transaction_hash is accepted as an alias for this behavior.
Aggregate fills by order hash
group_by=user_trade when you want one row per user-visible fill without order-level rollup.
Grouped response fields
| Field | Type | Description |
|---|---|---|
order_hash | string | The limit order hash |
fill_count | integer | Number of fills in this order |
avg_price | number | Volume-weighted average price (total_amount_usd / total_shares) |
total_amount_usd | number | Total USD value across all fills. Alias of total_usd, included for compatibility with grouped onchain trade responses. |
total_usd | number | Total USD value across all fills |
total_shares | number | Total outcome tokens across all fills |
total_fee | number | Total fees (USD) |
total_maker_amount | number | Raw sum of maker amounts (side-dependent) |
total_taker_amount | number | Raw sum of taker amounts (side-dependent) |
first_fill_at | integer | Earliest fill timestamp (Unix seconds) |
last_fill_at | integer | Latest fill timestamp (Unix seconds) |
timestamp | string | Same as last_fill_at but as a string. Present for consistency with ungrouped trade rows. |
tx_hashes | array<string> | Unique transaction hashes contributing to this order |
market | string | null | Market question |
slug | string | null | Market slug |
outcome | string | null | Outcome label |
outcome_index | integer | null | Outcome position (0 or 1) |
image | string | null | Market image URL |
condition_id | string | null | Market condition ID |
direction | string | BUY or SELL (queried wallet’s perspective) |
role | string | maker or taker (which side the queried wallet was on) |
side | integer | null | Maker’s limit-order direction (raw on-chain value). Use direction instead. |
maker | string | Maker wallet address |
taker | string | Taker wallet address |

