Options · Exposure, levels, volatility and OI
Options screener
/v1/options/screeneroptionsScreenerFilters, sorts and pages the tracked contracts (grain=contract) or underlyings (grain=ticker) by their flow of the session, open interest, implied volatility, greeks, modeled dealer exposure and, for underlyings, volatility rank and gamma regime. Presets: unusual_activity, large_premium, sweeps, golden_sweeps, blocks, vol_gt_oi, zero_dte, zero_dte_lottos, high_iv, near_spot_gamma, bullish_flow, bearish_flow, oi_gainers, leaps_accumulation, unusual_short_otm, repeated_hits, call_sells, put_sells, overnight_spx, negative_gamma, near_walls, high_iv_rank, cheap_vol, iv_movers, backwardation. Contract presets are screens such as unusual_activity, large_premium, sweeps and 0dte; the last six are underlying screens. The screened universe is the underlyings the platform tabulates, listed in meta.coverage. Pages follow a snapshot by row offset (up to 10,000 rows); if the data was refreshed between pages the response carries the warning snapshot_changed. Gamma exposures are modeled estimates. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.
Example request
curl -sS --get "https://api.ordermap.si/v1/options/screener" \
-H "Authorization: Bearer $ORDERMAP_API_KEY" \
--data-urlencode underlying_symbols=SPXW,SPYconst params = new URLSearchParams({
underlying_symbols: "SPXW,SPY",
});
const res = await fetch(`https://api.ordermap.si/v1/options/screener?${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);
// Paginated: repeat with cursor_id set to pagination.next_cursor_id until it is null.Set ORDERMAP_API_KEY to your key. Replace the dates with a recent trading date.
Parameters
93 parameters, none required.
| Parameter | Type and limits | Description |
|---|---|---|
grainqueryoptional | stringcontracttickerdefault contract | Rows per contract or per underlying. |
presetqueryoptional | stringunusual_activitylarge_premiumsweepsgolden_sweepsblocksvol_gt_oizero_dtezero_dte_lottoshigh_ivnear_spot_gammabullish_flowbearish_flowoi_gainersleaps_accumulationunusual_short_otmrepeated_hitscall_sellsput_sellsovernight_spxnegative_gammanear_wallshigh_iv_rankcheap_voliv_moversbackwardation | A saved screen of the chosen grain; explicit filters override its criteria. See the description for the list. |
underlying_queryoptional | array<string>comma-separated in one parameter1 to 50 itemseach at most 128 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$ | Underlyings to screen, comma separated, at most 50. Default: every underlying the platform tabulates. |
datequeryoptional | stringdate | Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. |
sessionqueryoptional | stringrthgthalldefault rth | Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which. |
sortqueryoptional | stringat most 52 characterspattern ^(abs_)?[a-z0-9_]{1,48}$ | Row field to sort by, or abs_<field> for the absolute value. Any numeric field of the grain's rows; default per preset, else premium (contracts) or option_volume (underlyings). |
orderqueryoptional | stringdescascdefault desc | Descending (largest first) or ascending. |
contract_queryoptional | stringcallput | Calls or puts. Omit for both. |
moneynessqueryoptional | array<string>comma-separated in one parameteritmatmotm1 to 3 items | Contract grain: moneyness classes, comma separated: itm, atm, otm. |
flagsqueryoptional | array<string>comma-separated in one parameterunusualgoldenvol_gt_oisize_gt_oisweepblockrepeated1 to 7 items | Contract grain: row flags that must all be set: unusual, golden, vol_gt_oi, size_gt_oi, sweep, block, repeated. |
regimequeryoptional | array<string>comma-separated in one parameterpositivenegativeneutral1 to 3 items | Ticker grain: gamma regimes to include: positive, negative, neutral. |
min_queryoptional | integermin 0max 1000000000 | Minimum contracts traded today. |
max_queryoptional | integermin 0max 1000000000 | Maximum contracts traded today. |
min_queryoptional | integermin 0max 1000000000 | Minimum open interest. |
max_queryoptional | integermin 0max 1000000000 | Maximum open interest. |
min_queryoptional | numbermin 0max 1000000000 | Minimum volume over open interest. |
min_queryoptional | numbermin 0max 1000000000000 | Minimum premium traded today in US dollars. |
max_queryoptional | numbermin 0max 1000000000000 | Maximum premium traded today in US dollars. |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Minimum net premium (ask side minus bid side) in US dollars. |
min_queryoptional | integermin 0max 3650 | Minimum days to expiration. |
max_queryoptional | integermin 0max 3650 | Maximum days to expiration. |
min_queryoptional | numbermin -100max 1000 | Minimum percent out of the money. |
max_queryoptional | numbermin -100max 1000 | Maximum percent out of the money. |
min_queryoptional | numbermin 0max 5 | Minimum implied volatility as a decimal. |
max_queryoptional | numbermin 0max 5 | Maximum implied volatility as a decimal. |
min_queryoptional | numbermin 0max 1 | Minimum absolute delta. |
max_queryoptional | numbermin 0max 1 | Maximum absolute delta. |
min_queryoptional | numbermin 0max 100 | Minimum share of volume at the ask side, percent. |
min_queryoptional | numbermin 0max 100 | Minimum share of volume at the bid side, percent. |
max_queryoptional | numbermin 0max 1000000 | Maximum bid/ask spread in percent of the mid. |
max_queryoptional | numbermin 0max 100 | Maximum share of volume in multi-leg prints, percent. |
min_queryoptional | numbermin 0max 1000000000000 | Minimum sweep premium in US dollars (per contract, or per underlying for the ticker grain). |
min_queryoptional | numbermin 0max 1000000000000 | Minimum premium of the largest print in US dollars. |
min_queryoptional | integermin -1000000000max 1000000000 | Minimum open interest change in contracts. |
min_queryoptional | numbermin -1000000000max 1000000000 | Minimum open interest change in percent. |
min_queryoptional | integermin 0max 1000000 | Minimum bursts of five or more same-side prints within 100 ms. |
min_queryoptional | numbermin 0max 1000000000 | Minimum last price. |
max_queryoptional | numbermin 0max 1000000000 | Maximum mid price. |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: underlying price. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: underlying price. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: change in percent. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: change in percent. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: option contracts traded today. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: option contracts traded today. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: call contracts. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: call contracts. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: put contracts. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: put contracts. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: put over call volume. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: put over call volume. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: put over call open interest. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: put over call open interest. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: premium traded in US dollars. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: premium traded in US dollars. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: net call premium in US dollars. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: net call premium in US dollars. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: net put premium in US dollars. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: net put premium in US dollars. (maximum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: sweep premium in US dollars. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 30-day at-the-money implied volatility. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 30-day at-the-money implied volatility. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: one-year implied volatility rank, 0 to 1. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: one-year implied volatility rank, 0 to 1. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: one-year implied volatility percentile, 0 to 1. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: one-year implied volatility percentile, 0 to 1. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: change of the 30-day volatility versus the previous close. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: change of the 30-day volatility versus the previous close. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 20-day realized volatility. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 20-day realized volatility. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 30-day implied minus 20-day realized volatility. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 30-day implied minus 20-day realized volatility. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 7-day minus 30-day implied volatility. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 7-day minus 30-day implied volatility. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 25-delta risk reversal at 30 days. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: 25-delta risk reversal at 30 days. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: net modeled dealer gamma exposure. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: net modeled dealer gamma exposure. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: distance from the underlying price to the gamma flip, percent. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: distance from the underlying price to the gamma flip, percent. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: distance to the call wall, percent. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: distance to the call wall, percent. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: distance to the put wall, percent. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: distance to the put wall, percent. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: positive call gamma over the absolute negative put gamma. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: positive call gamma over the absolute negative put gamma. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: share of gamma in the nearest expiration. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: share of gamma in the nearest expiration. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: distance to max pain, percent. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: distance to max pain, percent. (maximum). |
min_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: one-day expected move, percent. (minimum). |
max_queryoptional | numbermin -1000000000000max 1000000000000 | Ticker grain: one-day expected move, percent. (maximum). |
limitqueryoptional | integerdefault 100min 1max 500 | Maximum rows to return. |
cursor_queryoptional | stringat most 1024 characters | Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page. |
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
dataarray<object>required72 fields insideasknumber | nullAsk.ask_percentnumber | nullShare of volume at the ask side, percent.average_sizenumber | nullAverage print size in contracts.bidnumber | nullBid.bid_percentnumber | nullShare of volume at the bid side, percent.block_countnumber | nullBlocks.block_premiumnumber | nullBlock premium in US dollars.call_volumenumber | nullCall contracts.call_wall_distance_percentnumber | nullDistance to the call wall, percent.change_percentnumber | nullChange of the last price from the previous close, percent.contract_typestring | nullcall or put.cross_percentnumber | nullShare of volume in crosses, percent.date_of_expirystring | nullExpiration date.days_to_expirynumber | nullCalendar days to expiration.deltanumber | nullDelta.delta_exposurenumber | nullModeled dealer delta exposure of the open interest.estimated_opening_contractsnumber | nullEstimated contracts opened today.expected_move_1d_percentnumber | nullOne-day expected move, percent.flagsarray<string> | nullRow flags: unusual, golden, vol_gt_oi, size_gt_oi, sweep, block, repeated.unusualgoldenvol_gt_oisize_gt_oisweepblockrepeatedfloor_percentnumber | nullShare of volume in floor prints, percent.gammanumber | nullGamma.gamma_exposurenumber | nullModeled dealer gamma exposure of the open interest.gamma_flip_distance_percentnumber | nullDistance from the underlying price to the gamma flip, percent.gamma_tiltnumber | nullPositive call gamma over the absolute negative put gamma.golden_sweep_countnumber | nullGolden sweeps.implied_volatilitynumber | nullImplied volatility as a decimal.implied_volatility_vs_atmnumber | nullImplied volatility minus the at-the-money volatility.iso_percentnumber | nullShare of volume in intermarket sweep orders, percent.iv30number | null30-day at-the-money implied volatility.iv30_changenumber | nullChange of the 30-day volatility versus the previous close.iv_percentilenumber | nullOne-year implied volatility percentile, 0 to 1.iv_ranknumber | nullOne-year implied volatility rank, 0 to 1.largest_print_premiumnumber | nullPremium of the largest print in US dollars.last_pricenumber | nullLast price.max_pain_distance_percentnumber | nullDistance to max pain, percent.midnumber | nullMid price.mid_percentnumber | nullShare of volume at the mid, percent.moneynessstring | nullitm, atm or otm.multileg_percentnumber | nullShare of volume in multi-leg prints, percent.net_call_premiumnumber | nullNet call premium in US dollars.net_gamma_exposurenumber | nullNet modeled dealer gamma exposure.net_premiumnumber | nullAsk-side minus bid-side premium in US dollars.net_put_premiumnumber | nullNet put premium in US dollars.next_expiration_sharenumber | nullShare of gamma in the nearest expiration.open_interestnumber | nullOpen interest.open_interest_changenumber | nullOpen interest change versus the previous date.open_interest_change_percentnumber | nullThat change in percent.option_volumenumber | nullOption contracts traded today.otm_percentnumber | nullPercent out of the money (negative when in the money).premiumnumber | nullPremium traded today in US dollars.put_call_open_interest_rationumber | nullPut over call open interest.put_call_volume_rationumber | nullPut over call volume.put_volumenumber | nullPut contracts.put_wall_distance_percentnumber | nullDistance to the put wall, percent.realized_volatility_20dnumber | null20-day realized volatility.regimestring | nullGamma regime: positive, negative or neutral.repeated_hit_countnumber | nullBursts of five or more same-side prints within 100 ms.risk_reversal_25d_30dnumber | null25-delta risk reversal at 30 days.spread_percentnumber | nullBid/ask spread in percent of the mid.strikenumber | nullStrike in dollars.sweep_countnumber | nullInferred sweeps.sweep_premiumnumber | nullSweep premium in US dollars.term_slope_7_30number | null7-day minus 30-day implied volatility.thetanumber | nullTheta per day.total_premiumnumber | nullPremium traded in US dollars.tradesnumber | nullPrints today.underlying_pricenumber | nullUnderlying price.underlying_symbolstring | nullOption root of the contract.veganumber | nullVega per volatility point.volatility_risk_premiumnumber | null30-day implied minus 20-day realized volatility.volumenumber | nullContracts traded today.volume_to_open_interestnumber | nullVolume over open interest.
metaobjectrequiredMeta objectpaginationobjectrequiredPagination object
Example response
{
"data": [
{
"ask_percent": 58.1,
"contract_type": "call",
"date_of_expiry": "2026-10-16",
"days_to_expiry": 0,
"delta": 0.31,
"flags": [
"unusual"
],
"implied_volatility": 0.138,
"net_premium": 1900000,
"open_interest": 4120,
"otm_percent": 0.479,
"premium": 8400000,
"strike": 6050,
"underlying_price": 6021.4,
"underlying_symbol": "SPXW",
"volume": 18200,
"volume_to_open_interest": 4.42
}
],
"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": 100,
"next_cursor_id": null,
"next_url": null
}
}Values are illustrative. Missing values are null, never 0.