Skip to content

Options · Chains

Options chain

The option chain: quotes, day statistics, open interest and Greeks of every contract.
On this page

The current state of every contract of an underlying: best bid and offer, the trading day so far (open, high, low, last, volume), open interest, Greeks and implied volatility. Greeks are computed during the regular session; a component the service cannot provide is null. Rows are ordered by date_of_expiry, strike, contract_type (call before put) and paginated with cursor_id; a page reads one expiration at a time and may hold fewer rows than limit. When no date_of_expiry is given the chain covers the expirations within max_dte days (default 30). Reads of an underlying that trades overnight (SPX, SPXW, XSP, VIX, VIXW, RUT, RUTW) outside weekday 09:30-16:15 ET, the curb session included, require the overnight entitlement; during the regular session, parts of a contract whose latest quote or trade is from the overnight session are null for plans without it (listed in meta.coverage.missing and counted in meta.coverage.withheld).

Example request

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

8 parameters, 1 required.

ParameterType and limitsDescription
underlying_symbolqueryrequiredstringat most 8 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$Underlying: an option root (SPXW, QQQ, NDXP ...) or an index family: SPX covers the SPX and SPXW roots, NDX the NDX and NDXP roots, RUT the RUT and RUTW roots. Rows name the root of each contract.
date_of_expiryqueryoptionalstringdateOnly this expiration, YYYY-MM-DD.
contract_typequeryoptionalstringcallputOnly calls or only puts.
min_strikequeryoptionalnumber> 0max 99999.999Lowest strike to return, in dollars.
max_strikequeryoptionalnumber> 0max 99999.999Highest strike to return, in dollars.
max_dtequeryoptionalintegermin 0max 1000Without date_of_expiry: include expirations up to this many days away (default 30).
limitqueryoptionalintegerdefault 1000min 1max 2500Maximum 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>required41 fields inside
    • asknumber | nullrequiredBest offer price.
    • ask_sizeinteger | nullrequiredContracts offered.
    • bidnumber | nullrequiredBest bid price.
    • bid_sizeinteger | nullrequiredContracts bid.
    • charmnumber | nullrequiredChange in delta per day (delta decay). Null when not part of the requested order or outside the regular session.
    • closenumber | nullrequiredLatest trade price.
    • colornumber | nullrequiredChange in gamma per day. Null when not part of the requested order or outside the regular session.
    • contract_typestringrequiredCall or put.callput
    • d1number | nullrequiredThe d1 term of the pricing model. Null when not part of the requested order or outside the regular session.
    • d2number | nullrequiredThe d2 term of the pricing model. Null when not part of the requested order or outside the regular session.
    • date_of_expirystringdaterequiredExpiration date.
    • day_timestampinteger | nullunix-msrequiredTime the day statistics were taken. Unix epoch milliseconds (UTC).
    • deltanumber | nullrequiredChange in the option price for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.
    • dual_deltanumber | nullrequiredChange in the option price for a unit move in the strike. Null when not part of the requested order or outside the regular session.
    • dual_gammanumber | nullrequiredSecond derivative of the option price with respect to the strike. Null when not part of the requested order or outside the regular session.
    • epsilonnumber | nullrequiredChange in the option price for a one point move in the dividend yield. Null when not part of the requested order or outside the regular session.
    • gammanumber | nullrequiredChange in delta for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.
    • highnumber | nullrequiredHighest trade price of the day.
    • implied_volatilitynumber | nullrequiredImplied volatility as a decimal (0.18 = 18%).
    • lambdanumber | nullrequiredLeverage: percentage change in the option price per percentage change in the underlying. Null when not part of the requested order or outside the regular session.
    • lownumber | nullrequiredLowest trade price of the day.
    • opennumber | nullrequiredFirst trade price of the day.
    • open_interestinteger | nullrequiredOpen interest published at the start of the day.
    • option_symbolstringrequiredOCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.
    • rhonumber | nullrequiredChange in the option price for a one point move in the interest rate. Null when not part of the requested order or outside the regular session.
    • speednumber | nullrequiredChange in gamma for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.
    • strikenumberrequiredStrike price in dollars.
    • thetanumber | nullrequiredTime decay: change in the option price per calendar day. Null when not part of the requested order or outside the regular session.
    • timestampinteger | nullunix-msrequiredTime of the quote. Unix epoch milliseconds (UTC).
    • trade_countinteger | nullrequiredTrades today.
    • ultimanumber | nullrequiredChange in vomma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.
    • underlying_pricenumber | nullrequiredUnderlying price used by the model.
    • underlying_symbolstringrequiredOption root of the contract.
    • underlying_timestampinteger | nullunix-msrequiredTime of the underlying price used. Unix epoch milliseconds (UTC).
    • vannanumber | nullrequiredChange in delta for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.
    • veganumber | nullrequiredChange in the option price for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.
    • veranumber | nullrequiredChange in rho for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.
    • vetanumber | nullrequiredChange in vega per day. Null when not part of the requested order or outside the regular session.
    • volumeinteger | nullrequiredContracts traded today.
    • vommanumber | nullrequiredChange in vega for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.
    • zommanumber | nullrequiredChange in gamma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.
  • metaobjectrequiredMeta object
  • paginationobjectrequiredPagination object

Example response

{
  "data": [
    {
      "option_symbol": "SPXW  261016C05800000",
      "underlying_symbol": "SPXW",
      "date_of_expiry": "2026-10-16",
      "strike": 5800,
      "contract_type": "call",
      "timestamp": 1792159198500,
      "bid": 12.3,
      "bid_size": 10,
      "ask": 12.6,
      "ask_size": 12,
      "open": 11,
      "high": 13,
      "low": 10.5,
      "close": 12.4,
      "volume": 800,
      "trade_count": 60,
      "day_timestamp": 1792159140000,
      "open_interest": 4321,
      "delta": 0.5123,
      "theta": -3.41,
      "vega": 2.87,
      "rho": 0.91,
      "epsilon": -0.77,
      "lambda": 48.2,
      "gamma": 0.0042,
      "vanna": -0.012,
      "charm": 0.0031,
      "vomma": 0.11,
      "veta": 0.04,
      "vera": 0.02,
      "speed": -0.00001,
      "zomma": -0.0002,
      "color": -0.0001,
      "ultima": -0.03,
      "d1": 0.03,
      "d2": 0.01,
      "dual_delta": -0.48,
      "dual_gamma": 0.0009,
      "implied_volatility": 0.182,
      "underlying_timestamp": 1792159198000,
      "underlying_price": 5801.2
    }
  ],
  "meta": {
    "as_of": 1760659200123,
    "coverage": {
      "complete": true
    },
    "delay_ms": 0,
    "delayed": false,
    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
    "source": "opra"
  },
  "pagination": {
    "count": 1,
    "has_more": false,
    "limit": 1000,
    "next_cursor_id": null,
    "next_url": null
  }
}

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