Skip to content

Options · Exposure, levels, volatility and OI

Options open interest history

Open interest per stored date for a selection of contracts.
GET/v1/options/open-interest/historyoptionsOpenInterestHistory
On this page

The call, put and total open interest of the selected contracts on each date the platform stored, oldest first (up to about 30 dates). Select an expiration or a strike range to follow a part of the chain. Dates with no stored figure are returned with null values.

Example request

curl -sS --get "https://api.ordermap.si/v1/options/open-interest/history" \
  -H "Authorization: Bearer $ORDERMAP_API_KEY" \
  --data-urlencode underlying_symbol=SPXW

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

Parameters

10 parameters, 1 required.

ParameterType and limitsDescription
underlying_symbolqueryrequiredstringat most 8 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...
contract_typequeryoptionalstringcallputCalls or puts. Omit for both.
date_of_expiryqueryoptionalstringdateOnly this expiration.
expirationsqueryoptionalarray<string>comma-separated in one parameter1 to 64 itemseach at most 128 characterspattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$Only these expirations, comma separated (YYYY-MM-DD), at most 64.
min_strikequeryoptionalnumber> 0max 1000000Lowest strike in dollars.
max_strikequeryoptionalnumber> 0max 1000000Highest strike in dollars.
strikes_aroundqueryoptionalintegermin 1max 500This many listed strikes either side of the strike nearest the underlying price.
strike_percentqueryoptionalnumbermin 0.1max 100Strikes within this percent of the underlying price.
start_timequeryoptionalintegerunix-msmin 946684800000max 4102444800000Start of the series. Default: 30 days before end_time (within your plan's history window).
end_timequeryoptionalintegerunix-msmin 946684800000max 4102444800000End of the series. Default: now.

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>required4 fields inside
    • call_open_interestinteger | nullrequiredCall open interest.
    • datestringdaterequiredOpen interest date.
    • put_open_interestinteger | nullrequiredPut open interest.
    • total_open_interestinteger | nullrequiredCalls plus puts.
  • metaobjectrequiredMeta object

Example response

{
  "data": [
    {
      "call_open_interest": 3120000,
      "date": "2026-10-15",
      "put_open_interest": 3680000,
      "total_open_interest": 6800000
    }
  ],
  "meta": {
    "as_of": 1760659200123,
    "coverage": {
      "complete": true
    },
    "delay_ms": 0,
    "delayed": false,
    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
    "source": "opra"
  }
}

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