Options

Return models

Response models serialize with camelCase; the tables use SDK Rust field names. Later endpoints reference these tables instead of repeating models.

ImpliedVolMetric

FieldRust typeDescription
periodStringMetric period
percentilef64Percentile
rankf64Rank

OptionVolatilityPoint

FieldRust typeDescription
implied_volf64Implied volatility
percentilef64Percentile
rankf64Rank
his_volatilityf64Historical volatility
timestampi64Unix timestamp in milliseconds

OptionAnalysis

FieldRust typeDescription
symbolStringUnderlying symbol
implied_vol30_daysf6430-day implied volatility
his_volatilityf64Historical volatility
iv_his_v_ratiof64IV/HV ratio
call_put_ratiof64Call/put ratio
implied_vol_metricOption<ImpliedVolMetric>Implied-volatility metric; see ImpliedVolMetric
volatility_listVec<OptionVolatilityPoint>Volatility series; see OptionVolatilityPoint

OptionLeg

FieldRust typeDescription
identifierStringOption identifier
strikeStringStrike price
rightStringOption right
bid_pricef64Best bid price
bid_sizei64Best bid size
ask_pricef64Best ask price
ask_sizei64Best ask size
volumei64Volume
latest_pricef64Latest price
pre_closef64Previous close
open_interesti64Open interest
multiplieri32Contract multiplier
last_timestampi64Last quote timestamp
implied_volf64Implied volatility
deltaf64Delta (deprecated)
gammaf64Gamma (deprecated)
thetaf64Theta (deprecated)
vegaf64Vega (deprecated)
rhof64Rho (deprecated)
mark_pricef64Mark price
pre_mark_pricef64Previous mark price
mark_timestampi64Mark-price timestamp
mid_pricef64Mid price
pre_mid_pricef64Previous mid price
mid_timestampi64Mid-price timestamp

OptionChainRow

FieldRust typeDescription
putOption<OptionLeg>Put leg; see OptionLeg
callOption<OptionLeg>Call leg; see OptionLeg

OptionChain

FieldRust typeDescription
symbolStringUnderlying symbol
expiryi64Expiration timestamp
itemsVec<OptionChainRow>Put/call pairs; see OptionChainRow

DepthLevel

FieldRust typeDescription
pricef64Level price
counti32Number of orders at the level
volumei64Level volume

Depth

FieldRust typeDescription
symbolStringOption symbol
asksVec<DepthLevel>Ask levels; see DepthLevel
bidsVec<DepthLevel>Bid levels; see DepthLevel

OptionExpiration

FieldRust typeDescription
symbolStringUnderlying symbol
option_symbolsVec<String>Option symbols
datesVec<String>Expiration dates
timestampsVec<i64>Expiration timestamps
periodsVec<String>Expiration periods
countsVec<i32>Corresponding contract counts

KlineItem

FieldRust typeDescription
timei64Bar start time
volumei64Volume
volume_decimalOption<f64>Decimal volume
openf64Open price
closef64Close price
highf64High price
lowf64Low price
amountf64Turnover

Kline (OptionKline alias)

FieldRust typeDescription
symbolStringOption symbol
periodStringBar period
next_page_tokenStringNext-page token
itemsVec<KlineItem>Bars; see KlineItem

Brief (OptionBrief alias)

FieldRust typeDescription
symbolStringOption symbol
openf64Open price
highf64High price
lowf64Low price
closef64Close price
pre_closef64Previous close
latest_pricef64Latest price
latest_timei64Latest trade time
ask_pricef64Best ask price
ask_sizei64Best ask size
bid_pricef64Best bid price
bid_sizei64Best bid size
volumei64Volume
statusStringStatus
adj_pre_closef64Adjusted previous close
changef64Price change
change_ratef64Change rate
amplitudef64Amplitude
expiryStringExpiration; the SDK deserializes a string or number
strikeStringStrike price
rightStringOption right
multiplieri32Contract multiplier
open_interesti64Open interest

OptionSymbol

FieldRust typeDescription
symbolStringUnderlying symbol
marketStringMarket
nameStringName
name_cnStringChinese name
name_enStringEnglish name
underlying_symbolStringUnderlying symbol

TimelineItem

FieldRust typeDescription
timei64Timeline point time
volumei64Volume
volume_decimalOption<f64>Decimal volume
pricef64Price
avg_pricef64Average price

TimelineBucket

FieldRust typeDescription
itemsVec<TimelineItem>Timeline points; see TimelineItem

Timeline

FieldRust typeDescription
symbolStringOption symbol
periodStringTimeline period
pre_closef64Previous close
intradayOption<TimelineBucket>Intraday timeline; see TimelineBucket
pre_hoursOption<TimelineBucket>Pre-market timeline; see TimelineBucket
after_hoursOption<TimelineBucket>After-hours timeline; see TimelineBucket

TradeTickItem

FieldRust typeDescription
timei64Trade time
volumei64Trade volume
pricef64Trade price
r#typeStringTrade type
part_codeStringParticipant code
part_nameStringParticipant name
condStringTrade condition

TradeTick

FieldRust typeDescription
symbolStringOption symbol
begin_indexi64Start index
end_indexi64End index
itemsVec<TradeTickItem>Trade ticks; see TradeTickItem

Get Option Analysis

Signature


pub async fn get_option_analysis( &self, req: OptionAnalysisRequest, ) -> Result<Vec<OptionAnalysis>, TigerError>

Description

Use symbols or symbol_items; items take precedence; volatility history optional.

Parameters

ParameterRust typeRequirementSDK default
req.symbolsOption<Vec<String>>Conditional: at least one of symbols / symbol_itemsNone (omitted)
req.symbol_itemsOption<Vec<OptionAnalysisSymbol>>Conditional: at least one of symbols / symbol_itemsNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.periodOption<String>OptionalNone (omitted)
req.require_volatility_listOption<bool>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

implied_vol30_days, historical volatility, ratios, metric, series.

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_option_analysis(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_option_analysis(OptionAnalysisRequest { symbols: Some(vec!["AAPL".into()]), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "symbol": "AAPL 250221C00195000",
    "impliedVol30Days": 0.2845,
    "hisVolatility": 0.213,
    "ivHisVRatio": 1.3356,
    "callPutRatio": 1.52,
    "impliedVolMetric": null,
    "volatilityList": [
      {
        "period": "30d",
        "impliedVol": 0.2845,
        "hisVolatility": 0.213
      }
    ]
  }
]

Rate limit

The base rate limit is 60 requests/min.


Get Option Chain

Signature


pub async fn get_option_chain( &self, req: OptionChainRequest, ) -> Result<Vec<OptionChain>, TigerError>

Description

v3; option_basic required; ranges use RangeF64 or RangeI32.

Deprecated: return_greek_value, option_filter.greeks, and the returned leg fields delta, gamma, theta, vega, and rho are deprecated. These values update daily and are not suitable for intraday decisions; new integrations should not set these parameters or rely on these response fields.

Parameters

ParameterRust typeRequirementSDK default
req.option_basicOption<Vec<OptionChainItem>>Required by the server; not prevalidated by the SDKNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)
req.return_greek_valueOption<bool>Deprecated; do not setNone (omitted)
req.option_filterOption<OptionChainFilter>Optional; its greeks field is deprecatedNone (omitted)

Return

symbol/expiry/rows with call and put quote, OI, and IV. Greek fields are deprecated and should not be relied upon. Each leg (OptionChainRow) also includes: mark_price: f64 (mark price), pre_mark_price: f64 (previous mark price), mark_timestamp: i64 (mark price timestamp, ms), mid_price: f64 (mid price), pre_mid_price: f64 (previous mid price), mid_timestamp: i64 (mid price timestamp, ms).

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_option_chain(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_option_chain(OptionChainRequest { option_basic: Some(Default::default()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "symbol": "AAPL 250221C00195000",
    "expiry": 1740096000000,
    "items": [
      {
        "strike": 195.0,
        "call": {
          "symbol": "AAPL 250221C00195000",
          "latestPrice": 3.45,
          "volume": 12500,
          "openInterest": 35000
        },
        "put": {
          "symbol": "AAPL 250221P00195000",
          "latestPrice": 2.8,
          "volume": 9800,
          "openInterest": 28000
        }
      }
    ]
  }
]

Rate limit

The base rate limit is 60 requests/min.


Get Option Market Depth

Signature


pub async fn get_option_depth( &self, req: OptionDepthRequest, ) -> Result<Vec<Depth>, TigerError>

Description

Returns the option order book. option_basic and market depth access are required.

Parameters

ParameterRust typeRequirementSDK default
req.option_basicOption<Vec<OptionQueryItem>>Required by the server; not prevalidated by the SDKNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • QuoteClient: Result<Vec<Depth>, TigerError>. See Depth and nested DepthLevel.

Vec<Depth>

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_option_depth(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_option_depth(OptionDepthRequest { option_basic: Some(Default::default()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "symbol": "AAPL 250221C00195000",
    "asks": [
      {
        "price": 195.51,
        "volume": 200
      },
      {
        "price": 195.52,
        "volume": 350
      }
    ],
    "bids": [
      {
        "price": 195.49,
        "volume": 150
      },
      {
        "price": 195.48,
        "volume": 400
      }
    ]
  }
]

Get Option Expiration

Signature


pub async fn get_option_expiration( &self, symbols: &[&str], market: Option<&str>, ) -> Result<Vec<OptionExpiration>, TigerError>

Description

Nonempty symbols; pass Some("HK") for HK options.

Parameters

ParameterRust typeRequirementSDK default
symbols&[&str]RequiredNone
marketOption<&str>OptionalNone (omitted)

Return

symbol/dates/timestamps/option_symbols/periods/counts.

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_option_expiration(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_option_expiration(&["AAPL"], None).await?;

    Ok(())

}

Response example

[
  {
    "symbol": "AAPL 250221C00195000",
    "optionSymbols": ["AAPL 250221C00195000", "AAPL 250221P00195000"],
    "dates": ["2025-02-21", "2025-03-21"],
    "timestamps": [1740096000000, 1742515200000],
    "periods": ["weekly", "monthly"],
    "counts": [42, 56]
  }
]

Special option symbols for indices

  • S&P 500 (.SPX): monthly options use SPX; weekly and quarterly options use SPXW.
  • Nasdaq-100: monthly options use NDX; weekly options use NDXP.
  • VIX: monthly options use VIX; weekly options use VIXW.

Rate limit

The base rate limit is 60 requests/min.


Get Option Kline

Signature


pub async fn get_option_kline( &self, req: OptionKlineRequest, ) -> Result<Vec<OptionKline>, TigerError>

Description

v2; option_query required; sort direction, range, limit optional per item.

Parameters

ParameterRust typeRequirementSDK default
req.option_queryOption<Vec<OptionKlineItem>>Required by the server; not prevalidated by the SDKNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • QuoteClient: Result<Vec<OptionKline>, TigerError>, where OptionKline = Kline. See Kline and nested KlineItem.

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_option_kline(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_option_kline(OptionKlineRequest { option_query: Some(Default::default()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "value": 94836000000.0
  }
]

Rate limit

The base rate limit is 60 requests/min.


Get Option Quote

Signature


pub async fn get_option_quote( &self, req: OptionQuoteRequest, ) -> Result<Vec<OptionBrief>, TigerError>

Description

v2; option_basic required; use OptionContractItem::from_occ.

Deprecated alias: get_option_brief forwards to this method and has been marked #[deprecated] in the SDK since 0.5.1. It adds no behavior. Use get_option_quote in new code.

Parameters

ParameterRust typeRequirementSDK default
req.option_basicOption<Vec<OptionContractItem>>Required by the server; not prevalidated by the SDKNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • QuoteClient: Result<Vec<OptionBrief>, TigerError>, where OptionBrief = Brief. See Brief.

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_option_quote(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_option_quote(OptionQuoteRequest { option_basic: Some(Default::default()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "value": 94836000000.0
  }
]

Rate limit

The base rate limit is 120 requests/min.


Get Option Symbols

Signature


pub async fn get_option_symbols( &self, req: OptionSymbolsRequest, ) -> Result<Vec<OptionSymbol>, TigerError>

Description

HK option universe; normally market=HK.

Parameters

ParameterRust typeRequirementSDK default
req.marketOption<String>Required by the server; not prevalidated by the SDKNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • QuoteClient: Result<Vec<OptionSymbol>, TigerError>. See OptionSymbol.

Symbol, market, names, underlying.

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_option_symbols(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_option_symbols(OptionSymbolsRequest { market: Some("US".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "symbol": "AAPL",
    "market": "US",
    "name": "AAPL Options",
    "nameCn": "Apple Options",
    "nameEn": "AAPL Options",
    "underlyingSymbol": "AAPL"
  }
]

Get Option Timeline

Signature


pub async fn get_option_timeline( &self, req: OptionTimelineRequest, ) -> Result<Vec<Timeline>, TigerError>

Description

option_query required.

Parameters

ParameterRust typeRequirementSDK default
req.option_queryOption<Vec<OptionQueryItem>>Required by the server; not prevalidated by the SDKNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

Vec<Timeline>

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_option_timeline(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_option_timeline(OptionTimelineRequest { option_query: Some(Default::default()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "symbol": "AAPL 250221C00195000",
    "period": "day",
    "preClose": 192.53,
    "intraday": null,
    "preHours": null,
    "afterHours": null
  }
]

Get Option Trade Ticks

Signature


pub async fn get_option_trade_ticks( &self, req: OptionTradeTicksRequest, ) -> Result<Vec<TradeTick>, TigerError>

Description

contracts required, containing OptionQueryItem.

Parameters

ParameterRust typeRequirementSDK default
req.contractsOption<Vec<OptionQueryItem>>Required by the server; not prevalidated by the SDKNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

Vec<TradeTick>

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_option_trade_ticks(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_option_trade_ticks(OptionTradeTicksRequest { contracts: Some(Default::default()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "symbol": "AAPL 250221C00195000",
    "beginIndex": 0,
    "endIndex": 30,
    "items": [
      {
        "time": 1738180750000,
        "price": 195.5,
        "volume": 100,
        "type": "+"
      },
      {
        "time": 1738180745000,
        "price": 195.49,
        "volume": 50,
        "type": "-"
      }
    ]
  }
]

Rate limit

The base rate limit is 120 requests/min.



Did this page help you?