Options · Single contract
Options contract snapshot
/v1/options/contract/snapshotoptionsContractSnapshotThe current state of one contract in a single call: the best bid and offer, the trading day so far (open, high, low, last, volume), the published open interest and the Greeks with implied volatility. Greeks are computed during the regular session; stamped outside it they are null and meta.coverage.note says so. A component the service cannot provide is null and listed in meta.coverage.missing. Outside market hours the values are the last ones of the previous session. 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/contract/snapshot" \
-H "Authorization: Bearer $ORDERMAP_API_KEY" \
--data-urlencode underlying_symbol=SPXW \
--data-urlencode contract_type=call \
--data-urlencode strike=5800 \
--data-urlencode date_of_expiry=2026-10-16const params = new URLSearchParams({
underlying_symbol: "SPXW",
contract_type: "call",
strike: "5800",
date_of_expiry: "2026-10-16",
});
const res = await fetch(`https://api.ordermap.si/v1/options/contract/snapshot?${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
4 parameters, 4 required.
| Parameter | Type and limits | Description |
|---|---|---|
underlying_queryrequired | stringat most 8 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$ | Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ... |
contract_queryrequired | stringcallput | call or put. |
strikequeryrequired | number> 0max 99999.999 | Strike price in dollars with at most three decimals, for example 5800 or 5812.5. |
date_queryrequired | stringdate | Expiration date of the contract, YYYY-MM-DD. |
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
dataobjectrequiredCurrent state of one contract.49 fields insidecontract_typestringrequiredCall or put.callputdate_of_expirystringdaterequiredExpiration date.dayobject | nullrequiredThe trading day so far; prices are null before the first trade.7 fields insideclosenumber | nullrequiredLatest trade price.highnumber | nullrequiredHighest trade price of the day.lownumber | nullrequiredLowest trade price of the day.opennumber | nullrequiredFirst trade price of the day.timestampintegerunix-msrequiredTime the statistics were taken. Unix epoch milliseconds (UTC).trade_countintegerrequiredTrades today.volumeintegerrequiredContracts traded today.
greeksobject | nullrequiredGreeks and implied volatility.24 fields insidecharmnumber | nullrequiredChange in delta per day (delta decay). Null when not part of the requested order or outside the regular session.colornumber | nullrequiredChange in gamma per day. Null when not part of the requested order or outside the regular session.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.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.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.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.thetanumber | nullrequiredTime decay: change in the option price per calendar day. Null when not part of the requested order or outside the regular session.timestampintegerunix-msrequiredTime of the quote the Greeks were computed from. Unix epoch milliseconds (UTC).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_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.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.
open_interestobject | nullrequiredOpen interest published at the start of the trading day.2 fields insideopen_interestintegerrequiredOpen contracts.timestampintegerunix-msrequiredTime the open interest was published. Unix epoch milliseconds (UTC).
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.quoteobject | nullrequiredLatest national best bid and offer.7 fields insideasknumber | nullrequiredBest offer price.ask_exchangeinteger | nullrequiredExchange code of the best offer.ask_sizeinteger | nullrequiredContracts offered.bidnumber | nullrequiredBest bid price.bid_exchangeinteger | nullrequiredExchange code of the best bid.bid_sizeinteger | nullrequiredContracts bid.timestampintegerunix-msrequiredTime of the quote. Unix epoch milliseconds (UTC).
strikenumberrequiredStrike price in dollars.underlying_symbolstringrequiredOption root of the contract.
metaobjectrequiredMeta object
Example response
{
"data": {
"option_symbol": "SPXW 261016C05800000",
"underlying_symbol": "SPXW",
"contract_type": "call",
"strike": 5800,
"date_of_expiry": "2026-10-16",
"quote": {
"timestamp": 1792159198500,
"bid": 12.3,
"bid_size": 10,
"bid_exchange": 5,
"ask": 12.6,
"ask_size": 12,
"ask_exchange": 5
},
"day": {
"timestamp": 1792159140000,
"open": 11,
"high": 13,
"low": 10.5,
"close": 12.4,
"volume": 800,
"trade_count": 60
},
"open_interest": {
"timestamp": 1792146600000,
"open_interest": 4321
},
"greeks": {
"timestamp": 1792159198500,
"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"
}
}Values are illustrative. Missing values are null, never 0.