Trade
FreeValueStandardPro
Fetch the trade at a specific time of day across a date range for an option.
- Returns the last trade reported by OPRA at a specified millisecond of the day.
- Trade condition mappings can be found here.
- Extended trade conditions are not reported by OPRA for options, so they can be ignored.
- The
time_of_dayparameter represents the 00:00:00.000 ET that the trade should be provided for.
SPY · 20250321 · 20250303 · 20250306 · 10:30:00.000
from thetadatadx import Client
client = Client.from_env()
rows = client.market_data.option_at_time_trade(
"SPY", "20250321", "20250303", "20250306", "10:30:00.000",
strike="570", right="C",
)
for t in rows:
print(t.date, t.ms_of_day, t.price, t.size) Sample response ·
JSON[
{
"condition": 130,
"exchange": 22,
"ext_condition1": 255,
"ext_condition2": 255,
"ext_condition3": 255,
"ext_condition4": 255,
"price": 3.9,
"sequence": 18902138,
"size": 2,
"timestamp": "2024-11-04T09:30:00.471"
}
]Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | yes | — | Ticker symbol (e.g. AAPL) |
expiration | date | yes | — | Expiration date YYYYMMDD. Pass * to select all expirations for the underlying (chain-wide; query one date at a time). |
start_date | date | yes | — | Start date YYYYMMDD |
end_date | date | yes | — | End date YYYYMMDD |
time_of_day | string | yes | — | ET wall-clock time in HH:MM:SS.SSS (e.g. 09:30:00.000 for 9:30 AM ET; legacy 34200000 is also accepted) |
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, *. |
max_dte | int | no | — | Maximum days to expiration |
strike_range | int | no | — | Strike range filter |
timeout_ms | int | no | — | Per-request deadline in milliseconds. 0 means no deadline. |
Response
Rows of TradeTick:
| Field | Type | Description |
|---|---|---|
ms_of_day | i32 | Milliseconds since midnight Eastern Time. |
sequence | i32 | Exchange-assigned trade sequence number. |
ext_condition1 | i32 | Additional trade condition code. |
ext_condition2 | i32 | Additional trade condition code. |
ext_condition3 | i32 | Additional trade condition code. |
ext_condition4 | i32 | Additional trade condition code. |
condition | i32 | Trade condition code. |
size | i32 | Number of contracts or shares traded. |
exchange | i32 | Exchange code where the trade executed. |
price | f64 | Trade price. |
condition_flags | i32 | Trade condition flags bitmap. |
price_flags | i32 | Trade price flags bitmap. |
volume_type | i32 | Volume reporting mode: 0 = incremental, 1 = cumulative. |
records_back | i32 | Offset of this record behind the most recent record. |
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).