NSE Historical Data for Free: Every Source Compared
Where to get NSE historical data free in 2026: NSE's bhavcopy archives, broker APIs, yfinance, jugaad-data, Kaggle and TradingView, and the traps in each.
For daily data, NSE’s own bhavcopy archives are free, official and go back well over a decade, and they include every futures and options contract that traded on each day. For intraday candles, the best free sources in November 2026 are broker APIs: Angel One’s SmartAPI has intraday history back to 2016 and Upstox has minute candles from January 2022, both free with an account. Fyers’ free tier now stops at one year of intraday history, and Dhan and Zerodha charge for data. What nobody gives away is minute-level history for expired options, which is the data most option strategies need.
Last updated: November 2026.
NSE’s own archives: the free source people skip
NSE publishes a bhavcopy every trading day: one row per security in the cash market file, one row per contract in the F&O file. They’re under Reports on nseindia.com, with older files in the Archives tab.
The format changed on 8 July 2024. NSE discontinued the old CM bhavcopy (circular 62424, dated 12 June 2024) in favour of the “CM-UDiFF Common Bhavcopy Final”. If you script downloads, both URL patterns worked when I tested them this month, for files as old as 2010:
- New:
https://nsearchives.nseindia.com/content/cm/BhavCopy_NSE_CM_0_0_0_20261103_F_0000.csv.zip(usefoandFOfor derivatives). - Old:
https://nsearchives.nseindia.com/content/historical/DERIVATIVES/2015/JAN/fo01JAN2015bhav.csv.zip(anEQUITIESpath andcm…bhavnames for cash).
The two formats use different column names (SYMBOL, EXPIRY_DT, STRIKE_PR in the old one; TckrSymb, XpryDt, StrkPric in the new), so any loader that spans 2024 needs two parsers.
The F&O file is the underrated part. The one for 3 November 2026 has 35,865 rows, each with open, high, low, close, settlement price, open interest and the underlying’s price. That’s free daily data for every contract on every day in the archive, expired ones included. The limit: a daily candle can’t tell you whether a 9:20 entry and a 15:15 exit made money.
niftyindices.com adds index history, including total returns indices and P/E. Intraday history straight from the exchange is a licensed product sold through NSE Data & Analytics, priced for institutions. And NSE’s site blocks clients that hammer it, so download a few files at a time and cache everything.
Which broker APIs give free intraday data?
Angel One SmartAPI is free, historical data included, according to its FAQ, which lists NSE equity and F&O intraday history from 2016. Each request is capped at 30 days of 1-minute candles, so a decade for one stock is about 122 requests (3,650 ÷ 30). At the limit of 80 requests a minute, 500 stocks take about 13 hours to download. The FAQ is blunt that this data “is not adjusted for any corporate actions”, and I couldn’t find a documented endpoint for expired contracts. Setup is in our SmartAPI guide.
Upstox is free too. Its v3 historical API serves minute candles (any interval from 1 to 300) from January 2022 and daily candles from January 2000 (Upstox docs). Expired derivatives have their own APIs, but they’re part of Upstox Plus, an account plan with higher brokerage, and the docs say the list of expiries covers up to six months back. Details are in our Upstox API guide.
Fyers now splits its API into a free Standard plan and a Prime plan at ₹499 a month plus GST (Fyers plans page, updated 14 October 2026). Standard gives you 1 year of intraday candles, 5 years of daily, 2 years of daily data for expired F&O, and 10 requests a day for expired intraday F&O. Prime opens the full history: 5+ years intraday, 25+ years daily and 7+ years of expired F&O daily data.
Dhan charges ₹499 plus taxes a month for its Data APIs (Dhan support). That buys 1 to 60-minute candles for the last 5 years on active instruments, plus daily data from each stock’s listing. It also has the most useful expired-options endpoint I’ve found: minute data for 5 years, ATM and up to 10 strikes either side, with OI and implied volatility. The catch is that it rolls by moneyness. If NIFTY opens at 24,000 and climbs to 24,100, the “ATM” series switches from the 24,000 strike to the 24,100 strike midway through the day (Dhan explains it here). A straddle sold at 24,000 at 9:20 is now in a different series, and you have to track the offset yourself.
Zerodha Kite Connect includes historical candles in its ₹500-a-month plan. Its continuous=1 flag returns day candles for expired futures, but Kite’s docs say instrument tokens for expired contracts can’t be fetched from the API unless you cached them yourself. If you didn’t save the token before expiry, that option’s history is out of reach.
Python libraries: yfinance, jugaad-data and nsepy
yfinance reads Yahoo Finance, which lists NSE stocks with a .NS suffix (RELIANCE.NS) and NIFTY 50 as ^NSEI. It’s unofficial but actively maintained (1.8.0 came out on 3 November 2026), and its source code spells out the intraday limits: 1-minute data only for the last 30 days, about a week per request; 2 to 90-minute data for 60 days; hourly for 730 days. It has no futures or options, and auto_adjust=True is the default, so prices come adjusted for splits and dividends and won’t match NSE’s official close.
jugaad-data is the maintained wrapper around NSE’s site (0.37.0 shipped on 22 October 2026). It downloads equity and F&O bhavcopies (bhavcopy_save, bhavcopy_fo_save), daily stock history (stock_df) and index history from niftyindices.com, with a cache so you don’t get blocked. No intraday history.
nsepy is the one most old tutorials use. Its last release was in March 2020, and its README says the author is “unable to maintain this library” and that it targets NSE’s old website. Skip it.
Can you use Kaggle or TradingView data?
Kaggle has community uploads such as “NSE - Nifty 50 Index Minute data (2015 to 2026)”. Handy for a first experiment, but you don’t know how the uploader handled gaps, and it updates whenever its owner gets round to it.
TradingView’s “Download chart data” starts at the Plus plan, per its pricing page, and exports are capped by the plan’s bar limit: 10,000 bars on Plus, 20,000 on Premium, up to 40,000 on Ultimate. An NSE session from 9:15 to 15:30 is 375 one-minute bars, so 10,000 bars is about 26 trading days and 40,000 is about 106. Fine for checking one setup, not a backtest dataset.
Free NSE data sources compared
| Source | Cost (Nov 2026) | Intervals | History depth | Expired F&O | Reliability |
|---|---|---|---|---|---|
| NSE bhavcopy archives | Free | Daily | 15+ years, two file formats | Yes, every contract, daily only | Official |
| Angel One SmartAPI | Free with account | 1 min to daily | Intraday from 2016 | No documented endpoint | Official API, unadjusted |
| Upstox API | Free with account | 1 to 300 min, daily | Minutes from Jan 2022, daily from 2000 | Upstox Plus only, about 6 months of expiries | Official API |
| Fyers API, Standard | Free with account | Minutes to monthly | Intraday 1 year, daily 5 years | Daily 2 years; intraday 10 calls a day | Official API |
| Fyers API, Prime | ₹499/month + GST | Seconds to monthly | Intraday 5+ years, daily 25+ years | Daily 7+ years | Official API |
| Dhan Data APIs | ₹499/month + taxes | 1, 5, 15, 25, 60 min, daily | Intraday 5 years | Options by moneyness, 5 years, minute level | Official API |
| Zerodha Kite Connect | ₹500/month | 1 min to daily | Several years | Futures daily via continuous flag | Official API |
| yfinance | Free | 1 min to monthly | 1-min for 30 days, hourly for 730 days | None | Unofficial; adjusted by default |
| Kaggle uploads | Free | Varies | Whatever was uploaded | Rarely | Unknown provenance |
| TradingView export | Plus plan or above | Chart interval | 10K to 40K bars by plan | No | Fine for spot checks |
The data traps that wreck backtests
Getting the data is the easy half.
Survivorship bias. Test “the Nifty 50” using today’s list and you’ve dropped the companies that fell out of the index, usually because they fell, and given yourself the winners that joined later, before they’d earned it. Broker instrument files only list live symbols. Each day’s bhavcopy has every stock that traded that day, so you can rebuild the universe date by date.
Splits, bonuses and dividends. Bhavcopy prices are raw, and so is Angel One’s history. A 1:1 bonus halves the price overnight, say from ₹2,400 to ₹1,200, which an unadjusted backtest reads as a 50% crash that fires every stop-loss. yfinance adjusts by default. The worst case is joining adjusted history from one source to raw recent candles from another, which leaves a fake gap at the seam. Pick one convention.
Expired options are the hardest free data to get. Daily candles are free from the F&O bhavcopy. Minute candles mean Dhan’s rolling data, Upstox Plus, Fyers Prime, or buying from a vendor. Contract terms also move under you: NIFTY’s lot size went from 75 to 65 (first monthly expiry on the new size was 27 January 2026), and weekly NIFTY options moved from Thursday to Tuesday expiry from 1 September 2025. A backtest that spans those dates with today’s lot size and today’s weekday is wrong twice.
Timestamps and time zones. Fyers and Dhan return epoch seconds. Treat them as local time and your 9:15 candle turns up at 3:45 am. Then check what the timestamp marks. Upstox stamps each candle with its start time, so the 9:15 one-minute candle closes at 9:16. Treat its close as known at 9:15 and you’ve built lookahead bias into every trade. Diwali’s muhurat session also appears as a short trading day.
Missing candles. If an illiquid option doesn’t trade in a minute, most sources just skip that candle. Forward-fill it and you’ve invented prices you could never have traded at. A quick check: a full NSE session has 375 one-minute bars, so count bars per day and look hard at any day well short of that.
Index vs futures, and the rollover seam. Nobody trades the NIFTY index itself. Futures trade at a premium or discount that shrinks to zero by expiry, so fills computed on index prices aren’t fills you’d get. Index candles from most sources also show zero volume, so volume filters and VWAP need futures data. Continuous futures series (Kite’s continuous flag, Fyers’ cont_flag) stitch contracts together, and every roll leaves a jump equal to the gap between the expiring and next contract. Left unadjusted, that’s twelve fake gaps a year.
When free data is enough, and when it isn’t
Free data covers more than people think. A daily or swing strategy on stocks can be tested properly on bhavcopies alone, if you rebuild the universe date by date and handle corporate actions. An intraday idea on index futures or liquid stocks over the last two to four years is well served by Angel One or Upstox. For the first question about any idea, “is there anything here at all?”, even yfinance will do.
It stops being enough for minute-level option strategies tested over several years, which is exactly what a lot of Indian retail algo traders want to run. There, the data either isn’t free or comes with conditions: Dhan’s rolling strikes, Upstox’s six months, Fyers’ ten calls a day. It’s also not enough for anything that depends on what happened inside a candle.
My view: for one idea, stitch free data together and learn where the bodies are buried. For a portfolio of option strategies tested over five or more years, the hours spent cleaning data cost more than the data. Pay for it, or use a tool that already has it, and spend the time on avoiding overfitting.
We build INDfolio, so weigh this accordingly: its backtester comes with NSE equity, futures, options and index history already loaded (3 years on the free plan, 7+ years on paid plans), so you don’t have to source any of the above yourself. Whatever tool you use, ask how it handles the traps in the last section. If backtesting is new to you, our piece on institutional-grade backtesting covers what a credible test needs beyond the data.
Frequently asked questions
Where can I download NSE bhavcopy for free? From the Reports section of nseindia.com, with older files in the Archives tab. Since 8 July 2024 the cash market file is the “CM-UDiFF Common Bhavcopy Final”; the F&O bhavcopy has one row per contract per day.
Does NSE provide free intraday historical data? No. NSE’s free archives are end-of-day files. Intraday history from the exchange is a paid, licensed product sold through NSE Data & Analytics.
Which broker gives free 1-minute historical data for NSE? Angel One’s SmartAPI and Upstox both do at no charge. Angel One’s history goes back to 2016 per its FAQ; Upstox’s minute data starts in January 2022. Fyers’ free plan covers the last year only.
Is yfinance data reliable for NSE stocks? For daily data on liquid stocks it’s usable, but it’s unofficial and adjusted for splits and dividends by default. Intraday is limited to 30 days for 1-minute bars, and it has no futures or options.
How can I get historical data for expired Nifty options? Daily candles for every expired contract are free in NSE’s F&O bhavcopy. Minute-level data means Dhan’s Data APIs (rolling by moneyness), Upstox Plus or Fyers Prime.
Does nsepy still work? Don’t count on it. Its last release was in March 2020 and its README says it’s no longer maintained. jugaad-data is the maintained alternative for NSE’s current website.
Put this into practice
Build and backtest your own strategy free — no coding, no card.
Related guides
Overfitting in Trading: How to Tell If Your Backtest Lies
Overfitting in trading, diagnosed: why the best of 200 backtests looks good by luck, plateau vs spike, walk-forward, deflated Sharpe and a smell test.
10 min
Top 10 Backtesting Websites in India for Traders (2026)
The 10 best websites to backtest trading strategies in India — options backtesters, no-code platforms and chart tools — compared honestly for NSE traders.
5 min
What Is Institutional-Grade Backtesting?
What institutional-grade backtesting means — point-in-time data, no look-ahead, real Indian costs, walk-forward — and how Indian traders get it without code.
7 min