VOLUME_PROFILE_AGG | Weight: 2x | Max points: 20,000
Volume distributed across price levels for a given interval. Shows where the most trading activity occurred.
The server determines the price bucket size automatically from market metadata. You do not need to pass blockSize in the request.
Response fields
| Field | Type | Description |
|---|---|---|
profile | double[] | Alternating [price, buyVolume, sellVolume] triplets |
timestamp | Timestamp | Interval start |
profile array contains repeating price / buy volume / sell volume triplets:
[price1, buyVolume1, sellVolume1, price2, buyVolume2, sellVolume2, ...]
Each triplet already includes the bucket’s price level, so you can read the profile directly from the response without sending blockSize.
Capabilities
| Feature | Supported | Details |
|---|---|---|
| USD denomination | Yes | transform.normalize.quote=USD converts volume to USD |
| Multi-exchange aggregation | Yes | transform.groupBy.type=GROUP_BY_TYPE_SUM with coin param |
Examples
Single exchange
Fetches 1 hour of volume profile data for BTCUSDT on Binance Futures. The server chooses the price bucket size automatically.Aggregated across exchanges (USD)
Combines volume profile data from Binance Futures and Bybit for BTC, with volume converted to USD. Gives a cross-exchange view of where trading activity concentrated.Response
How to read profile
profile is a flat array of repeating triplets:
[price1, buyVolume1, sellVolume1, price2, buyVolume2, sellVolume2, ...]
So:
profile[0]is the first price levelprofile[1]is the buy volume at that priceprofile[2]is the sell volume at that priceprofile[3]is the next price levelprofile[4]is the buy volume at that next priceprofile[5]is the sell volume at that next price