Documentation
https://marketsetup.in/documentation/jugaad-data/
Introduction
jugaad-data is a python library to download historical/live stock, index as well as economic data from NSE and RBI website using.
Features
- Supports new NSE website, (All libraries based on old NSE website might stop working)
- Powerful CLI (Command line interface), Even non-coders can use it easily
- Built-in caching mechanism to play nice with NSE. Avoid making un-necessary requests to NSE's website and getting blocked
- Optional
pandassupport
Road map
| Website | Segment | Supported? |
|---|---|---|
| NSE | Stocks | Yes |
| NSE | Stocks F&O | Yes |
| NSE | Index | Yes |
| NSE | Index F&O | Yes |
| RBI | Current Rates | Yes |
| AMFI | Mutual Fund NAV | Yes |
Installation
pip install jugaad-data
Getting started
Python inteface
Historical data
from datetime import date
from jugaad_data.nse import bhavcopy_save, bhavcopy_fo_save
# Download bhavcopy
bhavcopy_save(date(2020,1,1), "/path/to/directory")
# Download bhavcopy for futures and options
bhavcopy_fo_save(date(2020,1,1), "/path/to/directory")
# Download stock data to pandas dataframe
from jugaad_data.nse import stock_df
df = stock_df(symbol="SBIN", from_date=date(2020,1,1),
to_date=date(2020,1,30), series="EQ")
Live data
from jugaad_data.nse import NSELive
n = NSELive()
q = n.stock_quote("HDFC")
print(q['priceInfo'])
{'lastPrice': 2635,
'change': -49.05000000000018,
'pChange': -1.8274622305843848,
'previousClose': 2684.05,
'open': 2661,
'close': 2632.75,
'vwap': 2645.57,
'lowerCP': '2415.65',
'upperCP': '2952.45',
'pPriceBand': 'No Band',
'basePrice': 2684.05,
'intraDayHighLow': {'min': 2615.6, 'max': 2688.45, 'value': 2635},
'weekHighLow': {'min': 1473.45,
'minDate': '24-Mar-2020',
'max': 2777.15,
'maxDate': '13-Jan-2021',
'value': 2635}}
Command line interface
$ jdata stock --help
Usage: jdata stock [OPTIONS]
Download historical stock data
$jdata stock --symbol STOCK1 -f yyyy-mm-dd -t yyyy-mm-dd --o file_name.csv
Options:
-s, --symbol TEXT [required]
-f, --from TEXT [required]
-t, --to TEXT [required]
-S, --series TEXT [default: EQ]
-o, --output TEXT
--help Show this message and exit.
$ jdata stock -s SBIN -f 2020-01-01 -t 2020-01-31 -o SBIN-Jan.csv
SBIN [####################################] 100%
Saved file to : SBIN-Jan.csv
Download historical index data (niftyindices.com)
from datetime import date
from jugaad_data.nse import (index_raw, index_pe_raw, index_tri_raw,
index_type_list, index_subtype_list, index_name_list)
# OHLC data for an index
data = index_raw("NIFTY 50", date(2026, 1, 1), date(2026, 7, 31))
# P/E, P/B and Dividend Yield
pe_data = index_pe_raw("NIFTY 50", date(2026, 1, 1), date(2026, 7, 31))
# Total Return Index values
# For standard indices name == index_name; for strategy indices use the short code as name
tri_data = index_tri_raw("NIFTY 50", "NIFTY 50", date(2026, 1, 1), date(2026, 7, 31))
# Discover available indices (3-level hierarchy)
index_type_list() # ['Equity', 'Fixed Income', 'Multi Asset']
index_subtype_list('Equity', 'Historical Index Data') # ['Broad Market Indices', 'Sectoral Indices', ...]
index_name_list('Broad Market Indices', 'Historical Index Data') # ['NIFTY 50', 'NIFTY 100', ...]
# index_group options:
# 'Historical Index Data'
# 'Total returns Index Values '
# 'P/E, P/B & Div.Yield values'
Download mutual fund NAV history (AMFI)
from datetime import date
from jugaad_data.amfi import nav_history_raw, nav_history_df, nav_history_csv
# Raw rows (every scheme / AMC / date)
rows = nav_history_raw(date(2026, 9, 1), date(2026, 10, 6))
# pandas DataFrame (nav as float, date as datetime)
df = nav_history_df(date(2026, 9, 1), date(2026, 10, 6))
df[df["scheme_type"] == "Interval Fund"].head()
# Save to CSV
nav_history_csv(date(2026, 9, 1), date(2026, 10, 6), output="nav.csv")
Every row carries scheme_type (Open Ended / Close Ended / Interval Fund),
category (e.g. Money Market) and amc alongside the scheme NAV fields.
Download historical derivatives (F&O) data
$ jdata deriviatives --help
Usage: cli.py derivatives [OPTIONS]
Sample usage-
Download stock futures-
jdata derivatives -s SBIN -f 2020-01-01 -t 2020-01-30 -e 2020-01-30 -i FUTSTK -o file_name.csv
Download index futures-
jdata derivatives -s NIFTY -f 2020-01-01 -t 2020-01-30 -e 2020-01-30 -i FUTIDX -o file_name.csv
Download stock options-
jdata derivatives -s SBIN -f 2020-01-01 -t 2020-01-30 -e 2020-01-30 -i OPTSTK -p 330 --ce -o file_name.csv
Download index options-
jdata derivatives -s NIFTY -f 2020-01-01 -t 2020-01-30 -e 2020-01-23 -i OPTIDX -p 11000 --pe -o file_name.csv
Options:
-s, --symbol TEXT Stock/Index symbol [required]
-f, --from TEXT From date - yyyy-mm-dd [required]
-t, --to TEXT To date - yyyy-mm-dd [required]
-e, --expiry TEXT Expiry date - yyyy-mm-dd [required]
-i, --instru TEXT FUTSTK - Stock futures, FUTIDX - Index Futures, OPTSTK -
Stock Options, OPTIDX - Index Options [required]
-p, --price TEXT Strike price (Only for OPTSTK and OPTIDX)
--ce / --pe --ce for call and --pe for put (Only for OPTSTK and
OPTIDX)
-o, --output TEXT Full path of output file
--help Show this message and exit.
Buy me a coffee
If my work has helped you in anyway, you can buy me a coffee
Metadata
Release files for jugaad-data 0.37.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jugaad_data-0.37.0.tar.gz | 48.2 kB | Without provenance | Details for jugaad_data-0.37.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jugaad_data-0.37.0-py3-none-any.whl | Python 3 | none | any | Details for jugaad_data-0.37.0-py3-none-any.whl |
Total release size: 84.2 kB
Release files / jugaad_data-0.37.0.tar.gz
| Download URL | jugaad_data-0.37.0.tar.gz |
|---|---|
| Size | 48.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7a513f3dff76bef39aaaecee55de4f23f96397228f15acef1dad7f3033db2b67
|
|
BLAKE2b-256 checksum How to use checksums |
1bb55aea33c25ce5844d98bf7c1e1339379e87644920c250d1d9b7136a1d5861
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / jugaad_data-0.37.0-py3-none-any.whl
| Download URL | jugaad_data-0.37.0-py3-none-any.whl |
|---|---|
| Size | 36.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d98d09f2cc7615df847b76ad3bf4e3fa5386d18fc0b3fbfd2f30def99788c5cd
|
|
BLAKE2b-256 checksum How to use checksums |
4e32843b4e1386a5a9b1c0628900e631e83f6833ce6446e0fae2e731d922f198
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for jugaad-data 0.37.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.