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
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
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | yes | — | Ticker symbol (e.g. AAPL) |
expiration | date | yes | — | Expiration date YYYYMMDD |
strike | string | no | * | Strike price in dollars as a string (e.g. 500 or 17.5). Use * for wildcard selection. |
right | string | no | both | Option side. Use both or * (alias) for calls and puts. Accepted values: call, put, both, *. |
date | date | no | — | Single 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. |
interval | string | no | 1s | Interval 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_time | string | no | 09:30:00 | Start time filter |
end_time | string | no | 16:00:00 | End time filter |
strike_range | int | no | — | Strike range filter |
start_date | date | no | — | Start date YYYYMMDD |
end_date | date | no | — | End date YYYYMMDD |
timeout_ms | int | no | — | Per-request deadline in milliseconds. 0 means no deadline. |
Response
Rows of OhlcTick:
| Field | Type | Description |
|---|---|---|
ms_of_day | i32 | Opening time of the bar, milliseconds since midnight ET. |
open | f64 | Opening trade price. |
high | f64 | Highest traded price. |
low | f64 | Lowest traded price. |
close | f64 | Closing traded price. |
volume | i64 | Number of contracts or shares traded. |
count | i64 | Number of trades. |
vwap | f64 | Volume-weighted average price of the session. |
date | i32 | Trading 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).