Skip to content

EOD

FreeValueStandardPro

Fetch end-of-day option data for a contract over a date range.

  • Since OPRA does not provide a national EOD report for options, Theta Data generates a national EOD report at 17:15 ET each day.
  • created represents the datetime the report was generated and last_trade represents the datetime of the last trade.
  • The quote in the response represents the last NBBO reported by OPRA at the time of report generation.
  • You can read more about EOD & OHLC data here.
rust
pub fn option_history_eod(
    &self,
    symbol: &str,
    expiration: &str,
    start_date: &str,
    end_date: &str,
) -> OptionHistoryEodBuilder<'_>

Optional parameters chain on the builder: .strike(&str), .right(&str), .max_dte(i32), .strike_range(i32). Execute with .awaitResult<Vec<EodTick>, Error>, or decode chunk-by-chunk with .stream(handler).

Example

rust
let rows = tdx
    .option_history_eod("SPY", "20250321", "20250303", "20250306")
    .strike("570")
    .right("C")
    .await?;
for t in &rows {
    println!("date={} open={} close={} volume={}", t.date, t.open, t.close, t.volume);
}

Parameters

NameTypeRequiredDefaultDescription
symbolstringyesTicker symbol (e.g. AAPL)
expirationdateyesExpiration date YYYYMMDD
start_datedateyesStart date YYYYMMDD
end_datedateyesEnd date YYYYMMDD
strikestringno*Strike price in dollars as a string (e.g. 500 or 17.5). Use * for wildcard selection.
rightstringnobothOption side. Accepted values: call, put, both.
max_dteintnoMaximum days to expiration
strike_rangeintnoStrike range filter
timeout_msintnoPer-request deadline in milliseconds. 0 means no deadline.

Response

Rows of EodTick:

FieldTypeDescription
created_ms_of_dayi32EOD report creation time (NOT a trade time), milliseconds since midnight ET.
last_trade_ms_of_dayi32Time of the day's last trade, milliseconds since midnight ET. 0 when no trades printed that day.
openf64Opening trade price. 0.0 when no trades printed that day.
highf64Highest traded price. 0.0 when no trades printed that day.
lowf64Lowest traded price. 0.0 when no trades printed that day.
closef64Closing traded price. 0.0 when no trades printed that day.
volumei64Number of contracts or shares traded.
counti64Number of trades.
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.