Download NSE, BSE, MCX India and MSCI market data as pandas DataFrames.
Bhavcopy, SENSEX/Nifty indices, F&O, commodity spot prices, global index levels — direct from exchange archives.
Works on AWS Lambda, Snowflake, and any cloud environment.
pip install indian-market-data # NSE + MCX together
pip install nse-archives # NSE only
pip install bse-index-data # BSE only
pip install mcx-data # MCX only
pip install msci-data # MSCI only| Package | PyPI | Datasets | Description |
|---|---|---|---|
nse-archives |
↗ | 91 | NSE India — equities, F&O, debt, indices, EGR |
bse-index-data |
↗ | 55+ indices | BSE India — SENSEX, BSE500, BANKEX and 50+ more |
mcx-data |
↗ | 2 | MCX India — commodity spot prices |
indian-market-data |
↗ | All | Umbrella — installs all |
from nsedata import nse
# Daily prices
df = nse.get("capital_market", "equities_sme", "sec_bhavdata_full", "2026-05-22")
df = nse.get("capital_market", "indices", "ind_close_all", "2026-05-22")
# F&O
df = nse.get("derivatives", "equity", "fo_bhav_udiff", "2026-05-22")
df = nse.get("derivatives", "equity", "fo_secban", "2026-05-22")
# Historical index + TRI (niftyindices.com)
df = nse.get_historical_index("NIFTY 50", "01-Jan-2026", "31-Mar-2026")
df = nse.get_tri("NIFTY 50", "01-Jan-2026", "31-Mar-2026")
# Download to S3
nse.download("capital_market", "equities_sme", "sec_bhavdata_full", "2026-05-22",
s3_bucket="my-bucket", s3_prefix="raw/nse/")
nse.list_datasets() # 91 datasets86 datasets confirmed working on Lambda (May 2026) — equities, F&O, debt, indices, IRD, SLB, EGR.
from bsedata import bse
# Historical SENSEX OHLC
df = bse.get_index("SENSEX", "2026-01-01", "2026-05-22")
# Historical BSE500, BANKEX, BSEIT etc.
df = bse.get_index("BSE500", "2026-01-01", "2026-05-22")
df = bse.get_index("BANKEX", "2026-01-01", "2026-05-22")
# All 120+ indices for one date (single call)
df = bse.get_all_indices("2026-05-22")
# Live SENSEX quote
df = bse.get_live_sensex()
# Download to S3
bse.download_index("SENSEX", "2026-01-01", "2026-05-22",
s3_bucket="my-bucket", s3_prefix="raw/bse/")
# List all 55 supported indices
bse.list_indices()
bse.list_indices(category="Sectoral")55 indices confirmed working — Broad Market, Sectoral, Thematic, Strategy and Global.
from mcxdata import mcx
# Today's spot prices — all 28 commodities
df = mcx.get_spot_recent()
# Single commodity
df = mcx.get_spot_recent(commodity="GOLD")
# Historical
df = mcx.get_spot_archive("2026-05-01", "2026-05-22", commodity="GOLD")
df = mcx.get_spot_archive("2026-05-01", "2026-05-22", commodity="CRUDEOIL")
# Download to S3
mcx.download("spot", "market", "spot_recent",
s3_bucket="my-bucket", s3_prefix="raw/mcx/")
mcx.list_commodities() # 28 commodities: GOLD, SILVER, CRUDEOIL, ...cd .lambda_layer
./build.sh # builds layer with nse-archives + mcx-data + pandas + curl-cffi| Page | Description |
|---|---|
| NSE Equities & SME | 32 daily/monthly datasets |
| NSE Indices | Index closes, top movers |
| NSE F&O | F&O bhavcopy, contracts, ban list |
| NSE Debt | Corporate bonds, settlements |
| MCX Spot Market | Commodity spot prices (28 commodities) |



