stock-nse-india
Version:
This package will help us to get equity/index details and historical data from National Stock Exchange of India.
279 lines • 11 kB
TypeScript
import { DateRange, IntradayData, EquityDetails, EquityTradeInfo, EquityHistoricalData, SeriesData, IndexDetails, EquityOptionChainData, IndexOptionChainData, CommodityOptionChainData, OptionChainContractInfo, EquityCorporateInfo, Glossary, HolidaysBySegment, MarketStatus, MarketTurnover, AllIndicesData, IndexNamesData, CircularsData, LatestCircularData, EquityMaster, PreOpenMarketData, MergedDailyReportsData, TechnicalIndicators, ChartingSymbolInfo, ChartingOHLCItem, ChartingOHLCResponse, EquityInfo, EquityMetadata, EquitySecurityInfo, EquityPriceInfo, EquityPreOpenMarket, EquityHistoricalInfo, EquityOptionChainItem, IndexEquityInfo, IndexRecords, CommodityRecords, Filtered, Holiday, MarketState, MarketCap, IndicativeNifty50, GiftNifty, Datum, PreOpenDetails, OptionsData, OptionsDetails } from './interface';
export declare enum ApiList {
GLOSSARY = "/api/cmsContent?url=/glossary",
HOLIDAY_TRADING = "/api/holiday-master?type=trading",
HOLIDAY_CLEARING = "/api/holiday-master?type=clearing",
MARKET_STATUS = "/api/marketStatus",
MARKET_TURNOVER = "/api/market-turnover",
ALL_INDICES = "/api/allIndices",
INDEX_NAMES = "/api/index-names",
CIRCULARS = "/api/circulars",
LATEST_CIRCULARS = "/api/latest-circular",
EQUITY_MASTER = "/api/equity-master",
MARKET_DATA_PRE_OPEN = "/api/market-data-pre-open?key=ALL",
MERGED_DAILY_REPORTS_CAPITAL = "/api/merged-daily-reports?key=favCapital",
MERGED_DAILY_REPORTS_DERIVATIVES = "/api/merged-daily-reports?key=favDerivatives",
MERGED_DAILY_REPORTS_DEBT = "/api/merged-daily-reports?key=favDebt"
}
export declare class NseIndia {
private readonly baseUrl;
private readonly cookieMaxAge;
private readonly maxRetries;
private readonly apiHeaders;
private nseJar;
private chartingJar;
private nseClient;
private chartingClient;
private userAgent;
private cookies;
private cookieUsedCount;
private cookieExpiry;
private noOfConnections;
private readonly chartingBaseUrl;
private chartingCookies;
private chartingCookieUsedCount;
private chartingCookieExpiry;
private chartingUserAgent;
private preOpenCache?;
private capitalMarketTypeCache?;
private resetNseClient;
private resetChartingClient;
private invalidateNseSession;
private invalidateChartingSession;
private isAuthError;
private toHttpError;
private warmNsePage;
private warmEquityQuotePage;
private normalizeIndexDetails;
/**
* Bootstrap NSE session via homepage and persist all Set-Cookie values in the jar.
* Note: some endpoints (e.g. /api/quote-equity) may still return 403 from Akamai WAF
* even with a valid session.
*/
private ensureNseSession;
/** @deprecated Use ensureNseSession internally; kept for tests that spy on cookie bootstrap. */
private getNseCookies;
/**
* Get cookies for charting.nseindia.com domain
* Used as fallback when charting API fails with NSE cookies
* @returns Charting domain cookies
*/
private ensureChartingSession;
private getChartingCookies;
/**
*
* @param url NSE API's URL or charting API URL
* @param domain Domain type: 'nse' for www.nseindia.com, 'charting' for charting.nseindia.com
* @returns JSON data from NSE India or charting service
*/
getData(url: string, domain?: 'nse' | 'charting'): Promise<any>;
/**
*
* @param apiEndpoint
* @returns
*/
getDataByEndpoint(apiEndpoint: string): Promise<any>;
/**
* Get historical chart data from charting.nseindia.com
* @param symbol Equity symbol with series (e.g., 'ONGC')
* @param range Optional date range for chart data query
* @param token NSE script code (token) for the symbol. If not provided, it is
* automatically fetched via {@link getEquitySymbolInfo}.
* @param symbolType Type of symbol (e.g., 'Equity', 'Index')
* @param chartType Chart type (e.g., 'I' for intraday, 'D' for daily)
* @param timeInterval Time interval in minutes (e.g., '5', '15', '60')
* @returns Chart data from charting service
*/
getEquityChartHistoricalData(symbol: string, range?: DateRange, token?: string | number, symbolType?: string, chartType?: string, timeInterval?: string | number): Promise<ChartingOHLCResponse>;
/**
* Look up the NSE script code (token) for an equity symbol using the charting domain.
* The `scripCode` in the returned object is the value that must be passed as `token`
* to {@link getEquityChartHistoricalData}.
* @param symbol Equity symbol with series code (e.g., 'ONGC') OR plain symbol (e.g., 'ONGC')
* @param segment Optional market segment filter (default: empty string, returns all segments)
* @returns Symbol information including scripCode / token
*/
getEquitySymbolInfo(symbol: string, segment?: string): Promise<ChartingSymbolInfo>;
/**
*
* @returns List of NSE equity symbols
*/
getAllStockSymbols(): Promise<string[]>;
private getPreOpenMarketCached;
private resolveCapitalMarketType;
private fetchEquityDetailsEnrichment;
private enrichPreOpenEquityDetails;
/**
* Equity quote with fallback when /api/quote-equity is blocked (Akamai 403).
* Primary: quote-equity JSON; fallback: market-data-pre-open row for the symbol.
*/
getEquityDetails(symbol: string): Promise<EquityDetails>;
/**
*
* @param symbol
* @returns
*/
getEquityTradeInfo(symbol: string): Promise<EquityTradeInfo>;
/**
*
* @param symbol
* @returns
*/
getEquityCorporateInfo(symbol: string): Promise<EquityCorporateInfo>;
/**
*
* @param symbol
* @returns
*/
getEquityIntradayData(symbol: string): Promise<IntradayData>;
/**
*
* @param symbol
* @param range
* @returns
*/
getEquityHistoricalData(symbol: string, range?: DateRange): Promise<EquityHistoricalData[]>;
/**
*
* @param symbol
* @returns
*/
getEquitySeries(symbol: string): Promise<SeriesData>;
/**
*
* @param index
* @returns
*/
getEquityStockIndices(index: string): Promise<IndexDetails>;
/**
*
* @param index
* @returns
*/
getIndexIntradayData(index: string): Promise<IntradayData>;
/**
* Get option chain contract information (expiry dates and strike prices) for an index
*
* @param indexSymbol
* @returns
*/
getIndexOptionChainContractInfo(indexSymbol: string): Promise<OptionChainContractInfo>;
/**
*
* @param indexSymbol
* @param expiry Optional expiry date in DD-MMM-YYYY format (e.g., "23-Dec-2025").
* If not provided, will fetch nearest upcoming expiry
* @returns
*/
getIndexOptionChain(indexSymbol: string, expiry?: string): Promise<IndexOptionChainData>;
/**
*
* @param symbol
* @returns
*/
getEquityOptionChain(symbol: string): Promise<EquityOptionChainData>;
/**
*
* @param symbol
* @returns
*/
getCommodityOptionChain(symbol: string): Promise<CommodityOptionChainData>;
/**
* Get NSE glossary content
* @returns Glossary content
*/
getGlossary(): Promise<Glossary>;
/**
* Get trading holidays
* @returns List of trading holidays
*/
getTradingHolidays(): Promise<HolidaysBySegment>;
/**
* Get clearing holidays
* @returns List of clearing holidays
*/
getClearingHolidays(): Promise<HolidaysBySegment>;
/**
* Get market status
* @returns Current market status
*/
getMarketStatus(): Promise<MarketStatus>;
/**
* Get market turnover
* @returns Market turnover data
*/
getMarketTurnover(): Promise<MarketTurnover>;
/**
* Get all indices
* @returns List of all indices
*/
getAllIndices(): Promise<AllIndicesData>;
/**
* Get index names
* @returns List of index names
*/
getIndexNames(): Promise<IndexNamesData>;
/**
* Get circulars
* @returns List of circulars
*/
getCirculars(): Promise<CircularsData>;
/**
* Get latest circulars
* @returns List of latest circulars
*/
getLatestCirculars(): Promise<LatestCircularData>;
/**
* Get equity master
* @returns Equity master data with categorized indices
*/
getEquityMaster(): Promise<EquityMaster>;
/**
* Get pre-open market data
* @returns Pre-open market data
*/
getPreOpenMarketData(): Promise<PreOpenMarketData>;
/**
* Get merged daily reports for capital market
* @returns Daily reports for capital market
*/
getMergedDailyReportsCapital(): Promise<MergedDailyReportsData[]>;
/**
* Get merged daily reports for derivatives
* @returns Daily reports for derivatives
*/
getMergedDailyReportsDerivatives(): Promise<MergedDailyReportsData[]>;
/**
* Get merged daily reports for debt market
* @returns Daily reports for debt market
*/
getMergedDailyReportsDebt(): Promise<MergedDailyReportsData[]>;
/**
* Get technical indicators for a specific equity symbol
* @param symbol - The equity symbol (e.g., 'RELIANCE', 'TCS')
* @param period - Number of days for historical data (default: 200)
* @param options - Optional configuration for indicators
* @returns Promise<TechnicalIndicators>
*/
getTechnicalIndicators(symbol: string, period?: number, options?: {
smaPeriods?: number[];
emaPeriods?: number[];
rsiPeriod?: number;
macdFast?: number;
macdSlow?: number;
macdSignal?: number;
bbPeriod?: number;
bbStdDev?: number;
stochK?: number;
stochD?: number;
williamsRPeriod?: number;
atrPeriod?: number;
adxPeriod?: number;
cciPeriod?: number;
mfiPeriod?: number;
rocPeriod?: number;
momentumPeriod?: number;
}): Promise<TechnicalIndicators>;
}
export type { DateRange, IntradayData, EquityDetails, EquityTradeInfo, EquityHistoricalData, SeriesData, IndexDetails, EquityOptionChainData, IndexOptionChainData, CommodityOptionChainData, OptionChainContractInfo, EquityCorporateInfo, Glossary, HolidaysBySegment, MarketStatus, MarketTurnover, AllIndicesData, IndexNamesData, CircularsData, LatestCircularData, EquityMaster, PreOpenMarketData, MergedDailyReportsData, TechnicalIndicators, ChartingSymbolInfo, ChartingOHLCItem, ChartingOHLCResponse, EquityInfo, EquityMetadata, EquitySecurityInfo, EquityPriceInfo, EquityPreOpenMarket, EquityHistoricalInfo, EquityOptionChainItem, IndexEquityInfo, IndexRecords, CommodityRecords, Filtered, Holiday, MarketState, MarketCap, IndicativeNifty50, GiftNifty, Datum, PreOpenDetails, OptionsData, OptionsDetails };
//# sourceMappingURL=index.d.ts.map