Skip to main content
Type: 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

FieldTypeDescription
profiledouble[]Alternating [price, buyVolume, sellVolume] triplets
timestampTimestampInterval start
The 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

FeatureSupportedDetails
USD denominationYestransform.normalize.quote=USD converts volume to USD
Multi-exchange aggregationYestransform.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.
curl "https://api.kiyotaka.ai/v1/points?type=VOLUME_PROFILE_AGG&exchange=BINANCE_FUTURES&rawSymbol=BTCUSDT&interval=HOUR&from=1774800000&period=3600" \
  -H "X-Kiyotaka-Key: YOUR_API_KEY"

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.
curl "https://api.kiyotaka.ai/v1/points?type=VOLUME_PROFILE_AGG&exchange=BINANCE_FUTURES&exchange=BYBIT&coin=BTC&interval=HOUR&from=1774800000&period=3600&transform.groupBy.type=GROUP_BY_TYPE_SUM&transform.normalize.quote=USD" \
  -H "X-Kiyotaka-Key: YOUR_API_KEY"

Response

{
  "series": [
    {
      "id": {
        "type": "VOLUME_PROFILE_AGG",
        "exchange": "BINANCE_FUTURES",
        "rawSymbol": "BTCUSDT",
        "normalizedSymbol": "BTC-USDT",
        "category": "PERPETUAL",
        "interval": "HOUR",
        "coin": "BTC"
      },
      "points": [
        {
          "Point": {
            "profile": [66108, 0, 5.466999999999996, 66114, 6.239000000000001, 25.31399999999998, 66120, 7.307999999999996, 20.503000000000004, ...],
            "timestamp": { "s": 1774803600 }
          }
        }
      ]
    }
  ]
}

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 level
  • profile[1] is the buy volume at that price
  • profile[2] is the sell volume at that price
  • profile[3] is the next price level
  • profile[4] is the buy volume at that next price
  • profile[5] is the sell volume at that next price