Futures · Bars, trades and book
Futures liquidity heatmap
/v1/futures/liquidity-heatmapfuturesLiquidityHeatmapThe 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=ESconst params = new URLSearchParams({
start_time: "1792157400000",
end_time: "1792157460000",
price_min: "5790",
price_max: "5810",
symbol: "ES",
});
const res = await fetch(`https://api.ordermap.si/v1/futures/liquidity-heatmap?${params}`, {
headers: { Authorization: `Bearer ${process.env.ORDERMAP_API_KEY}` },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const { data, meta } = await res.json();
console.log(data, meta.coverage);Set ORDERMAP_API_KEY to your key. Replace the dates with a recent trading date.
Parameters
8 parameters, 4 required.
| Parameter | Type and limits | Description |
|---|---|---|
start_queryrequired | integerunix-msmin 946684800000max 4102444800000 | Start of the slice (inclusive). |
end_queryrequired | integerunix-msmin 946684800000max 4102444800000 | End of the slice (exclusive); at most 5 minutes after start_time. |
price_queryrequired | number> 0max 100000000 | Lowest price to return. |
price_queryrequired | number> 0max 100000000 | Highest price to return. |
symbolqueryoptional | stringat 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. |
contractqueryoptional | stringat 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. |
columnsqueryoptional | integerdefault 256min 64max 2048 | Time resolution: the number of time columns the slice is divided into. |
row_queryoptional | integermin 1max 65536 | Group prices into rows of this many ticks (a power of two). |
Response
| Status | Meaning | Body |
|---|---|---|
200 | Successful response. | Schema below |
400 | Invalid, unknown or repeated parameters, or an invalid cursor. | Error object |
401 | Missing or invalid API key. | Error object |
403 | The plan, dataset release or account state does not allow this request. | Error object |
422 | The request is valid but no data exists for it. | Error object |
429 | Rate limit, burst limit or cooldown; wait Retry-After seconds.Retry-After | Error object |
500 | Internal error. | Error object |
503 | Data temporarily unavailable; retry after Retry-After seconds.Retry-After | Error object |
504 | The 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 insideaggregatedbooleanrequiredThe 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.