Fetch a single, current snapshot of price, OHLC, circuit limits and top-of-book for one instrument by exchange + token.
API Endpoint
Method
POST
URL
https://api.shoonya.com/NorenWClientAPI/GetQuotes
Content-Type
application/x-www-form-urlencoded
Payload
jData=<JSON payload>&jKey=<AccessToken> — requires a valid AccessToken from Login.
Overview
GetQuotes returns a one-shot snapshot for a single scrip — last traded price, today's OHLC, upper/lower circuit, 52-week range, and best bid/offer (depth level 1 only). It does not stream; each call returns the state at that instant.
Purpose
Use this for on-demand lookups — e.g. showing a quote before order placement, or a periodic poll for a watchlist row. For anything that needs continuous updates (option chains, live tickers, tick-by-tick charts), subscribe via Subscribe to Market Feed instead of polling this endpoint in a loop — polling at low intervals will burn into your rate limits fast.
Parameters
Field
Type
Required
Description
uid
string
required
Your account/client ID.
exch
string
required
Exchange segment, e.g. NSE, NFO, BSE, MCX.
token
string
required
Numeric instrument token for the scrip. Look this up via Search Scrip or the Symbol Master — don't hardcode tokens, they can change on contract rollover.
Token doesn't exist on the given exchange segment — usually a stale token after a contract rollover or corporate action.
Session_Expired
Access token expired or invalid — re-authenticate via Token Renewal.
Best practices
Fields are all strings, including numeric ones (lp, v, etc.) — cast explicitly before doing arithmetic.
bp1/sp1 and bq1/sq1 are level-1 depth only.
A sp1/bp1 of 0.00 means no resting order at that side, not a zero price — don't treat it as tradeable.
Python example
python
from shoonya_api import ShoonyaClient
client = ShoonyaClient(session_token=Acesstoken)
q = client.get_quotes(exchange="NSE", token="22")
print(f"{q.tsym}: LTP {q.lp} Day range {q.l}-{q.h}")
Notes
ltt/ltd reflect the last trade time/date on the exchange, which can lag behind request_time during low-liquidity periods — a stale ltt doesn't mean the call failed, it means the scrip simply hasn't traded recently.
API Endpoint
POSThttps://api.shoonya.com/NorenWClientAPI/GetQuotesapplication/x-www-form-urlencodedjData=<JSON payload>&jKey=<AccessToken>— requires a validAccessTokenfrom Login.Overview
GetQuotes returns a one-shot snapshot for a single scrip — last traded price, today's OHLC, upper/lower circuit, 52-week range, and best bid/offer (depth level 1 only). It does not stream; each call returns the state at that instant.
Purpose
Use this for on-demand lookups — e.g. showing a quote before order placement, or a periodic poll for a watchlist row. For anything that needs continuous updates (option chains, live tickers, tick-by-tick charts), subscribe via Subscribe to Market Feed instead of polling this endpoint in a loop — polling at low intervals will burn into your rate limits fast.
Parameters
NSE,NFO,BSE,MCX.Request example
Response example
Error handling
Best practices
lp,v, etc.) — cast explicitly before doing arithmetic.bp1/sp1andbq1/sq1are level-1 depth only.sp1/bp1of0.00means no resting order at that side, not a zero price — don't treat it as tradeable.Python example
Notes
ltt/ltdreflect the last trade time/date on the exchange, which can lag behindrequest_timeduring low-liquidity periods — a stalelttdoesn't mean the call failed, it means the scrip simply hasn't traded recently.