WebSocket Reference
market:trades
Live trade feed
The market:trades channel broadcasts individual trades as they are synced from Polymarket and Kalshi. Each message represents a single executed trade on the underlying exchange.
Subscribe
{ "event": "subscribe", "data": { "channel": "market:trades" } }Unsubscribe
{ "event": "unsubscribe", "data": { "channel": "market:trades" } }Server Broadcast
{
"channel": "market:trades",
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"marketId": "c5a2e7f1-3b4d-4e6a-8f9c-1d2e3f4a5b6c",
"source": "polymarket",
"side": "buy",
"outcome": "yes",
"price": "0.672300",
"size": "500.000000",
"amount": "336.15",
"makerAddress": "0x1234...abcd",
"takerAddress": "0x5678...efgh",
"txHash": "0xabc123...def456",
"tradedAt": "2026-03-27T14:29:58.000Z"
}
}Payload Schema
| Field | Type | Description |
|---|---|---|
id | string | Unique trade identifier (UUID) |
marketId | string | Market this trade belongs to |
source | string | polymarket or kalshi |
side | string | buy or sell |
outcome | string | yes or no |
price | string | Execution price (Decimal, 6 decimal places) |
size | string | Number of shares traded (Decimal, 6 decimal places) |
amount | string | USD value of the trade (price * size) |
makerAddress | string? | Maker wallet address (Polymarket only) |
takerAddress | string? | Taker wallet address (Polymarket only) |
txHash | string? | Transaction hash (Polymarket only) |
tradedAt | string | ISO 8601 timestamp of trade execution |
Notes
- Trades are synced from exchanges and broadcast as they are ingested
makerAddressandtakerAddressare only available for Polymarket trades. Kalshi is a custodial exchange and does not expose wallet addressestxHashis only available for Polymarket trades (on-chain transactions on Polygon)- The
amountfield is pre-calculated asprice * sizefor convenience - Trade data is also persisted in the
ExchangeTradetable and powers the trade history feed on market detail pages