If you are building charts, backtesting a strategy, or just tracking past performance, free historical market data is easier to get than you think. This short guide explains practical Indian-focused ways to source daily and intraday data from Yahoo and other free providers, plus tips on reliability, licensing and basic cleaning.
Many free sources offer end-of-day (EOD) prices for stocks, indices, commodities and crypto. For Indian stocks you will often see symbols like RELIANCE.NS (NSE) or TCS.BO (BSE). US-listed names show prices in US dollars; remember to convert values to Indian Rupees (INR) using a reliable FX rate — a quick rule is 1 USD ≈ ₹82 (check the current RBI or market rate before using for calculations).
A simple workflow to get EOD data quickly:
Cleaning and caveats to watch for
- Timezones: Exchanges operate in local time. Data timestamps may be in UTC or local exchange time; align them before intraday analysis.
- Corporate actions: Use adjusted close for accurate historical returns. If you rely on raw close prices, manually adjust for splits and dividends.
- Missing days and outliers: Holidays and suspension cause gaps. Fill or remove gaps depending on your analysis.
- Granularity: Free sources often provide daily data easily; intraday (minute-level) data is harder and may be limited or delayed unless you use exchange feeds or paid vendors.
- Rate limits: APIs like Alpha Vantage limit calls per minute; plan batching and caching.
Practical Indian examples and tips
- Use NSE bhavcopy if you want the official daily snapshot. It includes delivery volumes and other fields unique to Indian markets.
- For mutual funds and NAV history, check AMFI or the fund house website.
- For historical commodity prices (gold, crude), MCX gives data, and some global commodity prices are also available via Stooq or Investing.com.
- If you work with USD-denominated stocks in India-focused reports, fetch an accurate USD→INR series (RBI or forex APIs) and apply it to close prices.
Final thoughts
Free historical data sources like Yahoo Finance, NSE, Alpha Vantage and others are excellent starting points. Use manual CSV downloads for quick checks, libraries like yfinance for automation, and official exchange data when you need authoritative records. Keep an eye on adjustments, timezones and licensing to ensure your results are correct and compliant.
Many free sources offer end-of-day (EOD) prices for stocks, indices, commodities and crypto. For Indian stocks you will often see symbols like RELIANCE.NS (NSE) or TCS.BO (BSE). US-listed names show prices in US dollars; remember to convert values to Indian Rupees (INR) using a reliable FX rate — a quick rule is 1 USD ≈ ₹82 (check the current RBI or market rate before using for calculations).
- Yahoo Finance: Click a stock, go to "Historical Data", choose timeframe and frequency, then Download CSV. For programmatic access use the community library yfinance in Python (example below). It's convenient for EOD and adjusted-close values.
- NSE India (nseindia.com): Official bhavcopies and historical series are available for free. Good for accurate Indian market data and corporate action info.
- Alpha Vantage: Free API key, decent for time series with rate limits (few calls per minute). Useful for automation of smaller datasets.
- Stooq and Investing.com: Offer free CSV downloads for many tickers and indices, including global markets.
- CoinGecko / Binance: Great for crypto historical prices with free API endpoints.
- Nasdaq Data Link (Quandl): Some datasets free, others paid. Good for macro and alternative datasets.
A simple workflow to get EOD data quickly:
- Decide the symbol and exchange format (use .NS for NSE, .BO for BSE). For example, RELIANCE.NS for Reliance Industries on NSE.
- Try the website first (Yahoo, NSE). If manual download is enough, you get a clean CSV with dates and prices.
- For automation, use APIs or libraries. With yfinance: import yfinance as yf; data = yf.download("RELIANCE.NS", start="2020-01-01", end="2023-12-31"); data.to_csv("reliance.csv")
- Always check Adjusted Close if you need returns adjusted for splits and dividends.
- Convert foreign-currency prices to INR using RBI rates or a reliable FX provider if you need local currency reporting.
Cleaning and caveats to watch for
- Timezones: Exchanges operate in local time. Data timestamps may be in UTC or local exchange time; align them before intraday analysis.
- Corporate actions: Use adjusted close for accurate historical returns. If you rely on raw close prices, manually adjust for splits and dividends.
- Missing days and outliers: Holidays and suspension cause gaps. Fill or remove gaps depending on your analysis.
- Granularity: Free sources often provide daily data easily; intraday (minute-level) data is harder and may be limited or delayed unless you use exchange feeds or paid vendors.
- Rate limits: APIs like Alpha Vantage limit calls per minute; plan batching and caching.
Quick note: Free data is great for research and learning. For commercial use, redistribution, or high-frequency trading you may need paid, licensed feeds. Always read each provider's terms of use and respect rate limits to avoid being blocked.
Practical Indian examples and tips
- Use NSE bhavcopy if you want the official daily snapshot. It includes delivery volumes and other fields unique to Indian markets.
- For mutual funds and NAV history, check AMFI or the fund house website.
- For historical commodity prices (gold, crude), MCX gives data, and some global commodity prices are also available via Stooq or Investing.com.
- If you work with USD-denominated stocks in India-focused reports, fetch an accurate USD→INR series (RBI or forex APIs) and apply it to close prices.
Final thoughts
Free historical data sources like Yahoo Finance, NSE, Alpha Vantage and others are excellent starting points. Use manual CSV downloads for quick checks, libraries like yfinance for automation, and official exchange data when you need authoritative records. Keep an eye on adjustments, timezones and licensing to ensure your results are correct and compliant.