Skip to main content
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.
ParameterTypeRequiredDescription
groupByTypestringNoSet 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).
updateFrequencystringNoMinimum 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.
FieldTypeDescription
series.symbolstringExchange-native raw symbol for per-symbol subscriptions. Grouped subscriptions use the coin identifier, such as BTC.
series.coinstringCoin identifier for the stream
series.blockSizedoublePrice bucket size, determined automatically by the server
volumeProfileAggregation.profiledouble[]Flat array of [price, buyVolume, sellVolume, ...] triplets, sorted ascending by price
volumeProfileAggregation.timestampTimestampEnd of the aggregation interval