Skip to main content
Backtesting & Validation

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.

Anoop Thomas 10 min read

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 (use fo and FO for derivatives).
  • Old: https://nsearchives.nseindia.com/content/historical/DERIVATIVES/2015/JAN/fo01JAN2015bhav.csv.zip (an EQUITIES path and cm…bhav names 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

SourceCost (Nov 2026)IntervalsHistory depthExpired F&OReliability
NSE bhavcopy archivesFreeDaily15+ years, two file formatsYes, every contract, daily onlyOfficial
Angel One SmartAPIFree with account1 min to dailyIntraday from 2016No documented endpointOfficial API, unadjusted
Upstox APIFree with account1 to 300 min, dailyMinutes from Jan 2022, daily from 2000Upstox Plus only, about 6 months of expiriesOfficial API
Fyers API, StandardFree with accountMinutes to monthlyIntraday 1 year, daily 5 yearsDaily 2 years; intraday 10 calls a dayOfficial API
Fyers API, Prime₹499/month + GSTSeconds to monthlyIntraday 5+ years, daily 25+ yearsDaily 7+ yearsOfficial API
Dhan Data APIs₹499/month + taxes1, 5, 15, 25, 60 min, dailyIntraday 5 yearsOptions by moneyness, 5 years, minute levelOfficial API
Zerodha Kite Connect₹500/month1 min to dailySeveral yearsFutures daily via continuous flagOfficial API
yfinanceFree1 min to monthly1-min for 30 days, hourly for 730 daysNoneUnofficial; adjusted by default
Kaggle uploadsFreeVariesWhatever was uploadedRarelyUnknown provenance
TradingView exportPlus plan or aboveChart interval10K to 40K bars by planNoFine 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.

Start free
Free · No card

Create your account

By continuing you agree to our Terms and Privacy Policy.