Binance websocket subscribe

2026-09-19 00:08 15

Binance WebSocket Subscribe: Unlocking Real-Time Trading Data with Python

Binance, one of the largest cryptocurrency exchanges by volume, boasts a wide array of tools for traders and developers alike. Among these is the Binance WebSocket subscribe feature, which provides real-time data feeds for various market statistics and order book updates. This article explores how to utilize this powerful tool through writing a simple Python application that subscribes to WebSockets on Binance's platform, captures live order book updates, and visualizes changes in real-time using matplotlib.

Understanding Binance WebSocket Subscribe

The Binance WebSocket subscribe feature is a direct connection between your trading application and the exchange's server for receiving up-to-date data feeds without any latency or loss of information. This feature uses Socket.io, an event-driven JavaScript library that simplifies real-time, bidirectional communication over a single open TCP socket. Binance supports several types of WebSocket subscriptions, including order book updates, new trade data, and various asset balance changes.

Setting Up the Environment

To begin writing your Python application, you'll need to install necessary packages for Python development:

```bash

pip install requests matplotlib websocket-client pandas

```

For security reasons, Binance requires a unique WebSocket public key for each user application. You can generate this key by visiting "https://www.binance.com/en/futures/websocket" and clicking the 'Generate WebSocket Public Key' button. This key is crucial as it allows you to authenticate your subscription with Binance, ensuring only authorized clients receive data.

Writing the Python Application

Your Python application will consist of constants for API keys, a public websocket key, and pairs to track. The code snippet below outlines the core elements:

```python

import websocket

import json

import matplotlib.pyplot as plt

import pandas as pd

from binance import client

Define constants

APIKEY = 'Your_api_key' # Replace with your Binance API Key

SECRETKEY = 'Your_secret_key' # Replace with your Binance Secret Key

PUBLIC_KEY = 'Your_public_websocket_key' # Generate a unique public key for your application

PAIRS = ['BTCUSDT'] # Define the pairs to track

WebSocket callback function

def on_message(ws, message):

data = json.loads(message)

symbol = data['s']

price = float(data['p']) / 10**8 # Convert price from bytes to a float

size = float(data['q']) / 10**8 # Convert size from bytes to a float

side = data['m'] # True for bid, False for ask

print(f'Symbol: {symbol} | Price: {price} | Size: {size} | Side: {side}')

if side:

df.loc[len(df)]=[symbol, 'Bid', price, size]

else:

df.loc[len(df)]=[symbol, 'Ask', price, size]

plt.clf()

ax1 = plt.subplot2grid((4,1), (0,0))

ax1.clear()

ax1.plot([price for _ in df['size']])

for i, row in enumerate(df[::-1]):

if row[2]:

ax1.scatter(row[3], len(df)-i, color='red' if row[1]=='Ask' else 'green')

plt.text(row[3],len(df)-i+0.5, f'{row[2]} - {row[3]}')

plt.show()

def on_close(ws):

print('

closed

#')

def on_error(ws, error):

print(error)

def subscribe():

url = f'wss://fapi.binance.com/ws/{PAIRS[0].lower()}@bookTicker'

publickey = 'EUR=' + PUBLIC_KEY

signature = client.get_signature(publickey, APIKEY) # Binance function to generate signature

print('Subscribing to: {}'.format(url))

ws = websocket.WebSocketApp(url,

on_message=on_message,

on_close=on_close,

on_error=on_error)

ws.sock.settimeout(10) # Set timeout for socket to avoid deadlocking

ws.connect()

print('Connected: {}'.format(ws.sock.getsockname()))

def init():

global df

df = pd.DataFrame([], columns=['symbol', 'side', 'price', 'size']) # Create a data frame to store incoming messages

subscribe()

init()

```

This Python script initiates a WebSocket connection with Binance's API for the BTCUSDT trading pair and captures every new trade. The `on_message` function is called each time Binance sends an update, which it does in real-time. This data is then visualized using matplotlib's interactive plotting capabilities.

Conclusion

Binance WebSocket subscribe offers a powerful tool for developers to receive live market data without any significant latency or loss of information. By integrating this feature into your applications, you can create robust and efficient trading strategies that react in real-time to the changing cryptocurrency market conditions. Whether it's analyzing trends, developing high-frequency trading algorithms, or simply visualizing market activity, Binance WebSocket subscribe is a vital component for modern crypto trader's toolbox.

RELATED POSTS