Skip to content

OHLC

FreeValueStandardPro

Fetch intraday OHLC bars for an option contract.

  • Aggregated OHLC bars that use SIP rules for each bar.
  • Time timestamp of the bar represents the opening time of the bar. For a trade to be part of the bar: bar timestamp <= trade time < bar timestamp + interval.
  • Multi-day requests are limited to 1 month of data.
SPY · 20250321
Client
Auth
Style
from thetadatadx import Client

client = Client.from_env()

rows = client.market_data.option_history_ohlc(
    "SPY", "20250321",
    strike="570", right="C", interval="1m",
)
for t in rows:
    print(t.date, t.open, t.high, t.low, t.close)
Sample response · JSON
[
  {
    "close": 4,
    "count": 24,
    "high": 7.05,
    "low": 3.6,
    "open": 4.48,
    "timestamp": "2023-11-03T09:30:00",
    "volume": 147,
    "vwap": 4.39
  },
  {
    "close": 4.65,
    "count": 19,
    "high": 4.65,
    "low": 3.65,
    "open": 3.85,
    "timestamp": "2023-11-03T09:31:00",
    "volume": 39,
    "vwap": 4.31
  },
  {
    "close": 5,
    "count": 14,
    "high": 5.2,
    "low": 4.65,
    "open": 4.75,
    "timestamp": "2023-11-03T09:32:00",
    "volume": 45,
    "vwap": 4.45
  }
]

Parameters

NameTypeRequiredDefaultDescription
symbolstringyesTicker symbol (e.g. AAPL)
expirationdateyesExpiration date YYYYMMDD
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
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 OhlcTick:

FieldTypeDescription
ms_of_dayi32Opening time of the bar, milliseconds since midnight ET.
openf64Opening trade price.
highf64Highest traded price.
lowf64Lowest traded price.
closef64Closing traded price.
volumei64Number of contracts or shares traded.
counti64Number of trades.
vwapf64Volume-weighted average price of the session.
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.