Skip to content

Quote

FreeValueStandardPro

Fetch NBBO quotes for an option contract on a given date.

  • Returns every NBBO quote reported by OPRA.
  • If the interval parameter is specified, the quote for each interval represents the last quote at the interval's timestamp.
  • Multi-day requests are limited to 1 month of data, and must specify an expiration.
SPY · 20250321
Client
Auth
Style
from thetadatadx import Client

client = Client.from_env()

rows = client.market_data.option_history_quote(
    "SPY", "20250321",
    strike="570", right="C", interval="1m",
)
for t in rows:
    print(t.date, t.ms_of_day, t.bid, t.ask)
Sample response · JSON
[
  {
    "ask": 0,
    "ask_condition": 50,
    "ask_exchange": 42,
    "ask_size": 0,
    "bid": 0,
    "bid_condition": 50,
    "bid_exchange": 42,
    "bid_size": 0,
    "timestamp": "2024-11-04T09:30:00"
  },
  {
    "ask": 4.7,
    "ask_condition": 50,
    "ask_exchange": 9,
    "ask_size": 424,
    "bid": 4.55,
    "bid_condition": 50,
    "bid_exchange": 5,
    "bid_size": 598,
    "timestamp": "2024-11-04T09:31:00"
  },
  {
    "ask": 4.4,
    "ask_condition": 50,
    "ask_exchange": 11,
    "ask_size": 221,
    "bid": 4.3,
    "bid_condition": 50,
    "bid_exchange": 46,
    "bid_size": 58,
    "timestamp": "2024-11-04T09:32:00"
  }
]

Parameters

NameTypeRequiredDefaultDescription
symbolstringyesTicker symbol (e.g. AAPL)
expirationdateyesExpiration date YYYYMMDD. Pass * to select all expirations for the underlying (chain-wide; query one date at a time).
strikestringno*Strike price in dollars as a string (e.g. 500 or 17.5). Use * for wildcard selection.
rightstringnobothOption side. Use both or * (alias) for calls and puts. Accepted values: call, put, both, *.
datedatenoSingle date YYYYMMDD. Supply this for a single-day pull, or supply start_date/end_date for a range. When present, date takes precedence over the range.
intervalstringno1sInterval preset. Defaults to 1s when omitted — matching the upstream ThetaData Python library. Accepted values: tick, 10ms, 100ms, 500ms, 1s, 5s, 10s, 15s, 30s, 1m, 5m, 10m, 15m, 30m, 1h.
start_timestringno09:30:00Start time filter
end_timestringno16:00:00End time filter
max_dteintnoMaximum days to expiration
strike_rangeintnoStrike range filter
start_datedatenoStart date YYYYMMDD
end_datedatenoEnd date YYYYMMDD
timeout_msintnoPer-request deadline in milliseconds. 0 means no deadline.

Response

Rows of QuoteTick:

FieldTypeDescription
ms_of_dayi32Milliseconds since midnight Eastern Time.
bid_sizei32Last NBBO bid size.
bid_exchangei32Exchange code of the NBBO bid.
bidf64Last NBBO bid price.
bid_conditioni32Quote condition code on the bid side.
ask_sizei32Last NBBO ask size.
ask_exchangei32Exchange code of the NBBO ask.
askf64Last NBBO ask price.
ask_conditioni32Quote condition code on the ask side.
datei32Trading date as a YYYYMMDD integer.

Wildcard requests additionally populate expiration (YYYYMMDD), strike (dollars), and right ("C" / "P") on every row to identify the contract; on single-contract requests these are absent (None / null / undefined; the Rust and C rows carry the documented 0 / 0.0 / '\0' fills).

Released under the Apache-2.0 License.