nselib
A Python library to fetch publicly available data from NSE India.
β¨ Features
- 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
π¦ Installation
Fresh install:
pip install nselib
Upgrade to latest:
pip install nselib --upgrade
Note: Compatible and tested with Python 3.8 and above.
π Quick Start
from nselib import capital_market
df = capital_market.price_volume_data(symbol='SBIN', period='1M')
print(df.head())
df = capital_market.price_volume_and_deliverable_position_data(
symbol='SBIN',
from_date='01-01-2024',
to_date='31-01-2024'
)
print(df)
π API Reference
Date Parameters
Most functions accept dates in two ways:
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_date or period, not both.
Capital Market
from nselib import capital_market
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:
df = capital_market.bhav_copy_with_delivery(trade_date='20-06-2024')
df = capital_market.india_vix_data(period='1W')
df = capital_market.daily_volatility(trade_date='17-04-2026')
df = capital_market.index_data(index='NIFTY 50', from_date='01-01-2024', to_date='31-03-2024')
df = capital_market.financial_results_for_equity(period='6M', fo_sec=True, fin_period='Quarterly')
df = capital_market.top_gainers_or_losers('gainers')
Derivatives
from nselib import derivatives
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:
FUTIDX | Future Index |
FUTSTK | Future Stock |
OPTIDX | Option Index |
OPTSTK | Option Stock |
Examples:
df = derivatives.future_price_volume_data(
symbol='SBIN', instrument='FUTSTK', period='1M'
)
df = derivatives.nse_live_option_chain(symbol='BANKNIFTY', expiry_date='27-03-2025')
df = derivatives.nse_live_option_chain(symbol='NIFTY', oi_mode='compact')
df = derivatives.fii_derivatives_statistics(trade_date='20-12-2025')
df = derivatives.daily_volatility(trade_date='17-04-2026')
Cash Market
from nselib import cash_market
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:
df = cash_market.nsdl_fpi_investment_activity(trade_date='30-10-2025')
df = cash_market.nsdl_fpi_latest_derivative_activity()
links = cash_market.amfi_monthly_report_links()
df = cash_market.amfi_monthly_data(report_month='01-03-2026')
history = cash_market.amfi_monthly_historical_data(from_month='01-01-2024', to_month='01-03-2026')
Indices
from nselib import indices
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:
index_names = indices.index_list(index_category='BroadMarketIndices')
df = indices.constituent_stock_list(index_category='BroadMarketIndices', index_name='Nifty 50')
df = indices.live_index_performances()
Debt
from nselib import debt
securities_available_for_trading() | Debt securities available | trade_date |
Example:
df = debt.securities_available_for_trading(trade_date='20-12-2025')
Utilities
import nselib
trading_holiday_calendar() | NSE trading holidays for all segments |
Example:
df = nselib.trading_holiday_calendar()
π Logging & Debugging
nselib comes with a built-in logger that is silent by default so it doesn't pollute your application's logs. If you want to see detailed network requests, API responses, or debug errors while working with the library, you can easily enable it.
import nselib
import logging
nselib.enable_logging(level=logging.DEBUG)
df = nselib.capital_market.price_volume_data('SBIN', period='1W')
π€ How to Contribute
There are multiple ways to contribute to nselib:
Report Issues & Suggest Features
Found a bug or have a feature request? Please open an issue on the GitHub Issues page.
Submit Pull Requests
- 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
Write About nselib
Help the community by writing tutorials, blog posts, or example projects using nselib.
Contact
π License
This project is licensed under the Apache License 2.0 β see the LICENSE file for details.