Yahoo Finance
Widely-used source for historical and real-time market data across global equities, ETFs, forex, and crypto. Accessed primarily via the yfinance Python library. Unofficial API — ideal for research and prototyping; not suitable as a sole source for production commercial pipelines.
No quickstart snippet available for this source yet.
Cost
Free
Access type
open
Signup required
No
Update alerts
Not offered
Coverage
global
Update frequency
real-time
Source Documentation
What You're Getting
yfinance provides market data — OHLCV price history, real-time quotes, options chains, earnings dates, analyst estimates, and basic fundamentals — for global equities, ETFs, indices, forex, and crypto. The yfinance library wraps the unofficial API and handles response parsing. Price history is split and dividend-adjusted. For most research and prototyping use cases, it's the fastest path to clean price data with no setup.
Ingestion Strategy
import yfinance as yf
# Single ticker — full history
spy = yf.Ticker("SPY")
hist = spy.history(period="max")
print(f"SPY rows: {len(hist)}, from {hist.index.min().date()} to {hist.index.max().date()}")
# Batch download
tickers = ["SPY", "QQQ", "GLD", "TLT"]
batch = yf.download(tickers, start="2010-01-01", auto_adjust=True)
closes = batch["Close"]
# Fundamentals
msft = yf.Ticker("MSFT")
info = msft.info
print(info.get("trailingPE"), info.get("totalRevenue"))
Rate Limits & API Details
- No published limit; ~2,000 req/hour before soft throttling
- yfinance:
pip install yfinance - Periods:
1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max - Intervals:
1m(last 7d),1h(last 730d),1d,1wk,1mo
Schema Stability
Unstable by nature — Yahoo periodically changes internal endpoints without notice. Pin yfinance to a known-good version in production. The history() DataFrame columns (Open, High, Low, Close, Volume, Dividends, Stock Splits) have been consistent for years.
Data Quality Gotchas
- Unofficial API: may break without notice
- Adjusted prices: use
auto_adjust=True(default in recent versions) explicitly - Timezone handling: intraday data timezone varies by exchange — normalize to UTC on ingest
- Missing fundamentals: some fields are empty for non-US or smaller tickers
Notable Datasets
8 total- ▸ Global Equities (70,000+ tickers)
- ▸ ETFs and Indices
- ▸ Forex pairs
- ▸ Cryptocurrency
- ▸ Options chains
- ▸ Earnings calendars
- ▸ Analyst estimates
- ▸ Basic fundamentals
Access
- Cost
- Free
- Access type
- Open
- Update alerts
- Not offered
Data Profile
- Coverage
- Global
- Frequency
- Real-time
- History from
- 1962
- Source updated
- Jan 2025
Data Formats
How to Access
- 🌐 Browser/UI
- ⚡ Automation Ready programmable
Index entry
Added: May 2, 2026
Last indexed: May 2, 2026
~ Community-sourced entry