Data
Trades & Candles
Executed trades and OHLCV candlestick aggregations for any market. The records behind them are described on Polymarket trade history and Polymarket price history.
GET
/markets/{market_id}/tradessdk
client.markets.trades(market_id, **params)List executed trades for a market, ordered by execution time.
Parameters
market_idstrrequired
Market UUID or Polymarket condition id.
afterint | str
Trades after this time, exclusive (ms epoch or ISO 8601).
beforeint | str
Trades before this time, exclusive (ms epoch or ISO 8601).
sidestr
"BUY" or "SELL".
min_sizestr
Minimum trade size in USD.
orderstr= "asc"
Sort order.
limitint= 500
Trades per page.
takeint
SDK only. Caps total items returned across pages.
Response fields
meta.coverageobject
The market's data_start, data_end and collection_tier.
from datetime import datetime, timedelta, timezone
end = datetime.now(timezone.utc) - timedelta(days=1)
[market] = client.markets.list(
series_id="btc-up-or-down-5m", status="resolved",
close_before=end, sort="-close_time", take=1,
)
trades = client.markets.trades(
market.id,
after=end - timedelta(minutes=10),
before=end,
side="BUY",
)
df = trades.to_dataframe()
print(df[["price", "size", "side"]].head())jsonResponse
{
"data": [{
"id": "01HQXYZ...",
"market_id": "8150b888-67f6-58ed-...",
"platform": "polymarket",
"price": 0.6200,
"size": 150.0000,
"side": "BUY",
"platform_timestamp": 1710400123456,
"collected_at": 1710400123800,
"fee_rate_bps": 100
}],
"meta": {
"cursor": "...",
"has_more": true,
"coverage": { "data_start": 1710399900000, "data_end": 1710486300000, "collection_tier": "streamed" }
}
}GET
/markets/{market_id}/candlessdk
client.markets.candles(market_id, **params)OHLCV candlestick data at configurable resolution. Buckets with zero trades are omitted.
Parameters
market_idstrrequired
Market UUID or Polymarket condition id.
resolutionstr= "1m"
Candle interval.
afterint | str
Candles starting at or after this time (ms epoch or ISO 8601).
beforeint | str
Candles starting before this time (ms epoch or ISO 8601).
orderstr= "asc"
Sort order.
limitint= 500
Candles per page.
takeint
SDK only. Caps total items returned across pages.
Response fields
meta.coverageobject
The market's data_start, data_end and collection_tier.
Resolutions
1s, 5s, 10s, 30s
Sub-minute intervals.
1m, 5m, 15m
Minute intervals.
1h, 4h, 1d
Hourly and daily intervals.
from datetime import datetime, timedelta, timezone
end = datetime.now(timezone.utc) - timedelta(days=1)
[market] = client.markets.list(
series_id="btc-up-or-down-5m", status="resolved",
close_before=end, sort="-close_time", take=1,
)
candles = client.markets.candles(
market.id,
resolution="1m",
after=end - timedelta(minutes=10),
before=end,
)
df = candles.to_dataframe()
print(df[["open", "high", "low", "close"]].tail())jsonResponse
{
"data": [{
"open_time": 1710400200000,
"close_time": 1710400500000,
"open": 0.6200,
"high": 0.6350,
"low": 0.6180,
"close": 0.6300,
"vwap": 0.6265,
"volume": 4250.0000,
"trade_count": 18
}],
"meta": {
"cursor": "...",
"has_more": true,
"coverage": { "data_start": 1710399900000, "data_end": 1710486300000, "collection_tier": "streamed" }
}
}