Skip to main content

Trade Streams

Stream: <symbol>@trade · Update speed: real-time

Status: Implemented.

One frame per fill, taken from the matching engine's fill feed as it happens. This is the same event that later appears in GET /api/v3/trades and, for its two parties, in myTrades.

Frame (values illustrative)

{
"e": "trade",
"E": 1756600000456,
"s": "CBTC-USDCB",
"t": "019910a4-5b2e-7c3d-9e8f-0a1b2c3d4e5f",
"p": "60001.50",
"q": "0.0100",
"T": 1756600000456,
"m": false
}
FieldTypeNotes
estringAlways "trade".
EnumberEvent time, Unix ms (gateway receive time).
sstringCanonical symbol, uppercase with hyphen.
tstringTrade id — UUID string. Equal to id on GET /api/v3/trades and myTrades.
p, qstringPrice and base quantity.
TnumberTrade time, Unix ms. Same value as E: the engine's fill event carries no separate timestamp.
mbooleantrue if the buyer was the maker (the taker sold).

Not present, by design: b / a (buyer/seller order ids), M, and any party or account identifier. This is a public stream; nothing in it lets an observer attribute a print to a participant.

Semantics

  • Internal engine events that are not fills (for example the cancellation of a MARKET order's unfilled remainder) are filtered out and never appear here.
  • Fills are delivered in engine order. A slow consumer that overruns its 256-frame queue skips ahead and misses prints; reconcile with GET /api/v3/trades (newest first) if you detect a gap in wall-clock time.
  • Every fill on the venue appears, including fills between Rocky house accounts.

Differences from Binance

  • t is a UUID string, not an integer.
  • No b, a, or M fields; E and T are identical.
  • No @aggTrade stream.