Skip to main content

A clean Python library for fetching Indian stock market data from NSE India

Project description

📈 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

niftyterminal-0.2.1.tar.gz (99.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

niftyterminal-0.2.1-py3-none-any.whl (108.6 kB view details)

Uploaded Python 3

File details

Details for the file niftyterminal-0.2.1.tar.gz.

File metadata

  • Download URL: niftyterminal-0.2.1.tar.gz
  • Upload date:
  • Size: 99.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for niftyterminal-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5351675b8eeceb009f4bfe3ee4d765d8aded3e329eee463c444229a5ca67ecb1
MD5 d3fc6204ae287a7a1d61cf161cc22e35
BLAKE2b-256 8477b0e7800f44459aef287f0d65ea7a23b9db20105a158751bfb973a9394917

See more details on using hashes here.

Provenance

The following attestation bundles were made for niftyterminal-0.2.1.tar.gz:

Publisher: pypi-publish.yml on mwsurjith/niftyterminal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file niftyterminal-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: niftyterminal-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 108.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for niftyterminal-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 15de1269d3e80f414da54801588267f92c0050ea04ac867965e4885e53479046
MD5 5104a4dd07f9e1d137b647a63be4d994
BLAKE2b-256 218db3b00a1005f9174b1c26d7a0e468ac306f8e1b9390e45af0bdbe1ecba981

See more details on using hashes here.

Provenance

The following attestation bundles were made for niftyterminal-0.2.1-py3-none-any.whl:

Publisher: pypi-publish.yml on mwsurjith/niftyterminal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page