Skip to content

Market Quote and Instrument

Getting Token Numbers for Market Data

To fetch OHLC, LTP, or quote data for Type B users, you'll need the instrument token numbers. Use the Instrument Script Master API first to get the consolidated list of instruments with their corresponding token numbers and script names. Then use these token numbers in the Market OHLC Data API to retrieve the market data.

Market Quote and Instrument APIs

method path description
GET https://api.mstock.trade/openapi/typeb/typeb/instruments/quote View OHLC market data
GET https://api.mstock.trade/openapi/typeb/instruments/OpenAPIScripMaster Provides the consolidated, csv formatted list of instruments

Market OHLC Data

This endpoint returns the OHLC market data identified by the exchange:tradingsymbol combination that are passed as values to the query parameter.

Request Headers -

  • X-Mirae-Version: Specifies the version of the API being used. In this case, it is set to 1.

  • Authorization: A token-based authentication header. The format is token api_key:access_token.

  • X-PrivateKey: api_key

curl --location --request GET 'https://api.mstock.trade/openapi/typeb/instruments/quote' \
--header 'X-Mirae-Version: 1' \
--header 'Authorization: Bearer jwtToken' \
--header 'X-PrivateKey: api_key' \
--header 'Content-Type: application/json' \
--data '{
    "mode": "OHLC",
    "exchangeTokens": {
        "NSE": ["3045"],
        "BSE": ["500410"]
    }
}'
import axios from 'axios';

const response = await axios.get('https://api.mstock.trade/openapi/typeb/instruments/quote', {
headers: {
    'X-Mirae-Version': '1',
    'Authorization': 'Bearer jwtToken',
    'X-PrivateKey': 'api_key',
    'Content-Type': 'application/json'
},
// data: '{\n    "mode": "OHLC",\n    "exchangeTokens": {\n        "NSE": ["3045"],\n        "BSE": ["500410"]\n    }\n}',
data: {
    'mode': 'OHLC',
    'exchangeTokens': {
    'NSE': [
        '3045'
    ],
    'BSE': [
        '500410'
    ]
    }
}
});
import http.client
import json

conn = http.client.HTTPConnection('api.mstock.trade')
headers = {
    'X-Mirae-Version': '1',
    'Authorization': 'Bearer jwtToken',
    'X-PrivateKey': 'api_key',
    'Content-Type': 'application/json',
}
json_data = {
    'mode': 'OHLC',
    'exchangeTokens': {
        'NSE': [
            '3045',
        ],
        'BSE': [
            '500410',
        ],
    },
}
conn.request(
    'GET',
    'openapi/typeb/instruments/quote',
    json.dumps(json_data),
    # '{\n    "mode": "OHLC",\n    "exchangeTokens": {\n        "NSE": ["3045"],\n        "BSE": ["500410"]\n    }\n}',
    headers
)
response = conn.getresponse()
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newBuilder()
    .followRedirects(HttpClient.Redirect.NORMAL)
    .build();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.mstock.trade/openapi/typeb/instruments/quote"))
    .method("GET", BodyPublishers.ofString("{\n    \"mode\": \"OHLC\",\n    \"exchangeTokens\": {\n        \"NSE\": [\"3045\"],\n        \"BSE\": [\"500410\"]\n    }\n}"))
    .setHeader("X-Mirae-Version", "1")
    .setHeader("Authorization", "Bearer jwtToken")
    .setHeader("X-PrivateKey", "api_key")
    .setHeader("Content-Type", "application/json")
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

Query Parameter -

Field Type Description
mode string OHLC LTP
exchangeTokens string "NSE": ["3045"] "BSE": ["500410"]

Request Body - This endpoint does not require a request body or additional parameters in the query string for the retrieval of orders.

Request Response -

The response of the request will be based on authentication outcome.

  • Success (HTTP Status 200): Successful OHLC Response

{
    "status": "true",
    "message": "SUCCESS",
    "errorcode": "",
    "data": {
        "fetched": [
            {
                "exchange": "NSE",
                "tradingSymbol": "SBIN-EQ",
                "symbolToken": "3045",
                "ltp": 571.8,
                "open": 568.75,
                "high": 568.75,
                "low": 567.05,
                "close": 566.5
            }
        ],
        "unfetched": []
    }
}
- Success (HTTP Status 200): Successful LTP Response

{
    "status": "true",
    "message": "SUCCESS",
    "errorcode": "",
    "data": {
        "fetched": [
            {
                "exchange": "NSE",
                "tradingSymbol": "SBIN-EQ",
                "symbolToken": "3045",
                "ltp": 571.75
            }
        ],
        "unfetched": []
    }
}
  • Failure (HTTP Status 401): If the order fails due to invalid parameters, authentication issues, or other errors, the server will return an error message with below json format.
{
    "status": "false",
    "message": "Invalid request. Please try again.",
    "errorcode": "IA401",
    "data": null
}
  • Failure (HTTP Status 400): If the API Key is Invalid or expired.
{
    "status": "false",
    "message": "API is suspended/expired for use. Please check your API subscription and try again.",
    "errorcode": "IA403",
    "data": null
}

Instrument Script Master

This endpoint provides the consolidated, csv formatted list of instruments available for trading

Request Headers -

  • X-Mirae-Version: Specifies the version of the API being used. In this case, it is set to 1.

  • Authorization: A token-based authentication header. The format is token api_key:access_token.

  • X-PrivateKey : api_key

curl --location 'https://api.mstock.trade/openapi/typeb/instruments/OpenAPIScripMaster' \
--header 'X-Mirae-Version: 1' \
--header 'Authorization: Bearer jwt_Token' \
--header 'X-PrivateKey: api_key'
import axios from 'axios';

const response = await axios.get('https://api.mstock.trade/openapi/typeb/instruments/OpenAPIScripMaster', {
headers: {
    'X-Mirae-Version': '1',
    'Authorization': 'Bearer jwt_Token',
    'X-PrivateKey': 'api_key'
}
});
import http.client

conn = http.client.HTTPSConnection('api.mstock.trade')
headers = {
    'X-Mirae-Version': '1',
    'Authorization': 'Bearer jwt_Token',
    'X-PrivateKey': 'api_key',
}
conn.request('GET', 'openapi/typeb/instruments/OpenAPIScripMaster', headers=headers)
response = conn.getresponse()
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newBuilder()
    .followRedirects(HttpClient.Redirect.NORMAL)
    .build();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.mstock.trade/openapi/typeb/instruments/OpenAPIScripMaster"))
    .GET()
    .setHeader("X-Mirae-Version", "1")
    .setHeader("Authorization", "Bearer jwt_Token")
    .setHeader("X-PrivateKey", "api_key")
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

Request Body - This endpoint does not require a request body or additional parameters in the query string for the retrieval of orders.

Request Response -

The response of the request will be based on authentication outcome.

  • Success (HTTP Status 200): On successful order update, the server returns a JSON object containing the order ID and status.
[
     {
        "token": "877966",
        "symbol": "SENSEX",
        "name": "SENSEX25O2382700CE",
        "expiry": "23Oct2025",
        "strike": "82700",
        "lotsize": "20",
        "instrumenttype": "OPTIDX",
        "exch_seg": "BFO",
        "tick_size": "0.05"
    },
    {
        "token": "9552",
        "symbol": "RVNL",
        "name": "RVNL-EQ",
        "expiry": "",
        "strike": "",
        "lotsize": "1",
        "instrumenttype": "EQ",
        "exch_seg": "NSE",
        "tick_size": "0.05"
    },
]
  • Failure (HTTP Status 401): If the order fails due to invalid parameters, authentication issues, or other errors, the server will return an error message with below json format.
{
    "status": "false",
    "message": "Invalid request. Please try again.",
    "errorcode": "IA401",
    "data": null
}
  • Failure (HTTP Status 400): If the API Key is Invalid or expired.
{
    "status": "false",
    "message": "API is suspended/expired for use. Please check your API subscription and try again.",
    "errorcode": "IA403",
    "data": null
}