Skip to content

Latest commit

 

History

History
638 lines (500 loc) · 15.1 KB

File metadata and controls

638 lines (500 loc) · 15.1 KB

📈 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

get_stock_financials(symbol, consolidated=None)

Get comprehensive quarterly/annual financial data for a stock, including revenue, expenses, net profit, EPS, and segment-wise breakdowns. It natively fetches historical filings (both modern XBRL and legacy HTML formats).

Parameter Type Required Description
symbol str Stock ticker symbol (e.g., "RELIANCE", "TCS")
consolidated bool True for consolidated, False for standalone, None for both (default)
import asyncio
from niftyterminal import get_stock_financials

data = asyncio.run(get_stock_financials("RELIANCE", consolidated=True))
print(f"Total filings fetched: {data['total_filings']}")
first_filing = data['filings'][0]
print(f"Latest Revenue: {first_filing['financial_data']['financials']['revenue_from_operations']}")
📤 Output
{
  "symbol": "RELIANCE",
  "company_name": "Reliance Industries Limited",
  "total_filings": 46,
  "filings": [
    {
      "seq_number": "1196162",
      "from_date": "01-Oct-2024",
      "to_date": "31-Dec-2024",
      "nature": "Consolidated",
      "audited": "Un-Audited",
      "period": "Quarterly",
      "format": "New",
      "financial_data": {
        "general_info": {
          "reporting_quarter": "Third quarter",
          "nature": "Consolidated",
          "rounding_unit": "Crores"
        },
        "financials": {
          "revenue_from_operations": 2438650000000.0,
          "total_income": 2469950000000.0,
          "total_expenses": 2182040000000.0,
          "net_profit": 219300000000.0
        },
        "eps": {
          "basic_total": 13.7
        },
        "segments": {
          "Digital Services": {
            "revenue": 381620000000.0,
            "profit": 74330000000.0
          }
        }
      }
    }
  ]
}

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