An honest scope note. It is better to know the limits before you build something on top of this than to discover them halfway through.
What you get
- Daily, end-of-day records for BSE-listed securities in the equity segment — one row per trading day.
- Thirteen columns: date, the four price points, WAP, volume, trade count, turnover, the two delivery fields, and the two spread fields. Each one is explained here.
- Long ranges in one file. Multi-year requests are fetched and stitched into a single workbook, with dates written as real spreadsheet dates, the header row frozen and filters enabled.
- Around 5,000 active equity scrips, searchable by symbol, six-digit scrip code, or company name.
What you do not get
Anything intraday
No ticks, no minute or hourly bars, no order book, no bid-ask data. One row per day is the finest granularity available here, and the daily summary cannot be decomposed into what happened when.
Adjusted prices
Prices are as-traded. Splits, bonuses and dividends leave visible steps in the series. This is deliberate, and handling it is a guide of its own.
Indices
The Sensex and other BSE indices are not available through this tool. The searchable universe is equity scrips, and an index is not one. If you want to benchmark a stock against an index you will need to source the index series separately.
Derivatives, debt, and most non-equity instruments
No futures, no options, no bonds. Some ETFs and fund units appear in the scrip list because they trade in the equity segment, but they are not the target of this tool and their data quality varies.
Fundamentals
No earnings, no balance-sheet items, no ratios, no shareholding pattern, no market capitalisation. Prices and trading activity only.
A guaranteed-complete delivery series
Delivery data comes from a separate BSE file published on its own schedule. Recent rows routinely lack it, and the historical archive has gaps. Covered in detail here.
The thing most people underestimate
BSE lists far more securities than are meaningfully traded. Roughly a third of the universe sits in the X/XT long tail, and around one scrip in five is in a trade-to-trade group where intraday trading is prohibited outright. Group A — the part of the market with reliable daily liquidity — is about 15% of the list.
For a large fraction of scrips, then, a “daily” series is not really daily. There are missing sessions because the stock did not trade at all, closes that are stale last-traded prices, and rows built from a handful of transactions. Returns, volatility, correlations and moving averages computed from that are arithmetic performed on noise. Check No. of Trades before trusting any row, and read the group reference for what the classification implies.
How completeness varies with the range you ask for
Two different BSE sources sit behind the tool, and which one answers depends on your request:
- Normally, BSE’s historical price endpoint answers. Long ranges go out as large windows. If BSE times out — which it does on very long histories — the range is split in half and each half retried, recursively, until the pieces come back.
- For short ranges, there is a fallback.If the historical endpoint returns nothing for a range of about a month or less, the days are reassembled from BSE’s daily bhavcopy and delivery files instead, including older zipped formats for historical dates.
The practical implication: a long range that comes back empty will not fall back. If a multi-year request returns nothing, try a narrow window first to establish whether the scrip has data at all.
Freshness and availability
- Today’s data will not be there during market hours. These are end-of-day records, published after the close.
- The newest rows may lack delivery figures even once prices are available.
- The scrip list is a snapshot, not a live feed. It is refreshed periodically, so a very recent listing or a recent symbol change may be missing.
- Availability depends entirely on BSE. If the upstream endpoints change shape, rate-limit, or go down, this tool stops returning data. There is no cached copy to fall back on.
What this is and is not good for
Reasonable uses: studying the price history of a liquid scrip, coursework and academic projects, building a personal watchlist or portfolio record, sanity-checking a figure you saw elsewhere, exploratory research.
Not appropriate:as a system of record for accounting, tax filing, audit or dispute; as a live or near-live feed for execution; as the data layer under a production product; or as the sole source for any decision with money attached. For those, use official exchange publications or a licensed data vendor — and note that redistributing or commercialising exchange data is governed by BSE’s own terms, which is a separate question from anything this site can answer.
The full legal position is in the disclaimer and terms of use. The short version: verify anything that matters against the exchange.
Keep reading
- Every column in your BSE export, explained — What Open, High, Low, Close, WAP, No. of Shares, No. of Trades, Total Turnover, Deliverable Quantity, % Deli. Qty and the two Spread columns actually mean — and where people misread them.
- BSE scrip codes: why the number matters more than the ticker — BSE identifies every security by a six-digit scrip code, not by symbol. What the code is, why two companies can share a ticker, and how to find the right one.
- BSE groups: A, B, T, Z, X, M and what they change — BSE sorts listed scrips into groups that govern how they trade — including group T, where intraday trading is banned outright. What each letter means for the price history you just downloaded.
Or go straight to the download console and pull a file.