finzdata 0.2.0

Official Rust client for FinzData point-in-time market data: US stocks since 2000 (delisted included), every futures contract since 2007, point-in-time GEX, FX, indexes, crypto, COT, SEC fundamentals and vintage macro
Documentation

finzdata (Rust)

Official Rust client for FinzData: point-in-time market data for AI, quants, data scientists and financial analysts.

  • 16,000+ US stocks that have traded on NYSE and Nasdaq since 2000, 9,000+ delisted included; 5,100+ ETFs; daily and 1/5/15/30-minute and hourly bars
  • 139 futures markets with every contract since 2007, plus continuous series
  • Point-in-time options gamma (GEX) for single stocks, ETFs and the major indexes: gamma flip, call and put walls, net/call/put gamma, per-strike profiles
  • FX bars for 79 currency pairs since 2010, 123 indexes (SPX, NDX, VIX term structure, DXY and more), 512 crypto pairs, tick trades and the Global Macro Pulse (shipping, ports, air and toll traffic)
  • CFTC Commitments of Traders since 1986, SEC fundamentals as filed, 13F holdings, 22,700+ macro series with every vintage kept
[dependencies]
finzdata = "0.1"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
#[tokio::main]
async fn main() -> finzdata::Result<()> {
    let fz = finzdata::Client::new()?;                      // reads FINZDATA_API_KEY
    let bars = fz.prices("AAPL", Some("2020-01-01"), None, None).await?;
    let gex  = fz.gex("SPY", Some("2024-01-01"), None).await?;
    let cpi  = fz.macro_obs("CPIAUCSL", None, None, None, Some("2022-06-30")).await?; // as known then
    println!("{} bars, {} GEX days, {} CPI prints", bars.len(), gex.len(), cpi.len());
    Ok(())
}

No async runtime? Use finzdata::blocking::Client with the same methods. Any other endpoint: fz.get::<finzdata::Row>("/v1/...", &params).

Get a free API key with just an email at https://finzdata.com. Full history: https://finzdata.com/shop. Docs: https://finzdata.com/docs

Licensed under MIT or Apache-2.0.