Getting Instrument Token of a Scrip Using Python and Zerodha Kite LTP Method

Amit Kumar Ghosh
3 min readSep 25, 2023

--

The KiteConnect APIs

We shall be using Zerodha’s Kite Connect API to back test the given dataset. We’re a Zerodha Partner and if you’ve signed up with Unofficed, then You’ll get access to the raw file used to make this tutorial.

Kite Connect offers REST-like HTTP APIs with a wide range of capabilities which will suffice our needs.

Step 1 — Initialization of Kite Object

As You can see from the example of KiteConnect Python API from Zerodha’s GitHub, the Step 1 is to create the Kite object

import logging
from kiteconnect import KiteConnect

logging.basicConfig(level=logging.DEBUG)

kite = KiteConnect(api_key="your_api_key")

# Redirect the user to the login url obtained
# from kite.login_url(), and receive the request_token
# from the registered redirect url after the login flow.
# Once you have the request_token, obtain the access_token
# as follows.

data = kite.generate_session("request_token_here", api_secret="your_secret")
kite.set_access_token(data["access_token"])

Discussion on Kite Historical Data Syntax

Zerodha’s KiteConnect API gives historical data for free. As per their documentation, We need to use kite.historical_data() function.

The syntax looks like –

def historical_data(self, instrument_token, from_date, to_date, interval, continuous=False, oi=False)

The documentation says –
Retrieve historical data (candles) for an instrument.
Although the actual response JSON from the API does not have field names such has ‘open’, ‘high’ etc., this function call structures the data into an array of objects with field names. For example:

  • instrument_token is the instrument identifier (retrieved from the instruments()) call.
  • from_date is the From date (datetime object or string in format of yyyy-mm-dd HH:MM:SS.
  • to_date is the To date (datetime object or string in format of yyyy-mm-dd HH:MM:SS).
  • interval is the candle interval (minute, day, 5 minute etc.).
  • continuous is a boolean flag to get continuous data for futures and options instruments.
  • oi is a boolean flag to get open interest.

Step 2 — Getting Instrument Token of a Scrip Using Zerodha API

So We need to get the instrument_token. Now, there are two methods to get the Instrument Token of a Scrip.

Kite LTP Method

Instrument List Method

The method with Instrument List is the most popular one but in this chapter, We will proceed using the Kite LTP (Last Traded Price) method to find the instrument token for RELIANCE.

# Use Kite Connect's search instruments API to find RELIANCE's instrument token
instruments = kite.ltp(['NSE:RELIANCE'])

In this part of the code, we send a request to the Kite Connect API to get the last traded price for RELIANCE, specified by its trading symbol ‘NSE:RELIANCE‘. The response, stored in the instruments variable, contains instrument-related information, including the instrument token. The output will be –

{'NSE:RELIANCE': {'instrument_token': 738561, 'last_price': 2457.85}}

Step 3 — Checking for Instrument Token

After retrieving the instrument data, we need to check if we successfully obtained the instrument token for RELIANCE.

# Check if the instrument token for RELIANCE is in the instruments dictionary
if 'NSE:RELIANCE' in instruments:
instrument_token = instruments['NSE:RELIANCE']['instrument_token']

In this code snippet, we check if the trading symbol ‘NSE:RELIANCE‘ exists in the instruments dictionary. If it does, we extract the instrument token and assign it to the instrument_token variable for later use.

A Note from Unofficed

Thank you for being a valued member of our community! Before you depart:

👏 Applaud the story and give a follow to the author 👉

📰 Explore additional content on the Unofficed

📚 Join our FREE Masterclass

📈 Unlock potent trading tools

--

--

Amit Kumar Ghosh
Amit Kumar Ghosh

Written by Amit Kumar Ghosh

Aloha, I’m Amit Ghosh, a web entrepreneur and avid blogger. Bitten by entrepreneurial bug, I got kicked out from college and ended up being millionaire!

No responses yet