Skip to content

Options · Exposure, levels, volatility and OI

Options open interest

Open interest by strike or by expiration.
On this page

The open interest of calls and puts at each strike or each expiration, the totals and the put/call ratio. Open interest is the previous close's figure, published each morning, so it does not move during the session. Narrow the rows with date_of_expiry, expirations, expiry_mode or the DTE bounds and with the strike window.

Example request

curl -sS --get "https://api.ordermap.si/v1/options/open-interest" \
  -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

12 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 ...
datequeryoptionalstringdateTrading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.
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. Unlisted dates are ignored.
expiry_modequeryoptionalstring0dte1dteweeklymonthlylte30lte90Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).
min_dtequeryoptionalintegermin 0max 3650Minimum days to expiration (0 = expires on the trading date).
max_dtequeryoptionalintegermin 0max 3650Maximum days to expiration.
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.
group_byqueryoptionalstringstrikeexpirationdefault strikeRows per strike or per expiration.

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

  • dataobjectrequiredOpen interest by strike or expiration.16 fields inside
    • group_bystringrequiredRow grouping.strikeexpiration
    • open_interest_datestringdaterequiredDate of the open interest.
    • rootsarray<string>requiredOption roots included.
    • rowsarray<object>requiredRows, ascending by strike or expiration.5 fields inside
      • call_open_interestintegerrequiredCall open interest.
      • date_of_expirystringdateExpiration; present when grouped by expiration.
      • put_open_interestintegerrequiredPut open interest.
      • strikenumberStrike; present when grouped by strike.
      • total_open_interestintegerrequiredCalls plus puts.
    • totalsobjectrequiredTotals over the rows.3 fields inside
      • callintegerrequiredCall open interest.
      • putintegerrequiredPut open interest.
      • put_call_rationumber | nullrequiredPut over call open interest.
    • trading_datestringdaterequiredTrading date.
    • underlying_pricenumber | nullrequiredUnderlying price.
    • underlying_symbolstringrequiredThe requested underlying.
  • metaobjectrequiredMeta object

Example response

{
  "data": {
    "group_by": "strike",
    "open_interest_date": "2026-10-15",
    "roots": [
      "SPX",
      "SPXW"
    ],
    "rows": [
      {
        "call_open_interest": 22440,
        "put_open_interest": 23940,
        "strike": 6000,
        "total_open_interest": 46380
      }
    ],
    "totals": {
      "call": 3120000,
      "put": 3680000,
      "put_call_ratio": 1.1795
    },
    "trading_date": "2026-10-16",
    "underlying_price": 6021.4,
    "underlying_symbol": "SPX"
  },
  "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.