Skip to content

[Actively Maintained] Get all Index, Stock, ETF & Commodity data from NSE India website

License

Notifications You must be signed in to change notification settings

mwsurjith/niftyterminal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“ˆ Nifty Terminal

A comprehensive Python library for NSE India market data

Access Index, Equity, ETF, Commodity & Historical data from official NSE India APIs

PyPI Version Python Versions License


✨ Features

Category Features
πŸ›οΈ Market Market status, trading hours
πŸ“Š Indices List, quotes, historical OHLCV, PE/PB/DY ratios, constituents
πŸ“ˆ Equities Complete stock list, quotes, historical data
πŸ’° ETFs All ETFs with smart asset categorization (Gold, Silver, Index, International)
πŸͺ™ Commodities Commodity list, spot prices, historical data
πŸ“‰ VIX India VIX historical data

πŸš€ Quick Start

Installation

pip install niftyterminal

Basic Usage

from niftyterminal import get_market_status, get_index_historical_data

# Check if market is open
status = get_market_status()
print(f"Market is {status['marketStatus']}")

# Get NIFTY 50 historical data with PE/PB/DY
data = get_index_historical_data("NIFTY 50", "2025-01-01", "2025-12-31")
for row in data['indexData']:
    print(f"{row['date']}: Close={row['close']}, PE={row['PE']}")

πŸ“š Table of Contents


πŸ“– API Reference

get_market_status()

Get the current Capital Market status from NSE India.

from niftyterminal import get_market_status

status = get_market_status()
print(status)
πŸ“€ Output
{
  "marketStatus": "Close",
  "marketStatusMessage": "Market is Closed"
}
Field Description
marketStatus Current status: "Open", "Close", etc.
marketStatusMessage Detailed status message

Index Functions

get_index_list()

Get the master list of all indices with their category and derivatives eligibility.

from niftyterminal import get_index_list

data = get_index_list()
πŸ“€ Output
{
  "indexList": [
    {
      "indexName": "NIFTY 50",
      "subType": "Broad Market Indices",
      "derivativesEligiblity": true
    },
    {
      "indexName": "NIFTY BANK",
      "subType": "Broad Market Indices",
      "derivativesEligiblity": true
    }
  ]
}
Field Description
indexName Full name of the index
subType Category: Broad Market, Sectoral, Thematic, Strategy, Fixed Income
derivativesEligiblity true if eligible for F&O trading

get_all_index_quote()

Get comprehensive quote data for all indices including OHLC, valuation metrics (PE/PB/DY), and historical comparison data.

from niftyterminal import get_all_index_quote

data = get_all_index_quote()
πŸ“€ Output
{
  "timestamp": "02-Jan-2026 15:30",
  "indexQuote": [
    {
      "indexName": "NIFTY 50",
      "date": "2026-01-02",
      "open": 26155.1,
      "high": 26340,
      "low": 26118.4,
      "ltp": 26328.55,
      "prevClose": 26146.55,
      "change": 182,
      "percentChange": 0.7,
      "pe": "22.92",
      "pb": "3.58",
      "dy": "1.28",
      "oneWeekAgoPercentChange": 1.1,
      "30dAgoPercentChange": 1.14,
      "365dAgoPercentChange": 10.89
    }
  ]
}
Field Description
ltp Last traded price
percentChange Percentage change from previous close
pe / pb / dy PE ratio, PB ratio, Dividend Yield
oneWeekAgoPercentChange Percent change from 1 week ago
30dAgoPercentChange Percent change from 30 days ago
365dAgoPercentChange Percent change from 365 days ago

get_index_historical_data(index_symbol, start_date, end_date)

Get historical OHLC, valuation data (PE, PB, Dividend Yield), and Total Returns Index for any index.

Note: This function fetches data from Nifty Indices (niftyindices.com), which often provides more complete historical data than NSE India.

Parameter Type Required Description
index_symbol str βœ… Index name (e.g., "NIFTY 50", "NIFTY BANK")
start_date str βœ… Start date in YYYY-MM-DD format
end_date str ❌ End date in YYYY-MM-DD format (defaults to today)
from niftyterminal import get_index_historical_data

# With date range
data = get_index_historical_data("NIFTY 50", "2025-01-01", "2026-01-03")

# Without end date (defaults to today)
data = get_index_historical_data("NIFTY BANK", "2024-01-01")
πŸ“€ Output
{
  "indexData": [
    {
      "indexName": "Nifty 50",
      "date": "2024-12-05",
      "open": "24539.15",
      "high": "24857.75",
      "low": "24295.55",
      "close": "24708.40",
      "PE": "22.74",
      "PB": "3.68",
      "divYield": "1.24",
      "totalReturnsIndex": "36737.18"
    }
  ]
}
Field Description
date Trading date in YYYY-MM-DD format
open / high / low / close OHLC values
PE / PB / divYield Valuation metrics
totalReturnsIndex Total Returns Index value (includes dividends reinvested)

get_index_stocks(index_symbol)

Get the list of constituent stocks for an index.

Parameter Type Required Description
index_symbol str βœ… Index symbol (e.g., "NIFTY 50", "NIFTY BANK")
from niftyterminal import get_index_stocks

data = get_index_stocks("NIFTY 50")
πŸ“€ Output
{
  "indexName": "NIFTY 50",
  "date": "2026-01-07",
  "stockList": [
    {
      "symbol": "TITAN",
      "companyName": "Titan Company Limited",
      "isin": "INE280A01028"
    }
  ]
}
Field Description
symbol Stock ticker symbol
companyName Full company name
isin ISIN code

get_vix_historical_data(start_date, end_date)

Get historical India VIX data.

Parameter Type Required Description
start_date str βœ… Start date in YYYY-MM-DD format
end_date str ❌ End date in YYYY-MM-DD format (defaults to today)
from niftyterminal import get_vix_historical_data

data = get_vix_historical_data("2025-01-01", "2025-04-16")
πŸ“€ Output
{
  "vixData": [
    {
      "indexName": "INDIA VIX",
      "date": "2025-04-11",
      "open": 21.43,
      "high": 21.43,
      "low": 18.855,
      "close": 20.11
    }
  ]
}
Field Description
date Trading date in YYYY-MM-DD format
open / high / low / close VIX OHLC values

get_all_etfs()

Get list of all ETFs with smart asset categorization for easy filtering.

from niftyterminal import get_all_etfs

data = get_all_etfs()

# Filter by asset type
gold_etfs = [e for e in data['etfs'] if e['underlyingAsset'] == 'GOLD']
nifty_50_etfs = [e for e in data['etfs'] if e['underlyingAsset'] == 'NIFTY_50']
πŸ“€ Output
{
  "date": "2026-01-02",
  "etfs": [
    {
      "symbol": "NIFTYBEES",
      "companyName": "Nippon India ETF Nifty BeES",
      "assetType": "EquityIndex",
      "underlyingAsset": "NIFTY_50",
      "indexVariant": "TRI",
      "listingDate": "2002-01-08",
      "isFNOSec": true
    }
  ]
}
Field Values
assetType Commodity, EquityIndex, DebtIndex, Liquid, International
underlyingAsset GOLD, SILVER, NIFTY_50, SENSEX, NASDAQ_100, etc.
indexVariant TRI, EqualWeight, Momentum, Quality, Value, LowVol, Alpha

get_stocks_list()

Get the complete list of all listed stocks on NSE.

from niftyterminal import get_stocks_list

data = get_stocks_list()
print(f"Total stocks: {len(data['stockList'])}")
πŸ“€ Output
{
  "stockList": [
    {
      "symbol": "20MICRONS",
      "companyName": "20 Microns Limited",
      "series": "EQ",
      "isin": "INE144J01027"
    }
  ]
}
Field Description
symbol Stock ticker symbol
companyName Full company name
series Trading series: EQ, BE, BZ
isin ISIN code

get_stock_quote(symbol)

Get quote and detailed information for a specific stock including current price, market cap, sector classification, and trading status.

Parameter Type Required Description
symbol str βœ… Stock ticker symbol (e.g., "RELIANCE", "TCS")
from niftyterminal import get_stock_quote

data = get_stock_quote("20MICRONS")
print(f"LTP: {data['ltp']}, Change: {data['percentChange']}%")
πŸ“€ Output
{
  "symbol": "20MICRONS",
  "companyName": "20 Microns Limited",
  "series": "EQ",
  "listingDate": "2008-10-06",
  "isin": "INE144J01027",
  "faceValue": 5,
  "marketCap": 7209032358.6,
  "secStatus": "Listed",
  "industry": "Industrial Minerals",
  "sector": "Metals & Mining",
  "sectorPe": "11.69",
  "industryInfo": "Minerals & Mining",
  "macro": "Commodities",
  "tradingSegment": "Normal Market",
  "isFNOSec": false,
  "isSLBSec": false,
  "isSuspended": false,
  "isETFSec": false,
  "open": 206.9,
  "high": 209.89,
  "low": 202.51,
  "ltp": 204.3,
  "prevClose": 207.54,
  "change": -3.24,
  "percentChange": -1.56,
  "pe": "11.86"
}
Field Description
ltp Last traded price
change / percentChange Price change
pe Stock PE ratio
marketCap Total market capitalization
sector / industry Sector and industry classification
isFNOSec Eligible for F&O trading

Commodity Functions

get_commodity_list()

Get the list of all commodity symbols from NSE.

from niftyterminal import get_commodity_list

data = get_commodity_list()
print([c['symbol'] for c in data['commodityList']])
# Output: ['ALUMINI', 'GOLD', 'SILVER', 'CRUDEOIL', ...]

get_commodity_historical_data(symbol, start_date, end_date)

Get historical spot price data for a commodity.

Parameter Type Required Description
symbol str βœ… Commodity symbol (e.g., "GOLD1G", "SILVER")
start_date str βœ… Start date in YYYY-MM-DD format
end_date str ❌ End date (defaults to today)
from niftyterminal import get_commodity_historical_data

data = get_commodity_historical_data("GOLD1G", "2025-12-28", "2026-01-04")
πŸ“€ Output
{
  "commodityData": [
    {
      "symbol": "GOLD1G",
      "unit": "1 Grams",
      "spotPrice1": 13442,
      "spotPrice2": 13460,
      "date": "2026-01-02"
    }
  ]
}
Field Description
symbol Commodity symbol
unit Unit of measurement
spotPrice1 / spotPrice2 Spot prices
date Date (YYYY-MM-DD)

⚠️ Disclaimer

Caution

  • This library is not affiliated with, endorsed by, or associated with the National Stock Exchange of India (NSE) or any other financial institution.
  • It does not provide financial, trading, or investment advice. Verify data independently before making financial decisions.
  • It only retrieves publicly available data without authentication or bypassing security measures.
  • Users are responsible for ensuring compliance with applicable laws and the data provider's terms of service.
  • Use at your own risk.

πŸ“„ License

MIT License Β© 2025


Made with ❀️ for the Indian trading community

About

[Actively Maintained] Get all Index, Stock, ETF & Commodity data from NSE India website

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages