Skip to content

Options · Order flow

Options flow

Consolidated option orders: sweeps, splits, blocks and single prints.
On this page

Option order flow with the prints of one order consolidated: a sweep or split spanning several prints of one contract is one row, with its legs, exchanges, volume-weighted price, premium and aggressor side. Each order is classified by its most aggressive print against the quote at execution; direction that cannot be determined stays unknown. Filters apply to individual prints; an order is returned when at least one of its prints matches, so a premium filter selects orders with a large leg, not a large total. Give underlying_symbol or up to ten underlying_symbols. Rows are newest first; next_cursor_id pages back through the session and stays valid across restarts for 24 hours. Only prints retained by the platform can be served: roughly the last five sessions, and overnight prints only for the most recent session. Requesting an older session starts a load and answers 503 data_pending with retry_after_ms. A print cancelled after it was served is not recalled, and prints backfilled behind a cursor's position can be missed by a walk in progress; re-read the session for a complete view.

Example request

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

24 parameters, none required.

ParameterType and limitsDescription
underlying_symbolqueryoptionalstringat most 8 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$Option root or family: SPX returns the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ... Give this or underlying_symbols.
underlying_symbolsqueryoptionalarray<string>comma-separated in one parameter1 to 10 itemseach at most 128 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$Several underlyings in one request, comma separated, at most 10 (for example SPX,SPY,QQQ). Use either underlying_symbol or underlying_symbols.
datequeryoptionalstringdateTrading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.
sessionqueryoptionalstringrthgthalldefault rthTrading 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.
start_timequeryoptionalintegerunix-msmin 946684800000max 4102444800000Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.
end_timequeryoptionalintegerunix-msmin 946684800000max 4102444800000End of the window (exclusive).
contract_typequeryoptionalstringcallputCalls or puts. Omit for both.
date_of_expiryqueryoptionalstringdateOnly contracts expiring on this date.
min_dtequeryoptionalintegermin 0max 3650Minimum days to expiration (0 = expires on the trading date).
max_dtequeryoptionalintegermin 0max 3650Maximum days to expiration.
min_premiumqueryoptionalnumbermin 0max 1000000000000Minimum premium in US dollars of a print (price x size x multiplier).
max_premiumqueryoptionalnumbermin 0max 1000000000000Maximum premium in US dollars of a print.
min_sizequeryoptionalintegermin 1max 1000000000Minimum print size in contracts.
max_sizequeryoptionalintegermin 1max 1000000000Maximum print size in contracts.
trade_typequeryoptionalarray<string>comma-separated in one parametersweepblocksplitsinglegoldenmultilegcrossfloorauctioniso1 to 10 itemsComma-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.
sidequeryoptionalarray<string>comma-separated in one parameterabove_askat_asknear_askaskmidnear_bidat_bidbidbelow_bidunknown1 to 10 itemsComma-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.
sentimentqueryoptionalarray<string>comma-separated in one parameterbullishbearishneutralunknown1 to 4 itemsComma-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_onlyqueryoptionalbooleanOnly out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.
include_complexqueryoptionalbooleanInclude multi-leg (complex order) prints. Default true.
unusual_onlyqueryoptionalbooleanOnly 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_strikequeryoptionalnumber> 0max 1000000Lowest strike in dollars.
max_strikequeryoptionalnumber> 0max 1000000Highest strike in dollars.
limitqueryoptionalintegerdefault 100min 1max 500Maximum 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>required22 fields inside
    • contract_typestringrequiredCall or put.callput
    • date_of_expirystringdaterequiredExpiration date.
    • days_to_expiryintegerrequiredCalendar days from the trading date to expiration.
    • end_timestampintegerunix-msrequiredTime of the last print. Unix epoch milliseconds (UTC).
    • exchange_countintegerrequiredExchanges the order executed on.
    • flagsarray<string>requiredCondition flags: iso (intermarket sweep), auction, cross, floor, complex (multi-leg order), tied, implied, ext_hours, late, cancelled, aggressor_hint, post_cash_close, vol_gt_oi (day volume above open interest), size_gt_oi (print size above open interest), no_side.isoauctioncrossfloorcomplextiedimpliedext_hourslatecancelledaggressor_hintpost_cash_closevol_gt_oisize_gt_oino_side
    • idstringrequiredIdentifier of the order (the sweep or split, or the print for a single).
    • is_blockbooleanrequiredA block order.
    • is_goldenbooleanrequiredA golden sweep: a sweep of at least $1,000,000 premium.
    • legsintegerrequiredPrints in the order.
    • open_interestinteger | nullrequiredOpen interest of the contract at the start of the trading date.
    • otm_percentnumber | nullrequiredHow far out of the money the strike is, in percent of the underlying price.
    • premiumnumberrequiredPremium in US dollars.
    • pricenumberrequiredVolume-weighted price per share.
    • sentimentstringrequiredDirection implied by the side: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) or unknown.bullishbearishneutralunknown
    • sidestringrequiredAggressor class of the order's most aggressive print: above_ask, ask (at or near the ask), mid, bid (at or near the bid), below_bid, or unknown.above_askaskmidbidbelow_bidunknown
    • sizeintegerrequiredContracts traded.
    • strikenumberrequiredStrike in dollars.
    • timestampintegerunix-msrequiredTime of the first print. Unix epoch milliseconds (UTC).
    • trade_typestringrequiredPrint or order type. Sweeps and splits are inferred groupings of prints, not exchange-confirmed.sweepsplitsinglemultilegcrossfloor
    • underlying_pricenumber | nullrequiredUnderlying price at execution; null when unknown.
    • underlying_symbolstringrequiredOption root of the contract, for example SPXW.
  • metaobjectrequiredMeta object
  • paginationobjectrequiredPagination object

Example response

{
  "data": [
    {
      "contract_type": "call",
      "date_of_expiry": "2026-10-16",
      "days_to_expiry": 0,
      "end_timestamp": 1792161012912,
      "exchange_count": 3,
      "flags": [
        "iso"
      ],
      "id": "SPXW:20261016:12",
      "is_block": false,
      "is_golden": false,
      "legs": 4,
      "open_interest": 4120,
      "otm_percent": 0.4787,
      "premium": 202800,
      "price": 3.38,
      "sentiment": "bullish",
      "side": "ask",
      "size": 600,
      "strike": 6050,
      "timestamp": 1792161012345,
      "trade_type": "sweep",
      "underlying_price": 6021.4,
      "underlying_symbol": "SPXW"
    }
  ],
  "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.