Binance.US · AsyncAPI Specification

Binance.US WebSocket Streams

Version 1.0.0

Binance.US WebSocket Streams deliver real-time market data and account events over persistent WebSocket connections. Streams can be consumed as a single raw stream at /ws/ or as a combined stream at /stream?streams=//, where combined events are wrapped as {"stream":"","data":}. All stream symbols are lowercase. A single connection is valid for 24 hours; the server sends a ping frame every 3 minutes and disconnects if no pong is received within 10 minutes. A connection accepts at most 5 incoming messages per second and may subscribe to at most 1024 streams. This document is an API Evangelist generation from the published Binance.US documentation. Binance.US does not publish an AsyncAPI document of its own.

View Spec View on GitHub CompanyCryptocurrencyDigital AssetsExchangeTradingMarket DataFinancial ServicesWebSocketCustodyStakingAsyncAPIWebhooksEvents

Channels

{symbol}@aggTrade
subscribe aggTradeStream
Receive aggregate trade events for a symbol.
Aggregate Trade Stream — trade information aggregated for a single taker order. Update speed real-time.
{symbol}@trade
subscribe tradeStream
Receive raw trade events for a symbol.
Trade Stream — raw trade information; each trade has a unique buyer and seller. Update speed real-time.
{symbol}@kline_{interval}
subscribe klineStream
Receive kline/candlestick events for a symbol and interval.
Kline/Candlestick Stream — pushes updates to the current kline every second. Intervals 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M.
{symbol}@ticker
subscribe ticker24hStream
Receive 24hr rolling window ticker statistics for a symbol.
24hr rolling window ticker statistics for a single symbol. Update speed 1000ms.
!ticker@arr
subscribe allMarketTickerStream
Receive 24hr ticker statistics for every changed symbol.
24hr rolling window ticker statistics for all symbols that changed, delivered as an array. Update speed 1000ms.
{symbol}@ticker_{windowSize}
subscribe rollingWindowTickerStream
Receive rolling-window ticker statistics for a symbol.
Rolling window ticker statistics for a single symbol over a 1h or 4h window. Update speed 1000ms. The open time O always starts at the beginning of the minute, so the effective window can be up to 59999ms wider than the requested window size.
!ticker_{windowSize}@arr
subscribe allMarketRollingWindowTickerStream
Receive rolling-window ticker statistics for every changed symbol.
Rolling window ticker statistics for all changed symbols. Update speed 1000ms.
{symbol}@miniTicker
subscribe miniTickerStream
Receive 24hr mini-ticker statistics for a symbol.
24hr rolling window mini-ticker statistics for a single symbol. Update speed 1000ms.
!miniTicker@arr
subscribe allMarketMiniTickerStream
Receive 24hr mini-ticker statistics for every changed symbol.
24hr rolling window mini-ticker statistics for all changed symbols. Update speed 1000ms.
{symbol}@bookTicker
subscribe bookTickerStream
Receive best bid/ask updates for a symbol.
Pushes any update to the best bid or ask price or quantity in real-time for a specified symbol.
{symbol}@depth{levels}
subscribe partialDepthStream
Receive a partial order book snapshot for a symbol.
Partial Order Book Depth Stream — top bids and asks. Valid levels are 5, 10 or 20. Update speed 1000ms, or 100ms when the stream name is suffixed with @100ms.
{symbol}@depth
subscribe diffDepthStream
Receive order book diff updates for a symbol.
Order Book Depth Diff Stream — order book price and quantity depth updates used to manage a local order book. Update speed 1000ms, or 100ms when the stream name is suffixed with @100ms.
{listenKey}
subscribe userDataStream
Receive account, order and balance events for the authenticated account.
User Data Stream — account, order and balance events for the authenticated account. Accessed at /ws/ or /stream?streams=. The listenKey is created with POST /api/v3/userDataStream, is valid for 60 minutes, is extended by PUT and invalidated by DELETE.

Messages

AggTrade
Aggregate Trade
Trade
Trade
Kline
Kline / Candlestick
Ticker24hr
24hr Ticker Statistics
Ticker24hrArray
All Market 24hr Ticker Statistics
RollingWindowTicker
Rolling Window Ticker Statistics
RollingWindowTickerArray
All Market Rolling Window Ticker Statistics
MiniTicker
24hr Mini Ticker Statistics
MiniTickerArray
All Market 24hr Mini Ticker Statistics
BookTicker
Best Bid / Ask
PartialDepth
Partial Order Book Depth
DepthUpdate
Order Book Depth Diff
OutboundAccountPosition
Account Update
Sent any time an account balance changes; contains the assets possibly changed by the event that generated the balance change.
BalanceUpdate
Balance Update
ExecutionReport
Order Update

Servers

wss
production stream.binance.us:9443
Production WebSocket stream server. Raw streams at /ws/, combined streams at /stream?streams=/. Also reachable on port 443.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Binance.US WebSocket Streams
  version: '1.0.0'
  description: >-
    Binance.US WebSocket Streams deliver real-time market data and account events over persistent WebSocket
    connections. Streams can be consumed as a single raw stream at /ws/<streamName> or as a combined stream at
    /stream?streams=<a>/<b>/<c>, where combined events are wrapped as
    {"stream":"<streamName>","data":<rawPayload>}. All stream symbols are lowercase. A single connection is
    valid for 24 hours; the server sends a ping frame every 3 minutes and disconnects if no pong is received
    within 10 minutes. A connection accepts at most 5 incoming messages per second and may subscribe to at
    most 1024 streams.


    This document is an API Evangelist generation from the published Binance.US documentation. Binance.US does
    not publish an AsyncAPI document of its own.
  contact:
    name: Binance.US API Support
    url: https://support.binance.us/en
  license:
    name: Binance.US Terms of Use
    url: https://www.binance.us/terms-of-use
  x-generated: '2026-08-07'
  x-method: generated
  x-source: https://docs.binance.us/#websocket-streams
externalDocs:
  description: Binance.US WebSocket Streams documentation
  url: https://docs.binance.us/#websocket-streams
defaultContentType: application/json
servers:
  production:
    url: stream.binance.us:9443
    protocol: wss
    description: >-
      Production WebSocket stream server. Raw streams at /ws/<streamName>, combined streams at
      /stream?streams=<streamName1>/<streamName2>. Also reachable on port 443.
channels:
  '{symbol}@aggTrade':
    description: >-
      Aggregate Trade Stream — trade information aggregated for a single taker order. Update speed real-time.
    parameters:
      symbol:
        description: Lowercase trading symbol, e.g. btcusdt.
        schema:
          type: string
    subscribe:
      operationId: aggTradeStream
      summary: Receive aggregate trade events for a symbol.
      message:
        $ref: '#/components/messages/AggTrade'
  '{symbol}@trade':
    description: Trade Stream — raw trade information; each trade has a unique buyer and seller. Update speed real-time.
    parameters:
      symbol:
        schema:
          type: string
    subscribe:
      operationId: tradeStream
      summary: Receive raw trade events for a symbol.
      message:
        $ref: '#/components/messages/Trade'
  '{symbol}@kline_{interval}':
    description: >-
      Kline/Candlestick Stream — pushes updates to the current kline every second. Intervals 1m, 3m, 5m, 15m,
      30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M.
    parameters:
      symbol:
        schema:
          type: string
      interval:
        schema:
          type: string
          enum: ['1m','3m','5m','15m','30m','1h','2h','4h','6h','8h','12h','1d','3d','1w','1M']
    subscribe:
      operationId: klineStream
      summary: Receive kline/candlestick events for a symbol and interval.
      message:
        $ref: '#/components/messages/Kline'
  '{symbol}@ticker':
    description: 24hr rolling window ticker statistics for a single symbol. Update speed 1000ms.
    parameters:
      symbol:
        schema:
          type: string
    subscribe:
      operationId: ticker24hStream
      summary: Receive 24hr rolling window ticker statistics for a symbol.
      message:
        $ref: '#/components/messages/Ticker24hr'
  '!ticker@arr':
    description: >-
      24hr rolling window ticker statistics for all symbols that changed, delivered as an array. Update speed
      1000ms.
    subscribe:
      operationId: allMarketTickerStream
      summary: Receive 24hr ticker statistics for every changed symbol.
      message:
        $ref: '#/components/messages/Ticker24hrArray'
  '{symbol}@ticker_{windowSize}':
    description: >-
      Rolling window ticker statistics for a single symbol over a 1h or 4h window. Update speed 1000ms. The
      open time O always starts at the beginning of the minute, so the effective window can be up to 59999ms
      wider than the requested window size.
    parameters:
      symbol:
        schema:
          type: string
      windowSize:
        schema:
          type: string
          enum: ['1h','4h']
    subscribe:
      operationId: rollingWindowTickerStream
      summary: Receive rolling-window ticker statistics for a symbol.
      message:
        $ref: '#/components/messages/RollingWindowTicker'
  '!ticker_{windowSize}@arr':
    description: Rolling window ticker statistics for all changed symbols. Update speed 1000ms.
    parameters:
      windowSize:
        schema:
          type: string
          enum: ['1h','4h']
    subscribe:
      operationId: allMarketRollingWindowTickerStream
      summary: Receive rolling-window ticker statistics for every changed symbol.
      message:
        $ref: '#/components/messages/RollingWindowTickerArray'
  '{symbol}@miniTicker':
    description: 24hr rolling window mini-ticker statistics for a single symbol. Update speed 1000ms.
    parameters:
      symbol:
        schema:
          type: string
    subscribe:
      operationId: miniTickerStream
      summary: Receive 24hr mini-ticker statistics for a symbol.
      message:
        $ref: '#/components/messages/MiniTicker'
  '!miniTicker@arr':
    description: 24hr rolling window mini-ticker statistics for all changed symbols. Update speed 1000ms.
    subscribe:
      operationId: allMarketMiniTickerStream
      summary: Receive 24hr mini-ticker statistics for every changed symbol.
      message:
        $ref: '#/components/messages/MiniTickerArray'
  '{symbol}@bookTicker':
    description: >-
      Pushes any update to the best bid or ask price or quantity in real-time for a specified symbol.
    parameters:
      symbol:
        schema:
          type: string
    subscribe:
      operationId: bookTickerStream
      summary: Receive best bid/ask updates for a symbol.
      message:
        $ref: '#/components/messages/BookTicker'
  '{symbol}@depth{levels}':
    description: >-
      Partial Order Book Depth Stream — top <levels> bids and asks. Valid levels are 5, 10 or 20. Update speed
      1000ms, or 100ms when the stream name is suffixed with @100ms.
    parameters:
      symbol:
        schema:
          type: string
      levels:
        schema:
          type: string
          enum: ['5','10','20']
    subscribe:
      operationId: partialDepthStream
      summary: Receive a partial order book snapshot for a symbol.
      message:
        $ref: '#/components/messages/PartialDepth'
  '{symbol}@depth':
    description: >-
      Order Book Depth Diff Stream — order book price and quantity depth updates used to manage a local order
      book. Update speed 1000ms, or 100ms when the stream name is suffixed with @100ms.
    parameters:
      symbol:
        schema:
          type: string
    subscribe:
      operationId: diffDepthStream
      summary: Receive order book diff updates for a symbol.
      message:
        $ref: '#/components/messages/DepthUpdate'
  '{listenKey}':
    description: >-
      User Data Stream — account, order and balance events for the authenticated account. Accessed at
      /ws/<listenKey> or /stream?streams=<listenKey>. The listenKey is created with POST
      /api/v3/userDataStream, is valid for 60 minutes, is extended by PUT and invalidated by DELETE.
    parameters:
      listenKey:
        description: The listenKey returned by POST /api/v3/userDataStream.
        schema:
          type: string
    subscribe:
      operationId: userDataStream
      summary: Receive account, order and balance events for the authenticated account.
      message:
        oneOf:
        - $ref: '#/components/messages/OutboundAccountPosition'
        - $ref: '#/components/messages/BalanceUpdate'
        - $ref: '#/components/messages/ExecutionReport'
components:
  messages:
    AggTrade:
      name: aggTrade
      title: Aggregate Trade
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: Event type, const: aggTrade}
          E: {type: integer, description: Event time (ms)}
          s: {type: string, description: Symbol}
          a: {type: integer, description: Aggregate trade ID}
          p: {type: string, description: Price}
          q: {type: string, description: Quantity}
          f: {type: integer, description: First trade ID}
          l: {type: integer, description: Last trade ID}
          T: {type: integer, description: Trade time (ms)}
          m: {type: boolean, description: 'Is the buyer the market maker?'}
          M: {type: boolean, description: Ignore}
    Trade:
      name: trade
      title: Trade
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: Event type, const: trade}
          E: {type: integer, description: Event time (ms)}
          s: {type: string, description: Symbol}
          t: {type: integer, description: Trade ID}
          p: {type: string, description: Price}
          q: {type: string, description: Quantity}
          b: {type: integer, description: Buyer order ID}
          a: {type: integer, description: Seller order ID}
          T: {type: integer, description: Trade time (ms)}
          m: {type: boolean, description: 'Is the buyer the market maker?'}
          M: {type: boolean, description: Ignore}
    Kline:
      name: kline
      title: Kline / Candlestick
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: Event type, const: kline}
          E: {type: integer, description: Event time (ms)}
          s: {type: string, description: Symbol}
          k:
            type: object
            properties:
              t: {type: integer, description: Kline start time}
              T: {type: integer, description: Kline close time}
              s: {type: string, description: Symbol}
              i: {type: string, description: Interval}
              f: {type: integer, description: First trade ID}
              L: {type: integer, description: Last trade ID}
              o: {type: string, description: Open price}
              c: {type: string, description: Close price}
              h: {type: string, description: High price}
              l: {type: string, description: Low price}
              v: {type: string, description: Base asset volume}
              n: {type: integer, description: Number of trades}
              x: {type: boolean, description: 'Is this kline closed?'}
              q: {type: string, description: Quote asset volume}
              V: {type: string, description: Taker buy base asset volume}
              Q: {type: string, description: Taker buy quote asset volume}
              B: {type: string, description: Ignore}
    Ticker24hr:
      name: 24hrTicker
      title: 24hr Ticker Statistics
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: Event type, const: 24hrTicker}
          E: {type: integer, description: Event time (ms)}
          s: {type: string, description: Symbol}
          p: {type: string, description: Price change}
          P: {type: string, description: Price change percent}
          w: {type: string, description: Weighted average price}
          x: {type: string, description: First trade (F)-1 price}
          c: {type: string, description: Last price}
          Q: {type: string, description: Last quantity}
          b: {type: string, description: Best bid price}
          B: {type: string, description: Best bid quantity}
          a: {type: string, description: Best ask price}
          A: {type: string, description: Best ask quantity}
          o: {type: string, description: Open price}
          h: {type: string, description: High price}
          l: {type: string, description: Low price}
          v: {type: string, description: Total traded base asset volume}
          q: {type: string, description: Total traded quote asset volume}
          O: {type: integer, description: Statistics open time}
          C: {type: integer, description: Statistics close time}
          F: {type: integer, description: First trade ID}
          L: {type: integer, description: Last trade ID}
          n: {type: integer, description: Total number of trades}
    Ticker24hrArray:
      name: allMarket24hrTicker
      title: All Market 24hr Ticker Statistics
      contentType: application/json
      payload:
        type: array
        items:
          $ref: '#/components/messages/Ticker24hr/payload'
    RollingWindowTicker:
      name: rollingWindowTicker
      title: Rolling Window Ticker Statistics
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: 'Event type, e.g. 1hTicker or 4hTicker'}
          E: {type: integer, description: Event time (ms)}
          s: {type: string, description: Symbol}
          p: {type: string, description: Price change}
          P: {type: string, description: Price change percent}
          o: {type: string, description: Open price}
          h: {type: string, description: High price}
          l: {type: string, description: Low price}
          c: {type: string, description: Last price}
          w: {type: string, description: Weighted average price}
          v: {type: string, description: Total traded base asset volume}
          q: {type: string, description: Total traded quote asset volume}
          O: {type: integer, description: Statistics open time}
          C: {type: integer, description: Statistics close time}
          F: {type: integer, description: First trade ID}
          L: {type: integer, description: Last trade ID}
          n: {type: integer, description: Total number of trades}
    RollingWindowTickerArray:
      name: allMarketRollingWindowTicker
      title: All Market Rolling Window Ticker Statistics
      contentType: application/json
      payload:
        type: array
        items:
          $ref: '#/components/messages/RollingWindowTicker/payload'
    MiniTicker:
      name: 24hrMiniTicker
      title: 24hr Mini Ticker Statistics
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: Event type, const: 24hrMiniTicker}
          E: {type: integer, description: Event time (ms)}
          s: {type: string, description: Symbol}
          c: {type: string, description: Close price}
          o: {type: string, description: Open price}
          h: {type: string, description: High price}
          l: {type: string, description: Low price}
          v: {type: string, description: Total traded base asset volume}
          q: {type: string, description: Total traded quote asset volume}
    MiniTickerArray:
      name: allMarketMiniTicker
      title: All Market 24hr Mini Ticker Statistics
      contentType: application/json
      payload:
        type: array
        items:
          $ref: '#/components/messages/MiniTicker/payload'
    BookTicker:
      name: bookTicker
      title: Best Bid / Ask
      contentType: application/json
      payload:
        type: object
        properties:
          u: {type: integer, description: Order book updateId}
          s: {type: string, description: Symbol}
          b: {type: string, description: Best bid price}
          B: {type: string, description: Best bid quantity}
          a: {type: string, description: Best ask price}
          A: {type: string, description: Best ask quantity}
    PartialDepth:
      name: partialDepth
      title: Partial Order Book Depth
      contentType: application/json
      payload:
        type: object
        properties:
          lastUpdateId: {type: integer, description: Last update ID}
          bids:
            type: array
            description: Bids to be updated as [price, quantity] pairs.
            items:
              type: array
              items: {type: string}
          asks:
            type: array
            description: Asks to be updated as [price, quantity] pairs.
            items:
              type: array
              items: {type: string}
    DepthUpdate:
      name: depthUpdate
      title: Order Book Depth Diff
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: Event type, const: depthUpdate}
          E: {type: integer, description: Event time (ms)}
          s: {type: string, description: Symbol}
          U: {type: integer, description: First update ID in event}
          u: {type: integer, description: Final update ID in event}
          b:
            type: array
            description: Bids to be updated as [price, quantity] pairs. Quantity 0 removes the price level.
            items:
              type: array
              items: {type: string}
          a:
            type: array
            description: Asks to be updated as [price, quantity] pairs. Quantity 0 removes the price level.
            items:
              type: array
              items: {type: string}
    OutboundAccountPosition:
      name: outboundAccountPosition
      title: Account Update
      summary: >-
        Sent any time an account balance changes; contains the assets possibly changed by the event that
        generated the balance change.
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: Event type, const: outboundAccountPosition}
          E: {type: integer, description: Event time (ms)}
          u: {type: integer, description: Time of last account update}
          B:
            type: array
            description: Balances array
            items:
              type: object
              properties:
                a: {type: string, description: Asset}
                f: {type: string, description: Free}
                l: {type: string, description: Locked}
    BalanceUpdate:
      name: balanceUpdate
      title: Balance Update
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: Event type, const: balanceUpdate}
          E: {type: integer, description: Event time (ms)}
          a: {type: string, description: Asset}
          d: {type: string, description: Balance delta}
          T: {type: integer, description: Clear time (ms)}
    ExecutionReport:
      name: executionReport
      title: Order Update
      contentType: application/json
      payload:
        type: object
        properties:
          e: {type: string, description: Event type, const: executionReport}
          E: {type: integer, description: Event time (ms)}
          s: {type: string, description: Symbol}
          c: {type: string, description: Client order ID}
          S: {type: string, description: Side}
          o: {type: string, description: Order type}
          f: {type: string, description: Time in force}
          q: {type: string, description: Order quantity}
          p: {type: string, description: Order price}
          P: {type: string, description: Stop price}
          d: {type: integer, description: Trailing delta (trailing stop orders only)}
          F: {type: string, description: Iceberg quantity}
          g: {type: integer, description: OrderListId}
          C: {type: string, description: Original client order ID (order being canceled)}
          x: {type: string, description: Current execution type}
          X: {type: string, description: Current order status}
          r: {type: string, description: Order reject reason}
          i: {type: integer, description: Order ID}
          l: {type: string, description: Last executed quantity}
          z: {type: string, description: Cumulative filled quantity}
          L: {type: string, description: Last executed price}
          n: {type: string, description: Commission amount}
          N: {type: ['string','null'], description: Commission asset}
          T: {type: integer, description: Transaction time (ms)}
          t: {type: integer, description: Trade ID}
          I: {type: integer, description: Ignore}
          w: {type: boolean, description: 'Is the order on the book?'}
          m: {type: boolean, description: 'Is this trade the maker side?'}
          M: {type: boolean, description: Ignore}
          O: {type: integer, description: Order creation time}
          Z: {type: string, description: Cumulative quote asset transacted quantity}
          Y: {type: string, description: Last quote asset transacted quantity}
          Q: {type: string, description: Quote order quantity}
          V: {type: string, description: Self-trade prevention mode}
          D: {type: integer, description: Trailing time (appears if the trailing stop order is active)}
          W: {type: integer, description: Working time (appears if the order is working on the book)}
          u: {type: integer, description: tradeGroupId (appears if the order expired due to STP)}
          v: {type: integer, description: preventedMatchId (appears if the order expired due to STP)}
          U: {type: integer, description: counterOrderId (appears if the order expired due to STP)}