Installation
Option 1 — All packages together
pip install indian-market-data
Installs nse-archives + bse-index-data + mcx-data together.
Option 2 — Individual packages
pip install nse-archives # NSE only
pip install bse-index-data # BSE only
pip install mcx-data # MCX only
Optional extras
# S3 upload support
pip install nse-archives[s3]
pip install mcx-data[s3]
pip install bse-index-data[s3]
# Cloudflare bypass (for niftyindices.com TRI)
pip install nse-archives[cloudflare]
# Polars output (optional — see below)
pip install nse-archives[polars]
pip install mcx-data[polars]
pip install bse-index-data[polars]
| Requirements: Python 3.9+ | requests | pandas | openpyxl |
BSE + MCX additionally require: curl-cffi>=0.7.0 (installed automatically)
Optional: Polars Output
All packages support optional Polars output with zero code changes — just set one environment variable before importing:
import os
os.environ["IMD_DATAFRAME"] = "polars" # must be set before importing
from nsedata import nse
from bsedata import bse
from mcxdata import mcx
df = nse.get("capital_market", "equities_sme", "sec_bhavdata_full", "2026-05-22")
type(df) # polars.DataFrame
df = bse.get_index("SENSEX", "2026-01-01", "2026-05-22") # polars.DataFrame
df = mcx.get_spot_recent() # polars.DataFrame
All internal logic stays in pandas. The conversion to polars happens only at the last step before returning to you.
Polars must be installed separately:
pip install nse-archives[polars] # adds polars>=0.20.0
pip install mcx-data[polars]
pip install bse-index-data[polars]
Polars works on AWS Lambda — compatible Linux wheels, ~15 MB.
Verify
import nsedata, mcxdata, bsedata
print(nsedata.__version__) # 1.1.0
print(mcxdata.__version__) # 1.1.0
print(bsedata.__version__) # 1.1.0
from nsedata import nse
from bsedata import bse
from mcxdata import mcx
nse.list_datasets() # 91 NSE datasets
bse.list_indices() # 55 BSE indices
mcx.list_datasets() # 2 MCX datasets
Lambda Layer
Includes nse-archives + bse-index-data + mcx-data + all dependencies:
cd .lambda_layer
./build.sh # standard (from PyPI)
./build.sh --dev # from local source (development)
./build.sh --full # + cloudscraper (TRI + extra WAF fallback)
Upload and attach to your Lambda function:
aws lambda publish-layer-version \
--layer-name indian-market-data \
--zip-file fileb://nse-data-lambda-layer.zip \
--compatible-runtimes python3.12 python3.13 \
--description "nse-archives + bse-index-data + mcx-data + pandas + curl-cffi"