Skip to content

Options · Order flow

Options flow exchanges

Market share of option premium, volume and trades by exchange.
On this page

Each exchange's (or venue group's) premium, volume and trades and its share of the total. Without underlying_symbol the whole options market is covered, including underlyings the platform does not tabulate trade by trade; scope narrows that to index or equity options. An exchange code without a name is listed as unmapped_<code>.

Example request

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

7 parameters, none required.

ParameterType and limitsDescription
underlying_symbolqueryoptionalstringat most 8 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$Restrict to one underlying (root or family). Omit for the whole options market.
scopequeryoptionalstringallindexequitydefault allMarket segment when no underlying is given: all, index (index and volatility-index options) or equity (stock and ETF options).
group_byqueryoptionalstringexchangevenue_groupdefault exchangeRows per exchange or per venue group (Cboe, Nasdaq, ICE/NYSE, ISE, MIAX, BOX, MEMX, other).
datequeryoptionalstringdateTrading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.
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.
contract_typequeryoptionalstringcallputCalls or puts. Omit for both.
sidequeryoptionalarray<string>comma-separated in one parameterabove_askat_asknear_askaskmidnear_bidat_bidbidbelow_bidunknown1 to 10 itemsAggressor classes to include, as for /v1/options/trades.

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>required9 fields inside
    • exchangestring | nullrequiredExchange name, for example cboe, or unmapped_<code>; null when rows are venue groups.
    • exchange_codeinteger | nullrequiredNumeric exchange code; null for venue groups.
    • premiumnumberrequiredPremium in US dollars.
    • premium_sharenumberrequiredShare of total premium, 0 to 1.
    • tradesintegerrequiredPrints.
    • trades_sharenumberrequiredShare of total prints, 0 to 1.
    • venue_groupstringrequiredVenue group: Cboe, Nasdaq, ICE/NYSE, ISE, MIAX, BOX, MEMX or Other.
    • volumeintegerrequiredContracts traded.
    • volume_sharenumberrequiredShare of total volume, 0 to 1.
  • metaobjectrequiredMeta object

Example response

{
  "data": [
    {
      "exchange": "cboe",
      "exchange_code": 5,
      "premium": 7550240000,
      "premium_share": 0.31,
      "trades": 610000,
      "trades_share": 0.26,
      "venue_group": "Cboe",
      "volume": 4100000,
      "volume_share": 0.28
    }
  ],
  "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.