library to get NSE India data
Project description
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
- 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
# 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)
📖 API Reference
Date Parameters
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.
Capital Market
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 | — |
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 |
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')
# 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')
Derivatives
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 |
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 |
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')
Indices
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()
Debt
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')
Utilities
import nselib
| Function | Description |
|---|---|
trading_holiday_calendar() |
NSE trading holidays for all segments |
Example:
df = nselib.trading_holiday_calendar()
🤝 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
- Original Author: Ruchi Tanmay
- GitHub: RuchiTanmay/nselib
📄 License
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nselib-2.4.5.tar.gz.
File metadata
- Download URL: nselib-2.4.5.tar.gz
- Upload date:
- Size: 33.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea5a9c1ddcc0cbbf84403d75b93dd91f1eb5eaed5b0b632eb4a8a338e33483d4
|
|
| MD5 |
f5dfb018a4c0841016ef73b746001b66
|
|
| BLAKE2b-256 |
b444158ff85fad1fb51b648a1ea52bc9c3fb60518df990dcf9221e4b05095856
|
File details
Details for the file nselib-2.4.5-py3-none-any.whl.
File metadata
- Download URL: nselib-2.4.5-py3-none-any.whl
- Upload date:
- Size: 34.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e30a087b09aa8cca36d85eee3eef87fa364ebd7848ae51d0173bba3db64ad48
|
|
| MD5 |
a32a1621c255c710698f27dbfa76e543
|
|
| BLAKE2b-256 |
4c23b4c765e05dbe2b6a4f7e17522edb086771050e5ecd121359d3e8e2bf7753
|