Type: VOLUME_PROFILE_AGG
Subscribe to real-time volume profiles built from live trade data. The server aggregates trades into price buckets and streams updated profiles at a configurable frequency. Block size is determined automatically based on the instrument’s price.
Type-specific parameters
These parameters are in addition to the common channel parameters.
| Parameter | Type | Required | Description |
|---|
groupByType | string | No | Set to "1" to aggregate across symbols for the same coin. When enabled, keep using symbol, but pass the coin identifier (for example BTC). Default: "0" (per-symbol). |
updateFrequency | string | No | Minimum time between updates (e.g., 100ms, 500ms, 1s). |
Like the REST API, you do not need to specify blockSize for volume profile — it is calculated server-side from the instrument’s price metadata.
Subscribe
Per-symbol (single exchange)
{
"jsonrpc": "2.0",
"id": 0,
"method": "public/subscribe",
"params": {
"channels": [
{
"type": "VOLUME_PROFILE_AGG",
"category": "*",
"exchange": "BINANCE_FUTURES",
"symbol": "BTCUSDT",
"quote": "USD"
}
],
"compression": "brotli",
"version": "v2"
}
}
Coin-aggregated (multi-exchange)
Set groupByType to "1" to aggregate volume across all symbols for the same coin. For this mode, keep the symbol field and pass the coin identifier, for example BTC. Only spot and perpetual markets with USD-quoted pairs are included in the aggregation.
{
"jsonrpc": "2.0",
"id": 1,
"method": "public/subscribe",
"params": {
"channels": [
{
"type": "VOLUME_PROFILE_AGG",
"category": "*",
"exchange": "BINANCE_FUTURES",
"symbol": "BTC",
"quote": "USD",
"groupByType": "1"
}
],
"compression": "brotli",
"version": "v2"
}
}
Response
{
"points": [
{
"series": {
"type": "VOLUME_PROFILE_AGG",
"symbol": "BTCUSDT",
"exchange": "BINANCE_FUTURES",
"coin": "BTC",
"category": "PERPETUAL",
"blockSize": 25
},
"volumeProfileAggregation": {
"profile": [
89950, 1.25, 0.87,
89975, 3.41, 2.15,
90000, 5.67, 4.32,
90025, 2.89, 3.01,
90050, 1.54, 0.92
],
"timestamp": {
"seconds": 1769058600
}
}
}
]
}
For grouped subscriptions, the live BTC stream returned series.symbol = "BTC" and series.coin = "BTC". series.groupByType was not present in the response.
| Field | Type | Description |
|---|
series.symbol | string | Exchange-native raw symbol for per-symbol subscriptions. Grouped subscriptions use the coin identifier, such as BTC. |
series.coin | string | Coin identifier for the stream |
series.blockSize | double | Price bucket size, determined automatically by the server |
volumeProfileAggregation.profile | double[] | Flat array of [price, buyVolume, sellVolume, ...] triplets, sorted ascending by price |
volumeProfileAggregation.timestamp | Timestamp | End of the aggregation interval |