A Python library to fetch publicly available data from NSE India.
- Capital Market β Price volume data, deliverable positions, bhav copies, bulk/block deals, short selling, VaR margins, PE ratios, 52-week highs/lows, and more
- Cash Market β NSDL FPI investment and derivative activity plus AMFI monthly archive reports
- Derivatives β Futures & options price volume data, bhav copies, participant-wise OI & volume, live option chains, FII statistics, ban period securities
- Indices β Index constituent lists, live index performances across Broad Market, Sectoral, Thematic, and Strategy categories
- Debt β Securities available for trading
- Corporate Filings β Financial results, corporate actions, event calendars
- Market Activity β Top gainers/losers, most active equities, total traded stocks, FII/DII activity
- Utilities β Trading holiday calendar, India VIX historical data
Fresh install:
pip install nselibUpgrade to latest:
pip install nselib --upgradeNote: Compatible and tested with Python 3.8 and above.
from nselib import capital_market
# Get price volume data for a stock (last 1 month)
df = capital_market.price_volume_data(symbol='SBIN', period='1M')
print(df.head())
# Or specify a custom date range
df = capital_market.price_volume_and_deliverable_position_data(
symbol='SBIN',
from_date='01-01-2024',
to_date='31-01-2024'
)
print(df)Most functions accept dates in two ways:
| Parameter | Format | Example |
|---|---|---|
from_date / to_date |
dd-mm-YYYY |
'01-06-2024' |
period |
Shorthand code | '1D', '1W', '1M', '6M', '1Y' |
You must provide either
from_date+to_dateorperiod, not both.
from nselib import capital_market| Function | Description | Key Parameters |
|---|---|---|
price_volume_and_deliverable_position_data() |
OHLCV + delivery data | symbol, from_date/to_date or period |
price_volume_data() |
OHLCV price volume data | symbol, from_date/to_date or period |
deliverable_position_data() |
Delivery position data | symbol, from_date/to_date or period |
bulk_deal_data() |
Bulk deal transactions | from_date/to_date or period |
block_deals_data() |
Block deal transactions | from_date/to_date or period |
short_selling_data() |
Short selling reports | from_date/to_date or period |
bhav_copy_with_delivery() |
Daily bhav copy with delivery | trade_date |
bhav_copy_equities() |
CM-UDiFF bhav copy | trade_date |
bhav_copy_sme() |
SME bhav copy | trade_date |
equity_list() |
All listed equities | β |
fno_equity_list() |
F&O equity list with lot sizes | β |
fno_index_list() |
F&O index list with lot sizes | β |
nifty50_equity_list() |
Nifty 50 constituents | β |
niftynext50_equity_list() |
Nifty Next 50 constituents | β |
niftymidcap150_equity_list() |
Nifty Midcap 150 constituents | β |
niftysmallcap250_equity_list() |
Nifty Smallcap 250 constituents | β |
india_vix_data() |
India VIX historical data | from_date/to_date or period |
index_data() |
Historical index OHLC data | index, from_date/to_date or period |
market_watch_all_indices() |
Live snapshot of all indices | β |
daily_volatility() |
CM daily volatility report | trade_date |
fii_dii_trading_activity() |
FII/DII buy-sell activity | β |
var_begin_day() |
VaR β begin of day | trade_date |
var_1st_intra_day() |
VaR β 1st intraday | trade_date |
var_2nd_intra_day() |
VaR β 2nd intraday | trade_date |
var_3rd_intra_day() |
VaR β 3rd intraday | trade_date |
var_4th_intra_day() |
VaR β 4th intraday | trade_date |
var_end_of_day() |
VaR β end of day | trade_date |
sme_bhav_copy() |
SME bhav copy | trade_date |
sme_band_complete() |
SME band complete data | trade_date |
week_52_high_low_report() |
52-week high/low report | trade_date |
financial_results_for_equity() |
Quarterly/annual financials | from_date/to_date or period, fin_period, fo_sec |
corporate_bond_trade_report() |
Corporate bond trades | trade_date |
pe_ratio() |
PE ratio for all equities | trade_date |
corporate_actions_for_equity() |
Corporate actions | from_date/to_date or period, fno_only |
event_calendar_for_equity() |
Event calendar | from_date/to_date or period, fno_only |
top_gainers_or_losers() |
Top gainers or losers | to_get ('gainers' / 'loosers') |
most_active_equities() |
Most active by value/volume | fetch_by ('value' / 'volume') |
total_traded_stocks() |
All traded stocks summary | β |
category_turnover_cash() |
category-wise turnover data | trade_date |
business_growth_cm_segment() |
business growth data for the NSE capital market | data_type, from_year , to_year |
Examples:
# Bhav copy for a specific date
df = capital_market.bhav_copy_with_delivery(trade_date='20-06-2024')
# India VIX for last 1 week
df = capital_market.india_vix_data(period='1W')
# CM daily volatility report
df = capital_market.daily_volatility(trade_date='17-04-2026')
# Historical index data
df = capital_market.index_data(index='NIFTY 50', from_date='01-01-2024', to_date='31-03-2024')
# Financial results (quarterly, F&O securities only)
df = capital_market.financial_results_for_equity(period='6M', fo_sec=True, fin_period='Quarterly')
# Top gainers in live market
df = capital_market.top_gainers_or_losers('gainers')from nselib import derivatives| Function | Description | Key Parameters |
|---|---|---|
future_price_volume_data() |
Futures price & volume | symbol, instrument (FUTIDX/FUTSTK), dates |
option_price_volume_data() |
Options price & volume | symbol, instrument (OPTIDX/OPTSTK), option_type (PE/CE), dates |
fno_bhav_copy() |
F&O daily bhav copy | trade_date |
participant_wise_open_interest() |
OI by participant category | trade_date |
participant_wise_trading_volume() |
Volume by participant category | trade_date |
daily_volatility() |
F&O daily volatility report | trade_date |
expiry_dates_future() |
Upcoming futures expiry dates | β |
expiry_dates_option_index() |
Upcoming options expiry dates | β |
nse_live_option_chain() |
Live option chain | symbol, expiry_date (optional), oi_mode |
fii_derivatives_statistics() |
FII derivatives stats | trade_date |
fno_security_in_ban_period() |
Securities in F&O ban | trade_date |
live_most_active_underlying() |
Most active underlyings | β |
category_turnover_fo() |
derivatives category-wise turnover data | trade_date |
business_growth_fo_segment() |
business growth data for the NSE F&O segment | data_type, from_year , to_year |
Instrument Types:
| Code | Description |
|---|---|
FUTIDX |
Future Index |
FUTSTK |
Future Stock |
OPTIDX |
Option Index |
OPTSTK |
Option Stock |
Examples:
# Futures price data
df = derivatives.future_price_volume_data(
symbol='SBIN', instrument='FUTSTK', period='1M'
)
# Live option chain
df = derivatives.nse_live_option_chain(symbol='BANKNIFTY', expiry_date='27-03-2025')
# Compact option chain (fewer columns)
df = derivatives.nse_live_option_chain(symbol='NIFTY', oi_mode='compact')
# FII derivatives statistics
df = derivatives.fii_derivatives_statistics(trade_date='20-12-2025')
# F&O daily volatility report
df = derivatives.daily_volatility(trade_date='17-04-2026')from nselib import cash_market| Function | Description | Key Parameters |
|---|---|---|
nsdl_fpi_investment_activity() |
NSDL FPI investment activity for a reporting date | trade_date |
nsdl_fpi_latest_investment_activity() |
Latest NSDL FPI investment activity | β |
nsdl_fpi_derivative_activity() |
NSDL FPI derivative activity for a reporting date | trade_date |
nsdl_fpi_latest_derivative_activity() |
Latest NSDL FPI derivative activity | β |
amfi_monthly_report_links() |
List AMFI monthly archive links | β |
amfi_monthly_data() |
Parse one AMFI monthly report | report_month, file_type_priority |
amfi_monthly_historical_data() |
Parse AMFI monthly reports across a range | from_month, to_month, file_type_priority |
Examples:
# NSDL FPI investment activity for a specific reporting date
df = cash_market.nsdl_fpi_investment_activity(trade_date='30-10-2025')
# Latest NSDL FPI derivative activity
df = cash_market.nsdl_fpi_latest_derivative_activity()
# List available AMFI archive reports
links = cash_market.amfi_monthly_report_links()
# Parse a single AMFI monthly report
df = cash_market.amfi_monthly_data(report_month='01-03-2026')
# Parse AMFI history for a month range
history = cash_market.amfi_monthly_historical_data(from_month='01-01-2024', to_month='01-03-2026')from nselib import indices| Function | Description | Key Parameters |
|---|---|---|
index_list() |
Available indices by category | index_category |
constituent_stock_list() |
Stocks in a given index | index_category, index_name |
live_index_performances() |
Live performance of all indices | β |
Index Categories: BroadMarketIndices, SectoralIndices, ThematicIndices, StrategyIndices
Examples:
# List all broad market indices
index_names = indices.index_list(index_category='BroadMarketIndices')
# Get Nifty 50 constituents
df = indices.constituent_stock_list(index_category='BroadMarketIndices', index_name='Nifty 50')
# Live index performances
df = indices.live_index_performances()from nselib import debt| Function | Description | Key Parameters |
|---|---|---|
securities_available_for_trading() |
Debt securities available | trade_date |
Example:
df = debt.securities_available_for_trading(trade_date='20-12-2025')import nselib| Function | Description |
|---|---|
trading_holiday_calendar() |
NSE trading holidays for all segments |
Example:
df = nselib.trading_holiday_calendar()There are multiple ways to contribute to nselib:
Found a bug or have a feature request? Please open an issue on the GitHub Issues page.
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m 'Add your feature') - Push to the branch (
git push origin feature/your-feature) - Open a Pull Request
Help the community by writing tutorials, blog posts, or example projects using nselib.
- Original Author: Ruchi Tanmay
- GitHub: RuchiTanmay/nselib
This project is licensed under the Apache License 2.0 β see the LICENSE file for details.