Futures

Return models

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

FutureContractInfo

FieldRust typeDescription
continuousboolWhether this is a continuous contract
tradeboolWhether the contract is tradable
r#typeStringContract type
contract_codeStringContract code
ib_codeStringIB code
nameStringContract name
contract_monthStringContract month
last_trading_dateStringLast trading date
first_notice_dateStringFirst notice date
last_bidding_close_timei64Last bidding close time
currencyStringCurrency
exchange_codeStringExchange code
multiplierf64Contract multiplier
min_tickf64Minimum price increment
display_multiplierf64Display multiplier
exchangeStringExchange
product_worthStringProduct worth
delivery_modeStringDelivery mode
product_typeStringProduct type
product_scaleStringProduct scale
last_trading_timestampi64Last trading timestamp

DepthLevel

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

FutureDepth

FieldRust typeDescription
contract_codeStringContract code
timestampi64Market-data timestamp
asksVec<DepthLevel>Ask levels; see DepthLevel
bidsVec<DepthLevel>Bid levels; see DepthLevel

FutureExchange

FieldRust typeDescription
codeStringExchange code
nameStringExchange name
zone_idStringTime-zone ID

FutureMainContractHistory

FieldRust typeDescription
contract_codeStringContract code
symbolStringUnderlying symbol
begin_dateStringEffective start date
end_dateStringEffective end date

FutureKlineItem

FieldRust typeDescription
timei64Bar start time
volumei64Volume
openf64Open price
closef64Close price
highf64High price
lowf64Low price
last_timei64Last trade time
open_interesti64Open interest
settlementf64Settlement price

FutureKline

FieldRust typeDescription
contract_codeStringContract code
next_page_tokenStringNext-page token
itemsVec<FutureKlineItem>Bars; see FutureKlineItem

FutureQuote

FieldRust typeDescription
contract_codeStringContract code
latest_pricef64Latest price
latest_sizei64Latest trade size
latest_timei64Latest trade time
bid_pricef64Best bid price
ask_pricef64Best ask price
bid_sizei64Best bid size
ask_sizei64Best ask size
open_interesti64Open interest
open_interest_changei64Open-interest change
volumei64Volume
openf64Open price
highf64High price
lowf64Low price
settlementf64Settlement price
limit_upf64Upper price limit
limit_downf64Lower price limit
avg_pricef64Average price

FutureTradeTickItem

FieldRust typeDescription
contract_codeStringContract code
indexi64Tick index
timei64Trade time
pricef64Trade price
volumei64Trade volume
directionStringTrade direction

FutureTradingSegment

FieldRust typeDescription
starti64Segment start time
endi64Segment end time
r#typeStringSegment type

FutureTradingTime

FieldRust typeDescription
contract_codeStringContract code
biz_dateStringBusiness date
zoneStringTime zone
trading_timesVec<FutureTradingSegment>Trading segments; see FutureTradingSegment

Get All Future Contracts

Signature


pub async fn get_all_future_contracts( &self, req: AllFutureContractsRequest, ) -> Result<Vec<FutureContractInfo>, TigerError>

Description

Filter by type/exchange.

Parameters

ParameterRust typeRequirementSDK default
req.contract_typeOption<String>Conditional: at least one of contract_type / exchangeNone (omitted)
req.exchangeOption<String>Conditional: at least one of contract_type / exchangeNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • QuoteClient: Result<Vec<FutureContractInfo>, TigerError>. See FutureContractInfo for fields.

Contracts.

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_all_future_contracts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_all_future_contracts(AllFutureContractsRequest { contract_type: Some("ES".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "continuous": false,
    "trade": true,
    "type": "FUT",
    "contractCode": "ES2509",
    "ibCode": "ES",
    "name": "E-mini S&P 500",
    "contractMonth": "202509",
    "lastTradingDate": "2025-09-19"
  }
]


Get Current Future Contract

Signature


pub async fn get_current_future_contract( &self, req: FutureContractSingleRequest, ) -> Result<Option<FutureContractInfo>, TigerError>

Description

Current main contract, normally by type.

Parameters

ParameterRust typeRequirementSDK default
req.contract_codeOption<String>Conditional: at least one of contract_code / contract_typeNone (omitted)
req.contract_typeOption<String>Conditional: at least one of contract_code / contract_typeNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • QuoteClient: Result<Option<FutureContractInfo>, TigerError>. See FutureContractInfo for fields.

Optional contract.

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_current_future_contract(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_current_future_contract(FutureContractSingleRequest { contract_code: Some("ES2609".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

{
  "continuous": false,
  "trade": true,
  "type": "FUT",
  "contractCode": "ES2509",
  "ibCode": "ES",
  "name": "E-mini S&P 500",
  "contractMonth": "202509",
  "lastTradingDate": "2025-09-19"
}

Rate limit

The base rate limit is 120 requests/min.


Get Future Continuous Contracts

Signature


pub async fn get_future_continuous_contracts( &self, req: FutureContinuousContractsRequest, ) -> Result<Vec<FutureContractInfo>, TigerError>

Description

contract_type required.

Parameters

ParameterRust typeRequirementSDK default
req.contract_typeOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • QuoteClient: Result<Vec<FutureContractInfo>, TigerError>. See FutureContractInfo for fields.

Continuous contracts.

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_future_continuous_contracts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_continuous_contracts(FutureContinuousContractsRequest { contract_type: Some("ES".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "continuous": false,
    "trade": true,
    "type": "FUT",
    "contractCode": "ES2509",
    "ibCode": "ES",
    "name": "E-mini S&P 500",
    "contractMonth": "202509",
    "lastTradingDate": "2025-09-19"
  }
]

Rate limit

The base rate limit is 120 requests/min.


Get Future Contract

Signature


pub async fn get_future_contract( &self, req: FutureContractSingleRequest, ) -> Result<Vec<FutureContractInfo>, TigerError>

Description

Query by contract code or type; normalizes object to Vec.

Parameters

ParameterRust typeRequirementSDK default
req.contract_codeOption<String>Conditional: at least one of contract_code / contract_typeNone (omitted)
req.contract_typeOption<String>Conditional: at least one of contract_code / contract_typeNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • QuoteClient: Result<Vec<FutureContractInfo>, TigerError>. See FutureContractInfo for fields.

Contracts.

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_future_contract(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_contract(FutureContractSingleRequest { contract_code: Some("ES2609".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "continuous": false,
    "trade": true,
    "type": "FUT",
    "contractCode": "ES2509",
    "ibCode": "ES",
    "name": "E-mini S&P 500",
    "contractMonth": "202509",
    "lastTradingDate": "2025-09-19"
  }
]

Rate limit

The base rate limit is 120 requests/min.


Get Future Contracts

Signature


pub async fn get_future_contracts( &self, exchange_code: &str, ) -> Result<Vec<FutureContractInfo>, TigerError>

Description

Exchange code required.

Parameters

ParameterRust typeRequirementSDK default
exchange_code&strRequiredNone

Return

  • QuoteClient: Result<Vec<FutureContractInfo>, TigerError>. See FutureContractInfo for fields.

Contract code/month/dates/currency/multiplier/tick/exchange.

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_future_contracts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_contracts("CME").await?;

    Ok(())

}

Response example

[
  {
    "continuous": false,
    "trade": true,
    "type": "FUT",
    "contractCode": "ES2509",
    "ibCode": "ES",
    "name": "E-mini S&P 500",
    "contractMonth": "202509",
    "lastTradingDate": "2025-09-19"
  }
]

Rate limit

The base rate limit is 120 requests/min.


Get Futures Market Depth

Signature


pub async fn get_future_depth( &self, req: FutureDepthRequest, ) -> Result<Vec<FutureDepth>, TigerError>

Description

contract_codes required.

Parameters

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

Return

Contract and book levels.

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_future_depth(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_depth(FutureDepthRequest { contract_codes: Some(vec!["ES2609".into()]), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "contractCode": "ES2509",
    "timestamp": 1738180800000,
    "asks": [
      {
        "price": 5638.25,
        "volume": 120
      },
      {
        "price": 5638.5,
        "volume": 85
      }
    ],
    "bids": [
      {
        "price": 5638.0,
        "volume": 95
      },
      {
        "price": 5637.75,
        "volume": 110
      }
    ]
  }
]

Get Future Exchange

Signature


pub async fn get_future_exchange(&self) -> Result<Vec<FutureExchange>, TigerError>

Description

Supported exchanges; no parameters.

Parameters

ParameterRust typeRequirementSDK default
none-Required by Rust typeNone

Return

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

code/name/zone_id.

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_future_exchange(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_exchange().await?;

    Ok(())

}

Response example

[
  {
    "code": "CME",
    "name": "Chicago Mercantile Exchange",
    "zoneId": "America/Chicago"
  }
]

Rate limit

The base rate limit is 10 requests/min.


Get Future History Main Contract

Signature


pub async fn get_future_history_main_contract( &self, req: FutureHistoryMainContractRequest, ) -> Result<Vec<FutureMainContractHistory>, TigerError>

Description

Contract codes and optional millisecond range.

The Rust SDK wire method future_main_contract is not registered by the current server and is therefore unsupported.

Parameters

ParameterRust typeRequirementSDK default
req.contract_codesOption<Vec<String>>Required by the server; not prevalidated by the SDKNone (omitted)
req.begin_timeOption<i64>OptionalNone (omitted)
req.end_timeOption<i64>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

contract/symbol/begin/end dates.

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_future_history_main_contract(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_history_main_contract(FutureHistoryMainContractRequest { contract_codes: Some(vec!["ES2609".into()]), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "contractCode": "ES2509",
    "symbol": "ES",
    "beginDate": "2025-06-20",
    "endDate": "2025-09-19"
  }
]

Get Future Kline

Signature


pub async fn get_future_kline( &self, mut req: FutureKlineRequest, ) -> Result<Vec<FutureKline>, TigerError>

Description

Contract and period required; SDK changes Some(0) times to Some(-1).

Parameters

ParameterRust typeRequirementSDK default
req.contract_codesOption<Vec<String>>Conditional: at least one of contract_code / contract_codesNone (omitted)
req.contract_codeOption<String>Conditional: at least one of contract_code / contract_codesNone (omitted)
req.periodOption<String>Required by the server; not prevalidated by the SDKNone (omitted)
req.begin_timeOption<i64>OptionalSDK changes Some(0) to Some(-1)
req.end_timeOption<i64>OptionalSDK changes Some(0) to Some(-1)
req.begin_indexOption<i32>OptionalNone (omitted)
req.end_indexOption<i32>OptionalNone (omitted)
req.limitOption<i32>OptionalNone (omitted)
req.page_tokenOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

contract/token/items.

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_future_kline(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_kline(FutureKlineRequest { contract_code: Some("ES2609".into()), period: Some("day".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "contractCode": "ES2509",
    "nextPageToken": "eyJzIjoiMTczODE4MDgwMDAwMCJ9",
    "items": [
      {
        "time": 1738094400000,
        "volume": 1423500,
        "open": 5610.25,
        "close": 5638.0,
        "high": 5645.75,
        "low": 5605.25,
        "lastTime": 1738180799000,
        "openInterest": 2150000,
        "settlement": 5635.5
      }
    ]
  }
]

Rate limit

The base rate limit is 60 requests/min. Methods documented here that use future_kline share this quota.


Get Future Kline By Page

Signature


pub async fn get_future_kline_by_page( &self, req: FutureKlineByPageRequest, ) -> Result<Vec<FutureKlineItem>, TigerError>

Description

Client pagination defaults: page 200, total 1000; absent/zero times become -1.

Parameters

ParameterRust typeRequirementSDK default
req.contract_codeOption<String>Required by the server; not prevalidated by the SDKNone (omitted)
req.periodOption<String>Required by the server; not prevalidated by the SDKNone (omitted)
req.begin_timeOption<i64>OptionalNone (omitted)
req.end_timeOption<i64>OptionalNone (omitted)
req.total_sizeOption<i32>Optional1000 when None
req.page_sizeOption<i32>Optional200 when None
req.langOption<String>OptionalNone (omitted)

Return

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

Flattened items.

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_future_kline_by_page(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_kline_by_page(FutureKlineByPageRequest { contract_code: Some("ES2609".into()), period: Some("day".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "time": 1738180800000,
    "volume": 1523847,
    "open": 5620.5,
    "close": 5638.0,
    "high": 5645.75,
    "low": 5605.25,
    "lastTime": 1738180800000,
    "openInterest": 2150000
  }
]

Rate limit

The base rate limit is 60 requests/min. Methods documented here that use future_kline share this quota.


Get Futures Real-Time Quotes

Signature


pub async fn get_future_real_time_quote( &self, req: FutureRealTimeQuoteRequest, ) -> Result<Vec<FutureQuote>, TigerError>

Description

contract_codes and futures market data access required.

Parameters

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

Return

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

Price, BBO, volume, OI, OHLC, settlement, limits.

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_future_real_time_quote(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_real_time_quote(FutureRealTimeQuoteRequest { contract_codes: Some(vec!["ES2609".into()]), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "contractCode": "ES2509",
    "latestPrice": 5638.0,
    "latestSize": 15,
    "latestTime": 1738180800000,
    "bidPrice": 5638.0,
    "askPrice": 5638.25,
    "bidSize": 300,
    "askSize": 300
  }
]

Rate limit

The base rate limit is 120 requests/min.


Get Future Trade Ticks

Signature


pub async fn get_future_trade_ticks( &self, req: FutureTradeTicksRequest, ) -> Result<Vec<FutureTradeTickItem>, TigerError>

Description

v3; contract required; SDK default end_index=30.

Parameters

ParameterRust typeRequirementSDK default
req.contract_codeOption<String>Required by the server; not prevalidated by the SDKNone (omitted)
req.begin_indexOption<i32>OptionalNone (omitted)
req.end_indexOption<i32>OptionalSDK changes None to 30
req.limitOption<i32>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

contract/index/time/price/volume/direction.

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_future_trade_ticks(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_trade_ticks(FutureTradeTicksRequest { contract_code: Some("ES2609".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "contractCode": "ES2509",
    "index": 1,
    "time": 1738180800000,
    "price": 5638.25,
    "volume": 1523847,
    "direction": "BUY"
  }
]

Rate limit

The base rate limit is 120 requests/min.


Get Future Trading Times

Signature


pub async fn get_future_trading_times( &self, req: FutureTradingTimesRequest, ) -> Result<Option<FutureTradingTime>, TigerError>

Description

Contract required; trading date optional.

Parameters

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

Return

contract/biz_date/zone/segments.

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_future_trading_times(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = quote.get_future_trading_times(FutureTradingTimesRequest { contract_code: Some("ES2609".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

{
  "contractCode": "ES2509",
  "bizDate": "2025-01-29",
  "zone": "America/Chicago",
  "tradingTimes": [
    {
      "start": 1738015800000,
      "end": 1738094400000,
      "type": "TRADING"
    },
    {
      "start": 1738094400000,
      "end": 1738101600000,
      "type": "POST_MARKET"
    }
  ]
}

Rate limit

The base rate limit is 60 requests/min.



Did this page help you?