Options · Single contract
Options contract flow
/v1/options/contract/flowoptionsContractFlowEvery trade print of one contract on a trading session with the platform's classification: which side of the market it traded on, the inferred sentiment, premium, trade type (sweep, block, split, single, multileg ...) and the contract's Greeks and open interest at the time. Newest first, paginated with cursor_id; one trading session per request (a trading date, or a range inside one session). Filters narrow the prints by premium, size, type, side and sentiment. Covers the underlyings OrderMap tracks.
Example request
curl -sS --get "https://api.ordermap.si/v1/options/contract/flow" \
-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/flow?${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
15 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. |
start_queryoptional | integerunix-msmin 946684800000max 4102444800000 | Start of the range, Unix epoch milliseconds, inclusive. Within one trading session. |
end_queryoptional | integerunix-msmin 946684800000max 4102444800000 | End of the range, Unix epoch milliseconds, exclusive. Within one trading session. |
datequeryoptional | stringdate | One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before. |
sessionqueryoptional | stringrthgthalldefault rth | Trading session: rth is the regular session (09:30-16:15 ET), gth the overnight session that ends on the morning of the trading date (the previous evening 20:15 ET to 09:25 ET, split at midnight ET), all is both with the curb session (to 17:00 ET). gth and all require the overnight entitlement. |
min_queryoptional | numbermin 0max 1000000000000 | Minimum print premium in dollars (price x size x 100). |
min_queryoptional | integermin 1max 1000000000 | Minimum print size in contracts. |
trade_queryoptional | array<string>comma-separated in one parametersweepsplitblocksinglemultilegcrossfloorauctionisogolden1 to 10 items | Only prints of these types (comma-separated): sweep, split, block, single, multileg, cross, floor, auction, iso, golden. A print matches when any listed type applies; sweeps and splits are inferred groupings of prints, not exchange-confirmed. |
sidequeryoptional | array<string>comma-separated in one parameterabove_askaskmidbidbelow_bidunknown1 to 6 items | Only prints on these sides of the market at the time of the trade (comma-separated): above_ask, ask (at or near the ask), mid, bid (at or near the bid), below_bid or unknown. The same tokens as /v1/options/flow. |
sentimentqueryoptional | array<string>comma-separated in one parameterbullishbearishneutralunknown1 to 4 items | Only prints with these inferred sentiments (comma-separated). |
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>required22 fields insideasknumber | nullrequiredBest offer at the trade.bidnumber | nullrequiredBest bid at the trade.blockbooleanrequiredThe print is a block trade.conditionintegerrequiredSale condition code.day_volumeintegerrequiredContract volume of the day up to this print.deltanumber | nullrequiredDelta at the trade.exchangeintegerrequiredExchange code of the venue.exchange_namestringrequiredName of the venue.goldenbooleanrequiredThe print is a golden sweep: a large sweep, mostly at the ask.idstringrequiredStable identifier of the print.implied_volatilitynumber | nullrequiredImplied volatility at the trade.open_interestinteger | nullrequiredOpen interest of the contract.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.premiumnumberrequiredPremium in dollars: price x size x 100.pricenumberrequiredTrade price per contract in dollars.sentimentstringrequiredInferred sentiment of the trade.bullishbearishneutralunknownsessionstringrequiredSession of the trade: rth, gth or curb.sidestringrequiredWhere the trade printed relative to the market: above_ask, ask (at or near the ask), mid, bid (at or near the bid), below_bid, or unknown when the quote was missing or invalid.above_askaskmidbidbelow_bidunknownsizeintegerrequiredContracts traded.timestampintegerunix-msrequiredTime of the trade. Unix epoch milliseconds (UTC).trade_typestringrequiredTrade type: sweep, split, single, multileg, cross or floor.underlying_pricenumber | nullrequiredUnderlying price at the trade.
metaobjectrequiredMeta objectpaginationobjectrequiredPagination object
Example response
{
"data": [
{
"option_symbol": "SPXW 261016C05800000",
"id": "SPXW:20261016:5800000:C:20261016:99",
"timestamp": 1792157400123,
"price": 12.4,
"size": 25,
"premium": 31000,
"bid": 12.3,
"ask": 12.6,
"side": "ask",
"sentiment": "bullish",
"underlying_price": 5801.2,
"implied_volatility": 0.182,
"delta": 0.51,
"open_interest": 4321,
"day_volume": 800,
"exchange": 5,
"exchange_name": "CBOE",
"condition": 18,
"trade_type": "single",
"block": false,
"golden": false,
"session": "rth"
}
],
"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.