Synpath
Live Market Data

Trades

Every public print on the markets you watch, in the YES price.

WSSawait stream.watch_trades(market_ids)SDK stream · your process · venue credentials

Self-hosted. Opened from your own process straight to the venue. Nothing here runs on Synpath's servers.

One event per execution. price is the YES price and taker_side is what the aggressor did on the YES leg: buy took YES, sell took NO. A trade on Polymarket's NO token is reported at 1 − price with the side flipped, so every venue reads the same way.

Venues

VenueSupportNotes
PolymarketSupportedNo taker side on the wire; taker_side is null.
KalshiSupportedWith the taker's side. Numbered per subscription, so a missed trade is reported as a gap.
Polymarket USSupportedWith the taker's side.
OpinionSupportedOn the YES leg, with the taker's side. Splits and merges arrive as venue events.

Parameters

NameTypeDescription
market_idslist[str] | NoneSynpath ids. On Kalshi, omit for every market.

TradeEvent

A public execution.

NameTypeDescription
venuestringWhich venue the event came from.
received_atintegerWhen this process received it, ms since epoch.
market_idstring
idstring | nullThe venue's trade id or transaction hash.
pricedecimalThe YES price.
amountdecimalContracts.
taker_sidebuy | sell | nullOn the YES leg, where the venue says.
timestampinteger | null
import asyncio
from synpath import PolymarketMarketStream

stream = PolymarketMarketStream()                              # no credentials

from synpath import TradeEvent

async def main():
    async with stream:
        await stream.watch_trades(["polymarket:2252244"])
        async for event in stream:
            if isinstance(event, TradeEvent):
                print(event.timestamp, event.taker_side, event.price, event.amount)

asyncio.run(main())
TradeEvent
{
  "venue": "polymarket",
  "received_at": 1790077592174,
  "market_id": "polymarket:2252244",
  "id": "0x9f3c…",
  "price": "0.42",
  "amount": "25",
  "taker_side": "buy",
  "timestamp": 1789655011496,
  "info": {}
}