GET
/v1/markets/:id/tradesGet Market Trades
Paginated executed-trade tape (last_trade_price fills) for a market. Joins to snapshots via asset_id = token_id and matching timestamp — line up a fill against the book at that instant to see what liquidity was resting. This is the tape AS OBSERVED LIVE, not a guaranteed-complete fill history: trades carry no separate exchange event time (timestamp is capture time), transaction_hash is not captured, and a market that predates trade capture (or had no trades) returns 200 with total: 0.
Path Parameters
idstringrequiredMarket ID (conditionId)
Query Parameters
formatstringdefault:jsonResponse encoding. csv and tsv return the row array as a flat file instead of a JSON envelope — the envelope moves to X-* response headers and nulls render as \N. REQUIRES SCALE OR ENTERPRISE (json is available on every tier). Works with includebook=true — the bids/asks ladders come through as compact JSON inside their cell, complete and parseable (pandas: df["bids"].apply(json.loads)).
sidestringToken side filter (also populates token_side on each row)
fromstringStart timestamp
tostringEnd timestamp
limitnumberdefault:500Max rows (default 500, max 5000)
offsetnumberdefault:0Pagination offset
orderstringdefault:descSort by timestamp: asc/oldest (chronological) or desc/newest (reverse). Defaults to desc.
countbooleandefault:trueSet to false to skip the count() query (returns total: null).
Response
200401403404500
Successful Response
Code Snippet
curl -X GET "https://api.resolvedmarkets.com/v1/markets/:id/trades" \ -H "X-API-Key: YOUR_API_KEY"
200
{
"market_id": "0x...",
"total": 24416,
"limit": 100,
"offset": 0,
"data": [
{
"market_id": "0x...",
"asset_id": "253124573920...",
"timestamp": "2026-07-14 21:14:31.700",
"price": 0.9975,
"size": 42.37,
"side": "SELL",
"category": "crypto",
"subcategory": "BTC",
"token_side": "UP"
}
]
}
