Trades (Unified)
Unified, per-trade feed across Polymarket and Kalshi in one consistent schema. After the trade source switch (v11.0.0), Polymarket rows are finalized on-chain fills with 137_<block>_<log> IDs and block times. Market and token reads cover retained venue history from June 2023 for Polymarket and January 2023 for Kalshi (with platform=kalshi); global and wallet-only reads cover 35 days. Restart pagination after the switch: earlier pagination keys return 400.
/v2/tradesParameters
platformstringpolymarket | kalshi. Optional - omit for both.
market_idstringcondition_id (Polymarket) or ticker (Kalshi). A Polymarket outcome token ID is also accepted and returns the same trades as token_id. Tokens without current market metadata use unresolved:<token>.
token_idstringOutcome token ID (Polymarket only).
walletstringMaker or taker wallet address. Polymarket-only data.
start_timeintegerUnix seconds. Earlier ranges are clamped to _meta.data_available_from, or return 422 history_outside_hot_window when explicit coverage errors are enabled. Omit for the last 48 hours, or the full served range when filtering by market_id, token_id, or wallet.
end_timeintegerUnix seconds. Default: now.
min_totalnumberMinimum notional USD (>= 0).
limitinteger1..500. Default: 100.
orderstringasc | desc. Default: desc.
pagination_keystringCursor returned by a prior call. A key issued before the trade source switch returns 400 validation.invalid_cursor; repeat the request without it.
Response
tradesobject[]Per-trade rows in requested order.
Show 13 fields
platformstringpolymarket | kalshi.
trade_idstringOpaque, stable per-platform ID. After the trade source switch (v11.0.0), Polymarket IDs use scheme version 1: 137_<block>_<log>. Kalshi IDs do not change.
market_idstringcondition_id (Polymarket) or ticker (Kalshi). Tokens without current market metadata use unresolved:<token>.
token_idstring | nullOutcome token ID (Polymarket only).
sidestring | nullKalshi outcome side (yes/no). Polymarket after the source switch: the maker participant's action (BUY/SELL).
taker_sidestring | nullyes | no | null. Null for Polymarket.
pricenumberExecution price in [0, 1].
sharesnumberTrade size in shares.
amount_usdnumberNotional USD (price * shares).
maker_addrstring | nullMaker participant wallet, including a trader's own taker-order fills (Polymarket only; null for Kalshi).
taker_addrstring | nullTaker address recorded for the fill; the exchange contract for a trader's own taker-order fill (Polymarket only; null for Kalshi).
executed_atstringISO8601 UTC timestamp. Polymarket after the source switch: the block time of the fill, usually 0 to 2 seconds after the venue match time.
timestampintegerUnix seconds.
paginationobjectCursor-based keyset pagination state.
Show 4 fields
limitintegerEchoed page size.
countintegerNumber of trades in this page.
pagination_keystring | nullPass into the next call to get the following page. Null when has_more is false.
has_morebooleanTrue if more rows exist beyond this page.
_metaobjectData window and caveats.
Show 2 fields
data_available_fromstringCurrent ISO8601 served floor. This moves with retention; read it from each live response before planning historical backfills.
warningstringPlain-text coverage note and the Polymarket-only wallet-filter caveat.