Skip to content

Futures · Bars, trades and book

Futures trades

Retained trade prints of a futures contract.
On this page

Every retained print of a contract in time order with price, size and aggressor side (buy, sell or unknown when the side could not be determined). One request reads at most 24 hours; the window defaults to the last hour. History is retained for the current and the previous trading session only: a start_time before the retention floor is refused with 422 data_unavailable naming the floor. Rows are ordered by time and then by id, and paging with cursor_id neither repeats nor skips a print, however many share a timestamp. Filters apply before paging: a page can hold fewer than limit rows while more remain (pagination.has_more).

Example request

curl -sS --get "https://api.ordermap.si/v1/futures/trades" \
  -H "Authorization: Bearer $ORDERMAP_API_KEY" \
  --data-urlencode symbol=ES

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

Parameters

8 parameters, none required.

ParameterType and limitsDescription
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.
start_timequeryoptionalintegerunix-msmin 946684800000max 4102444800000Start of the window (inclusive).
end_timequeryoptionalintegerunix-msmin 946684800000max 4102444800000End of the window (exclusive).
min_sizequeryoptionalintegermin 1max 1000000Only prints of at least this many contracts.
sidequeryoptionalarray<string>comma-separated in one parameterbuysellunknown1 to 3 itemsOnly prints with these aggressor sides.
limitqueryoptionalintegerdefault 1000min 1max 5000Maximum rows to return.
cursor_idqueryoptionalstringat most 1024 charactersOpaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.

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
    • contractstringrequiredDated contract.
    • idstringrequiredStable identifier of the print; unique within a contract.
    • pricenumberrequiredPrice.
    • price_ticksstringrequiredPrice as an integer count of ticks, as a string (it can exceed 2^53 for fine-tick products).
    • sidestringrequiredAggressor side; unknown when it could not be determined.buysellunknown
    • sizeintegerrequiredContracts.
    • timestampintegerunix-msrequiredTime of the print. Unix epoch milliseconds (UTC).
  • metaobjectrequiredMeta object
  • paginationobjectrequiredPagination object

Example response

{
  "data": [
    {
      "contract": "ESZ6",
      "id": "9f2c1d0e8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d",
      "price": 6021.5,
      "price_ticks": "24086",
      "side": "buy",
      "size": 3,
      "timestamp": 1792159200123
    }
  ],
  "meta": {
    "as_of": 1760659200123,
    "coverage": {
      "complete": true
    },
    "delay_ms": 0,
    "delayed": false,
    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
    "source": "cme"
  },
  "pagination": {
    "count": 1,
    "has_more": false,
    "limit": 1000,
    "next_cursor_id": null,
    "next_url": null
  }
}

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