Options · Order flow
Options flow by strike
/v1/options/flow/by-strikeoptionsFlowByStrikeFor each strike, the premium and volume of calls and puts split into ask side, bid side, mid and unknown, the net premium (ask side minus bid side) and the open interest, with the underlying price and session totals. All expirations of the underlying are included unless date_of_expiry or the DTE bounds narrow them. Strikes without prints in the window are not listed.
Example request
curl -sS --get "https://api.ordermap.si/v1/options/flow/by-strike" \
-H "Authorization: Bearer $ORDERMAP_API_KEY" \
--data-urlencode underlying_symbol=SPXWconst params = new URLSearchParams({
underlying_symbol: "SPXW",
});
const res = await fetch(`https://api.ordermap.si/v1/options/flow/by-strike?${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
19 parameters, 1 required.
| Parameter | Type and limits | Description |
|---|---|---|
underlying_queryrequired | stringat 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 ... |
datequeryoptional | stringdate | Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date. |
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. |
contract_queryoptional | stringcallput | Calls or puts. Omit for both. |
date_queryoptional | stringdate | Only contracts expiring on this date. |
min_queryoptional | integermin 0max 3650 | Minimum days to expiration (0 = expires on the trading date). |
max_queryoptional | integermin 0max 3650 | Maximum days to expiration. |
min_queryoptional | numbermin 0max 1000000000000 | Minimum premium in US dollars of a print (price x size x multiplier). |
max_queryoptional | numbermin 0max 1000000000000 | Maximum premium in US dollars of a print. |
min_queryoptional | integermin 1max 1000000000 | Minimum print size in contracts. |
max_queryoptional | integermin 1max 1000000000 | Maximum print size in contracts. |
trade_queryoptional | array<string>comma-separated in one parametersweepblocksplitsinglegoldenmultilegcrossfloorauctioniso1 to 10 items | Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed. |
sidequeryoptional | array<string>comma-separated in one parameterabove_askat_asknear_askaskmidnear_bidat_bidbidbelow_bidunknown1 to 10 items | Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid. |
sentimentqueryoptional | array<string>comma-separated in one parameterbullishbearishneutralunknown1 to 4 items | Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable). |
otm_queryoptional | boolean | Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded. |
include_queryoptional | boolean | Include multi-leg (complex order) prints. Default false. |
unusual_queryoptional | boolean | Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask. |
min_queryoptional | number> 0max 1000000 | Lowest strike in dollars. |
max_queryoptional | number> 0max 1000000 | Highest strike in dollars. |
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
dataobjectrequiredFlow by strike.37 fields insidesessionstringrequiredSession covered.rthgthcurballstrikesarray<object>requiredStrikes with activity, ascending.27 fields insidecallobjectrequiredCall flow.11 fields insideask_premiumnumberrequiredPremium at or near the ask.ask_volumeintegerrequiredContracts at or near the ask.bid_premiumnumberrequiredPremium at or near the bid.bid_volumeintegerrequiredContracts at or near the bid.mid_premiumnumberrequiredPremium around the mid.mid_volumeintegerrequiredContracts around the mid.net_premiumnumberrequiredask_premium minus bid_premium.premiumnumberrequiredPremium in US dollars.unknown_premiumnumberrequiredPremium of prints with unknown side.unknown_volumeintegerrequiredContracts with unknown side.volumeintegerrequiredContracts traded.
call_open_interestinteger | nullrequiredCall open interest.putobjectrequiredPut flow.11 fields insideask_premiumnumberrequiredPremium at or near the ask.ask_volumeintegerrequiredContracts at or near the ask.bid_premiumnumberrequiredPremium at or near the bid.bid_volumeintegerrequiredContracts at or near the bid.mid_premiumnumberrequiredPremium around the mid.mid_volumeintegerrequiredContracts around the mid.net_premiumnumberrequiredask_premium minus bid_premium.premiumnumberrequiredPremium in US dollars.unknown_premiumnumberrequiredPremium of prints with unknown side.unknown_volumeintegerrequiredContracts with unknown side.volumeintegerrequiredContracts traded.
put_open_interestinteger | nullrequiredPut open interest.strikenumberrequiredStrike in dollars.
totalsobjectrequiredTotals over every strike.4 fields insidecall_premiumnumberrequiredCall premium in US dollars.net_call_premiumnumberrequiredCall ask side minus bid side.net_put_premiumnumberrequiredPut ask side minus bid side.put_premiumnumberrequiredPut premium in US dollars.
trading_datestringdaterequiredTrading date.underlying_pricenumber | nullrequiredUnderlying price; null when unknown.underlying_symbolstringrequiredThe requested underlying.
metaobjectrequiredMeta object
Example response
{
"data": {
"session": "rth",
"strikes": [
{
"call": {
"ask_premium": 840000,
"ask_volume": 1680,
"bid_premium": 525000,
"bid_volume": 1050,
"mid_premium": 420000,
"mid_volume": 840,
"net_premium": 315000,
"premium": 2100000,
"unknown_premium": 315000,
"unknown_volume": 630,
"volume": 4200
},
"call_open_interest": 18200,
"put": {
"ask_premium": 128000,
"ask_volume": 320,
"bid_premium": 80000,
"bid_volume": 200,
"mid_premium": 64000,
"mid_volume": 160,
"net_premium": 48000,
"premium": 320000,
"unknown_premium": 48000,
"unknown_volume": 120,
"volume": 800
},
"put_open_interest": 9400,
"strike": 6050
}
],
"totals": {
"call_premium": 41200000,
"net_call_premium": 6180000,
"net_put_premium": 5070000,
"put_premium": 33800000
},
"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.