OPRA, the Options Price Reporting Authority, is to US options what the SIPs are to stocks: the single feed every exchange is required to report to. Because Massive takes that feed rather than connecting to venues one at a time, the exchanges endpoint returns 21 records, 20 exchanges plus OPRA itself, and there is no venue whose prints are missing.
Applies to
- Plans: an Options subscription. The source is the same on every tier.
- Endpoints: /v3/trades, /v3/quotes, /v2/aggs and the snapshots for option tickers, and the /options WebSocket cluster.
- Asset classes: US-listed options, on both equities and indices.
What that covers
That covers 20 exchanges, including the Cboe family, Nasdaq's options markets, NYSE American, BOX, MEMX, MX2 and IEX. List them with their ids:
curl -X GET "https://api.massive.com/v3/reference/exchanges?asset_class=options&apiKey=YOUR_API_KEY"
Response
{
"results": [
{ "id": 300, "type": "exchange", "mic": "AMXO", "name": "NYSE American Options" },
{ "id": 301, "type": "exchange", "mic": "XBOX", "name": "Boston Options Exchange" },
{ "id": 302, "type": "exchange", "mic": "XCBO", "name": "Chicago Board Options Exchange" }
],
"status": "OK"
}
The exchange field on an options trade indexes into that list, which is a separate id space from stocks: options ids start at 300, so the same integer means different things on the two asset classes.
Greeks and implied volatility are not part of the feed. They are computed by Massive from the quotes, which is why they appear on the snapshot rather than on a historical endpoint.
Why OPRA rather than the exchanges directly
OPRA is the source for the same reason the stock SIPs are: it is the market's own consolidation, so the quote you see is the one the market agrees on rather than one we assembled. It also matters more in options than in equities, because the option universe is enormous, hundreds of thousands of live contracts, and reconstructing a consolidated view from 20 separate venue feeds is a substantially larger problem than it is for stocks.
If you see an error
An exchange id that does not match a venue you know may be from the stocks list. Fetch the exchanges endpoint with asset_class=options.
A stock or ETF option with no Greeks on the options snapshot is most often in the money with its bid/ask midpoint below its intrinsic value, which cannot be solved until the quote moves. An index option with no Greeks is out of the money with a zero bid. For an index option chain with no Greeks on any contract, check that the request uses the I: prefix, such as I:SPX. See Why are greeks and implied volatility missing from the options snapshot?
{"status":"NOT_AUTHORIZED"} means the key has no Options subscription. Stocks does not cover options, even for an option on a stock you are entitled to.

