Skip to content

Futures · Bars, trades and book

Futures liquidity heatmap

Historical displayed liquidity by price and time (up to 5 minutes).
GET/v1/futures/liquidity-heatmapfuturesLiquidityHeatmap
On this page

The displayed size resting at each price over time, reconstructed from retained depth. One request covers at most 5 minutes inside the retained history (the current and previous trading session) and a price range you choose (price_min to price_max); columns sets the time resolution. A row is the peak displayed size observed at a price during its span; when a span is aggregated its start and end are the bin edges. coverage.unavailable_ranges lists intervals with no depth, and coverage.complete is false when the read could not cover the window.

Example request

curl -sS --get "https://api.ordermap.si/v1/futures/liquidity-heatmap" \
  -H "Authorization: Bearer $ORDERMAP_API_KEY" \
  --data-urlencode start_time=1792157400000 \
  --data-urlencode end_time=1792157460000 \
  --data-urlencode price_min=5790 \
  --data-urlencode price_max=5810 \
  --data-urlencode symbol=ES

Set ORDERMAP_API_KEY to your key. Replace the dates with a recent trading date.

Parameters

8 parameters, 4 required.

ParameterType and limitsDescription
start_timequeryrequiredintegerunix-msmin 946684800000max 4102444800000Start of the slice (inclusive).
end_timequeryrequiredintegerunix-msmin 946684800000max 4102444800000End of the slice (exclusive); at most 5 minutes after start_time.
price_minqueryrequirednumber> 0max 100000000Lowest price to return.
price_maxqueryrequirednumber> 0max 100000000Highest price to return.
symbolqueryoptionalstringat most 3 characterspattern ^[A-Za-z0-9]{1,3}$Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.
contractqueryoptionalstringat most 6 characterspattern ^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.
columnsqueryoptionalintegerdefault 256min 64max 2048Time resolution: the number of time columns the slice is divided into.
row_ticksqueryoptionalintegermin 1max 65536Group prices into rows of this many ticks (a power of two).

Response

StatusMeaningBody
200Successful response.Schema below
400Invalid, unknown or repeated parameters, or an invalid cursor.Error object
401Missing or invalid API key.Error object
403The plan, dataset release or account state does not allow this request.Error object
422The request is valid but no data exists for it.Error object
429Rate limit, burst limit or cooldown; wait Retry-After seconds.Retry-AfterError object
500Internal error.Error object
503Data temporarily unavailable; retry after Retry-After seconds.Retry-AfterError object
504The request timed out.Error object

Authenticated responses carry the X-RateLimit-* headers (see rate limits); 429 and 503 add Retry-After.

200 response body

  • dataarray<object>required7 fields inside
    • aggregatedbooleanrequiredThe span is a bin of several observations.
    • ask_sizeintegerrequiredPeak displayed ask size.
    • bid_sizeintegerrequiredPeak displayed bid size.
    • contractstringrequiredDated contract.
    • end_timeintegerunix-msrequiredEnd of the span. Unix epoch milliseconds (UTC).
    • pricenumberrequiredPrice (the lowest price of the row when grouped).
    • start_timeintegerunix-msrequiredStart of the span. Unix epoch milliseconds (UTC).
  • metaobjectrequiredMeta object

Example response

{
  "data": [
    {
      "aggregated": false,
      "ask_size": 0,
      "bid_size": 118,
      "contract": "ESZ6",
      "end_time": 1792159201000,
      "price": 6021.25,
      "start_time": 1792159200000
    }
  ],
  "meta": {
    "as_of": 1760659200123,
    "coverage": {
      "complete": true
    },
    "delay_ms": 0,
    "delayed": false,
    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
    "source": "cme"
  }
}

Values are illustrative. Missing values are null, never 0.