Crypto Market News

Blockchain & Cryptocurrency News

Binance websocket subscribe

Release time:2026-02-20 03:02:42

Recommend exchange platforms

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


Binance, one of the largest cryptocurrency exchanges by volume, offers 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 the changes in real-time using matplotlib.


Understanding Binance WebSocket Subscribe


Binance's 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. The 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, 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


```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)


Initialize websocket connection to Binance


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()))


Initialize data frame and websocket connection


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.

Recommended articles