alpaca-data 0.10.2

High-performance Rust client for Alpaca Market Data API
Documentation
use std::error::Error;

use alpaca_data::{Client, options};

fn authenticated_client() -> Result<Client, Box<dyn Error>> {
    let mut builder = Client::builder()
        .api_key(std::env::var("APCA_API_KEY_ID")?)
        .secret_key(std::env::var("APCA_API_SECRET_KEY")?);

    if let Ok(base_url) = std::env::var("APCA_API_DATA_URL") {
        builder = builder.base_url(base_url);
    }

    Ok(builder.build()?)
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = authenticated_client()?;

    let response = client
        .options()
        .chain(options::ChainRequest {
            underlying_symbol: "AAPL".into(),
            feed: None,
            r#type: Some(options::ContractType::Call),
            strike_price_gte: Some(180.0),
            strike_price_lte: Some(220.0),
            expiration_date: None,
            expiration_date_gte: Some("2026-04-01".into()),
            expiration_date_lte: Some("2026-06-30".into()),
            root_symbol: None,
            updated_since: None,
            limit: Some(5),
            page_token: None,
        })
        .await?;

    println!("{response:#?}");
    Ok(())
}