Once you learn how to read NSE bhavcopy files, you get the exchange’s own record of each stock’s trading day: open, high, low, close, volume, turnover and the number of trades. It comes straight from the National Stock Exchange, not from a broker app or someone’s screenshot. The file is free, it’s published for every session, and it is the same kind of data that feeds the “top gainers”, “volume shockers” and “high delivery stocks” lists doing the rounds after the close. Below we cover where to download it, what the important columns mean, how the closing price is actually worked out, how to pair it with NSE’s delivery data, and the slip-ups that catch first-time readers. Every example uses real rows from NSE’s files for the October 16, 2026 session.
For the day-to-day context behind these numbers, keep our Stock Market Today India hub open in another tab. And if you want to turn the volume columns into trading signals, our guide to volume confirmation in trading picks up where this one stops.
In this article
- What is the NSE bhavcopy?
- Where to download the bhavcopy
- How to read NSE bhavcopy columns that actually matter
- Series codes: why EQ, BE and SM matter
- Closing price vs last traded price
- Adding delivery data to the bhavcopy
- Build your own after-market scan in six steps
- Where first-time readers go wrong
- A few quick questions
- The evening habit worth building
What is the NSE bhavcopy?
Think of the bhavcopy as the exchange’s end-of-day price sheet. For the equity cash market, NSE now publishes it as the CM-UDiFF Common Bhavcopy Final, a zipped CSV listed on its All Reports page. UDiFF is short for Unified Distilled File Formats, a standard layout that replaced the older files. The same page says the legacy “CM – Bhavcopy (csv)” and “CM – Common Bhavcopy (csv)” files were discontinued with effect from July 8, 2024, under NSE Circular No. 62424 dated June 12, 2024. So if an old spreadsheet or script of yours suddenly broke, that’s the reason.
The October 16, 2026 file is called BhavCopy_NSE_CM_0_0_0_20261016_F_0000.csv. The date sits in the middle in YYYYMMDD order, and the F tells you it’s the final version. That single file had 3,675 rows, one for every security traded in NSE’s cash market that day. Large caps like Reliance Industries share space with SME stocks, sovereign gold bonds and government securities.
Where to download the bhavcopy
Go to NSE’s All Reports page, pick Equities and SME, and look under the daily reports. Three items matter:
- CM-UDiFF Common Bhavcopy Final (zip): the main price and volume file, which we unpack below.
- Full Bhavcopy and Security Deliverable data: a simpler file that adds an average price and the delivery quantity for each stock.
- CM – Security-wise Delivery Positions: just the delivery data.
You’ll also see a separate 52 Week High Low Report on that page. NSE notes there that its adjusted 52-week figures account for corporate actions like bonuses, splits and rights, and that the bhavcopy is where you go for actual, unadjusted prices.
How to read NSE bhavcopy columns that actually matter
The UDiFF file carries 34 columns. A lot of them only get filled for derivatives (expiry, strike, option type, open interest) and stay empty for ordinary shares, so you can ignore them while studying stocks. For the cash market, these are the ones to know:
| Column | What it holds |
|---|---|
| TradDt / BizDt | Trade date and business date of the session |
| Sgmt / Src | Segment (CM for capital market) and source exchange (NSE) |
| FinInstrmTp | Instrument type; STK for every row in the October 16 cash file |
| ISIN | The security’s unique identification code |
| TckrSymb / FinInstrmNm | Trading symbol (for example INFY) and full security name |
| SctySrs | Series, such as EQ, BE or SM (explained in the next section) |
| OpnPric / HghPric / LwPric | Day’s open, high and low |
| ClsPric | Official closing price |
| LastPric | Price of the last trade |
| PrvsClsgPric | Previous session’s closing price |
| TtlTradgVol | Total number of shares traded |
| TtlTrfVal | Total traded value, in rupees |
| TtlNbOfTxsExctd | Number of trades executed |
Take the Infosys (INFY, EQ series) row for October 16, 2026. It opened at ₹1,127.50, hit a high of ₹1,167.85 and a low of ₹1,122.00, and closed at ₹1,161.20 against a previous close of ₹1,110.00. That’s a gain of ₹51.20, or about 4.61% on the previous close. Volume was 2,55,66,304 shares over 3,12,192 trades, and traded value came to ₹29,46,24,99,206.40, roughly ₹2,946 crore.
One thing to notice: traded value in the UDiFF file is in plain rupees. A quick check is to divide value by volume. For Infosys you get about ₹1,152.40 per share, which lines up with the average price NSE shows for the stock in its delivery file. If your division lands well outside the day’s high-low range, you’ve likely picked the wrong column or mixed up units.
Dividing traded value by volume is the fastest check that you are reading a bhavcopy correctly: the answer should always fall between the day’s low and high.
Series codes: why EQ, BE and SM matter
The SctySrs column tells you how a security trades and settles, and that changes how you read everything else in the row. NSE’s legend of series lists the main codes:
- EQ: fully paid equity shares and ETFs in rolling settlement. NSE’s market segments page says rolling-settlement trades settle on a T+1 basis.
- BE and BZ: equity shares in trade-for-trade settlement. BZ covers securities shifted to trade-for-trade (Z category) for not meeting certain listing conditions.
- SM and ST/SZ: SME platform shares, in rolling and trade-for-trade settlement respectively.
- GB, GS, SG, TB: gold bonds, government securities, state development loans and treasury bills.
- IV and RR: units of InvITs and REITs.
In the October 16, 2026 file, 2,691 rows were EQ, 372 were SM, 228 were BE, 76 were ST, 49 were GS, 41 were GB and 30 were BZ. Why should you care? NSE’s market segments page explains that trade-for-trade scrips settle trade by trade, with no netting off allowed. BE trades aren’t netted against each other the way EQ trades are, so a big volume number in a BE row means something quite different from the same number in EQ. Filter by series before you rank anything, or your “top volume” list ends up mixing very different markets.
Closing price vs last traded price
Most beginners assume the close is just the day’s last trade. On NSE it usually isn’t, and the bhavcopy puts both numbers next to each other.
Zerodha’s support note on why LTP and closing price differ says that for non-F&O stocks, the exchange calculates the close as a weighted average of trades in the last 30 minutes, from 3:00 PM to 3:30 PM. For stocks that have derivatives contracts, the close is now set in the Closing Auction Session. NSE’s Closing Auction Session page says Phase 1 of CAS covers only cash-segment stocks with derivatives available, runs as a separate 20-minute session from 3:15 PM to 3:35 PM, and uses the volume-weighted average price of trades between 3:00 PM and 3:15 PM as the auction’s reference price. Our report on the SEBI closing auction session revamp covers the latest changes to how this works.
You can see the gap in the October 16 file. 20 Microns (20MICRONS, EQ), which isn’t in NSE’s F&O market lot file, had a last traded price of ₹191.25 but an official close of ₹193.32. Its previous close was ₹192.42. So on the official number the stock “closed higher”, even though its final trade was below the previous close. Reliance Industries (RELIANCE, EQ), which is on the F&O list, shows ₹1,211.20 in both the close and last price columns against a previous close of ₹1,215.00, a fall of about 0.31%.
Our rule of thumb is simple. Use ClsPric for daily returns, comparisons with index moves and backtests, because that’s the exchange’s official close. Reach for LastPric only when you specifically want the final trade.
Adding delivery data to the bhavcopy
The UDiFF bhavcopy won’t tell you how many shares were actually delivered. For that you need the “Full Bhavcopy and Security Deliverable data” file, named like sec_bhavdata_full_16102026.csv for October 16, 2026. It repeats the price and volume fields in a plainer layout and adds three handy columns:
- AVG_PRICE: the day’s average traded price.
- DELIV_QTY: deliverable quantity, meaning shares not squared off within the day.
- DELIV_PER: deliverable quantity as a percentage of total traded quantity.
Here’s a unit trap that gets plenty of people. This file shows turnover in lakh rupees (the column is literally named TURNOVER_LACS), whereas the UDiFF bhavcopy shows value in rupees. For Infosys on October 16, the full file shows turnover of 2,94,624.99 lakh, which is the same roughly ₹2,946 crore you saw in the UDiFF row.
The delivery percentage is a share of that day’s traded quantity, not of the company’s total shares. Infosys had a deliverable quantity of 1,40,08,032 out of 2,55,66,304 shares traded, which gives a DELIV_PER of 54.79%. Check it yourself: 1,40,08,032 divided by 2,55,66,304 is 0.5479. HDFC Bank showed 66.16% and TCS 57.35% the same day. For a sense of what’s normal, the median delivery percentage across the 1,097 EQ-series stocks with turnover of at least ₹5 crore that day was 45.22% in the NSE file.
Two words of caution. A high delivery percentage on tiny volume tells you very little, since a single order can swing the ratio. And delivery counts shares that changed hands. Every delivered share has a buyer and a seller, so the figure alone can’t tell you whether a stock is being accumulated or dumped. Read it alongside price direction and volume against the stock’s own recent average. One more detail: in the October 16 full file, all 228 BE-series rows had a dash in the delivery columns. A blank there is not zero delivery.
Delivery percentage describes how much of one day’s trading ended in actual ownership change; it says nothing by itself about which direction the price will move next.
Build your own after-market scan in six steps
Here’s a routine we’d suggest running each evening in Excel, Google Sheets or Python, using nothing but the two NSE files:
- Download both files for the session from the All Reports page and unzip the UDiFF bhavcopy.
- Filter SctySrs to EQ so you’re comparing like with like.
- Add a change column: (ClsPric minus PrvsClsgPric) divided by PrvsClsgPric. For TCS on October 16, that’s (₹2,465.00 minus ₹2,350.00) divided by ₹2,350.00, or about 4.89%.
- Add a liquidity filter: drop rows where TtlTrfVal is below a level you pick, say ₹5 crore, so thinly traded stocks don’t crowd the list.
- Join the delivery file on symbol and series and pull in DELIV_PER.
- Sort, then read in context: stocks with a big price move, high traded value and delivery above their own usual level deserve a closer look on the chart, ideally with the indicators from our technical analysis for Indian stocks guide.
Save each day’s files with the date in the name. Give it a few weeks and you’ll have your own history, which is what makes the “compared with its usual level” step possible without paying for a data feed.
Where first-time readers go wrong
- Mixing series. Stocks can shift between EQ and trade-for-trade series after NSE’s periodic reviews, and SME, bond and ETF rows sit in the same file as the large caps.
- Confusing units. Rupees in the UDiFF bhavcopy, lakh rupees in the full delivery file.
- Treating LastPric as the close. The 20 Microns example shows the two can sit on opposite sides of the previous close.
- Forgetting corporate actions. The bhavcopy shows actual traded prices, so a split or bonus looks like a crash in a raw price series unless you adjust for it.
- Reading delivery without volume. Check traded quantity and value before reacting to any delivery percentage.
- Relying on old column names. Files from before July 8, 2024 used a different layout, so check the headers before stitching old history onto current data.
A few quick questions
Is the NSE bhavcopy free?
Yes. The daily files are on NSE’s All Reports page and need no subscription.
Why does the bhavcopy close differ from my broker’s last price?
Because the official close is calculated rather than lifted from the final trade: a 3:00 PM to 3:30 PM weighted average for non-F&O stocks, and the Closing Auction Session for stocks with derivatives.
Which file has delivery percentage?
Two of them: the “Full Bhavcopy and Security Deliverable data” file and the “CM – Security-wise Delivery Positions” file, both on the same NSE page. The UDiFF bhavcopy itself has no delivery data.
The evening habit worth building
Once you know how to read NSE bhavcopy files, you stop relying on someone else’s list of gainers, losers or delivery spikes. Start with the UDiFF bhavcopy for prices, volume, value and trade counts. Filter by series. Use the official close, not the last trade. Bring in the full delivery file when you want to judge how much of a move was carried overnight. Check your units, sanity-test value divided by volume, and read each number against the stock’s own history. It takes a few minutes each evening, and the dataset you end up with is genuinely yours.
This article is for education only and is not investment advice. Figures quoted are taken from NSE’s published files for October 16, 2026 and are used to illustrate how the data is structured. Trading and investing in securities carries risk of loss. Consult a SEBI-registered adviser before making investment decisions.

Leave a Reply
Join the conversation
Commenting is open to registered readers. Sign up with just your email — no password needed, and it takes under a minute.
Sign up to comment Log in