Get Instruments Info
Query for the instrument specification of online trading pairs.
Covers: Spot / USDT contract / USDC contract / Inverse contract / Option
info
- Spot does not support pagination, so
limit,cursorare invalid. - When querying by
baseCoin, regardless of if category=linearorinverse, the result will contain USDT contract, USDC contract and Inverse contract symbols.
caution
- This endpoint returns 500 entries by default. There are now more than 500
linearsymbols on the platform. As a result, you will need to usecursorfor pagination orlimitto get all entries. - During periods of extreme market volatility, this interface may experience increased latency or temporary delays in data delivery
HTTP Request
GET /v5/market/instruments-info
Request Parameters
| Parameter | Required | Type | Comments |
|---|---|---|---|
| category | true | string | Product type. spot,linear,inverse,option |
| symbol | false | string | Symbol name, like BTCUSDT, uppercase only |
| symbolType | false | string | SymbolType:The region to which the trading pair belongs,only forlinear,inverse,spot |
| status | false | string | Symbol status filter
|
| baseCoin | false | string | Base coin, uppercase only
|
| limit | false | integer | Limit for data size per page. [1, 1000]. Default: 500 |
| cursor | false | string | Cursor. Use the nextPageCursor token from the response to retrieve the next page of the result set |
Response Parameters
- Linear/Inverse
- Option
- Spot
| Parameter | Type | Comments |
|---|---|---|
| category | string | Product type |
| nextPageCursor | string | Cursor. Used to pagination |
| list | array | Object |
| > symbol | string | Symbol name |
| > contractType | string | Contract type |
| > status | string | Instrument status |
| > baseCoin | string | Base coin |
| > quoteCoin | string | Quote coin | > symbolType | string | the region to which the trading pair belongs |
| > launchTime | string | Launch timestamp (ms) |
| > deliveryTime | string | Delivery timestamp (ms) |
| > deliveryFeeRate | string | Delivery fee rate |
| > priceScale | string | Price scale |
| > leverageFilter | Object | Leverage attributes |
| >> minLeverage | string | Minimum leverage |
| >> maxLeverage | string | Maximum leverage |
| >> leverageStep | string | The step to increase/reduce leverage |
| > priceFilter | Object | Price attributes |
| >> minPrice | string | Minimum order price |
| >> maxPrice | string | Maximum order price |
| >> tickSize | string | The step to increase/reduce order price |
| > lotSizeFilter | Object | Size attributes |
| >> minNotionalValue | string | Minimum notional value |
| >> maxOrderQty | string | Maximum quantity for Limit and PostOnly order |
| >> maxMktOrderQty | string | Maximum quantity for Market order |
| >> minOrderQty | string | Minimum order quantity |
| >> qtyStep | string | The step to increase/reduce order quantity |
| >> postOnlyMaxOrderQty | string | deprecated, please use maxOrderQty |
| > unifiedMarginTrade | boolean | Whether to support unified margin trade |
| > fundingInterval | integer | Funding interval (minute) |
| > settleCoin | string | Settle coin |
| > copyTrading | string | Copy trade symbol or not |
| > upperFundingRate | string | Upper limit of funding date |
| > lowerFundingRate | string | Lower limit of funding date |
| > displayName | string | The USDC futures & perpetual name displayed in the Web or App |
| > forbidUplWithdrawal | boolean | Whether to prohibit unrealised profit withdrawal |
| > riskParameters | object | Risk parameters for limit order price. Note that the formula changed in Jan 2025 |
| >> priceLimitRatioX | string | Ratio X |
| >> priceLimitRatioY | string | Ratio Y |
| > isPreListing | boolean | |
| > preListingInfo | object | |
| >> curAuctionPhase | string | The current auction phase |
| >> phases | array<object> | Each phase time info |
| >>> phase | string | pre-market trading phase |
| >>> startTime | string | The start time of the phase, timestamp(ms) |
| >>> endTime | string | The end time of the phase, timestamp(ms) |
| >> auctionFeeInfo | object | Action fee info |
| >>> auctionFeeRate | string | The trading fee rate during auction phase |
| >>> takerFeeRate | string | The taker fee rate during continues trading phase |
| >>> makerFeeRate | string | The maker fee rate during continues trading phase |
| >> skipCallAuction | boolean | false, true Whether the pre-market contract skips the call auction phase |
| Parameter | Type | Comments |
|---|---|---|
| category | string | Product type |
| nextPageCursor | string | Cursor. Used to pagination |
| list | array | Object |
| > symbol | string | Symbol name |
| > optionsType | string | Option type. Call, Put |
| > status | string | Instrument status |
| > baseCoin | string | Base coin |
| > quoteCoin | string | Quote coin |
| > settleCoin | string | Settle coin |
| > launchTime | string | Launch timestamp (ms) |
| > deliveryTime | string | Delivery timestamp (ms) |
| > deliveryFeeRate | string | Delivery fee rate |
| > priceFilter | Object | Price attributes |
| >> minPrice | string | Minimum order price |
| >> maxPrice | string | Maximum order price |
| >> tickSize | string | The step to increase/reduce order price |
| > lotSizeFilter | Object | Size attributes |
| >> maxOrderQty | string | Maximum order quantity |
| >> minOrderQty | string | Minimum order quantity |
| >> qtyStep | string | The step to increase/reduce order quantity |
| > displayName | string | The option name displayed in the Web or App |
| Parameter | Type | Comments |
|---|---|---|
| category | string | Product type |
| list | array | Object |
| > symbol | string | Symbol name |
| > baseCoin | string | Base coin |
| > quoteCoin | string | Quote coin |
| > innovation | string | deprecated, please use symbolType |
| > symbolType | string | the region to which the trading pair belongs |
| > status | string | Instrument status |
| > marginTrading | string | Whether or not this symbol supports margin trading
|
| > stTag | string | Whether or not it has an special treatment label. 0: false, 1: true |
| > lotSizeFilter | Object | Size attributes |
| >> basePrecision | string | The precision of base coin |
| >> quotePrecision | string | The precision of quote coin |
| >> minOrderQty | string | Minimum order quantity, deprecated, no longer check minOrderQty, check minOrderAmt instead |
| >> maxOrderQty | string | Maximum order quantity, deprecated, please refer to maxLimitOrderQty, maxMarketOrderQty based on order type |
| >> minOrderAmt | string | Minimum order amount |
| >> maxOrderAmt | string | Maximum order amount, deprecated, no longer check maxOrderAmt, check maxLimitOrderQty and maxMarketOrderQty instead |
| >> maxLimitOrderQty | string | Maximum Limit order quantity
|
| string | Maximum Market order quantity | |
| >> postOnlyMaxLimitOrderSize | string | Maximum limit order size for Post-only and RPI orders |
| > priceFilter | Object | Price attributes |
| >> tickSize | string | The step to increase/reduce order price |
| > riskParameters | Object | Risk parameters for limit order price, refer to announcement |
| >> priceLimitRatioX | string | Ratio X |
| >> priceLimitRatioY | string | Ratio Y |
Request Example
- Linear
- Option
- Spot
- HTTP
- Python
- Go
- Java
- Node.js
GET /v5/market/instruments-info?category=linear&symbol=BTCUSDT HTTP/1.1
Host: api-testnet.bybit.com
from pybit.unified_trading import HTTP
session = HTTP(testnet=True)
print(session.get_instruments_info(
category="linear",
symbol="BTCUSDT",
))
import (
"context"
"fmt"
bybit "github.com/bybit-exchange/bybit.go.api"
)
client := bybit.NewBybitHttpClient("", "", bybit.WithBaseURL(bybit.TESTNET))
params := map[string]interface{}{"category": "linear", "symbol": "BTCUSDT"}
client.NewUtaBybitServiceWithParams(params).GetInstrumentInfo(context.Background())
import com.bybit.api.client.domain.CategoryType;
import com.bybit.api.client.domain.market.*;
import com.bybit.api.client.domain.market.request.MarketDataRequest;
import com.bybit.api.client.service.BybitApiClientFactory;
var client = BybitApiClientFactory.newInstance().newAsyncMarketDataRestClient();
var instrumentInfoRequest = MarketDataRequest.builder().category(CategoryType.LINEAR).symbol("BTCUSDT").instrumentStatus(InstrumentStatus.TRADING).limit(500).build();
client.getInstrumentsInfo(instrumentInfoRequest,System.out::println);
const { RestClientV5 } = require('bybit-api');
const client = new RestClientV5({
testnet: true,
});
client
.getInstrumentsInfo({
category: 'linear',
symbol: 'BTCUSDT',
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});
- HTTP
- Python
- Go
- Java
- Node.js
GET /v5/market/instruments-info?category=option&symbol=ETH-3JAN23-1250-P HTTP/1.1
Host: api-testnet.bybit.com
from pybit.unified_trading import HTTP
session = HTTP(testnet=True)
print(session.get_instruments_info(
category="option",
symbol="ETH-3JAN23-1250-P",
))
import (
"context"
"fmt"
bybit "github.com/bybit-exchange/bybit.go.api"
)
client := bybit.NewBybitHttpClient("", "", bybit.WithBaseURL(bybit.TESTNET))
params := map[string]interface{}{"category": "option", "symbol": "ETH-3JAN23-1250-P"}
client.NewUtaBybitServiceWithParams(params).GetInstrumentInfo(context.Background())
import com.bybit.api.client.domain.CategoryType;
import com.bybit.api.client.domain.market.*;
import com.bybit.api.client.domain.market.request.MarketDataRequest;
import com.bybit.api.client.service.BybitApiClientFactory;
var client = BybitApiClientFactory.newInstance().newAsyncMarketDataRestClient();
var instrumentInfoRequest = MarketDataRequest.builder().category(CategoryType.OPTION).symbol("ETH-3JAN23-1250-P").instrumentStatus(InstrumentStatus.TRADING).limit(500).build();
client.getInstrumentsInfo(instrumentInfoRequest,System.out::println);
const { RestClientV5 } = require('bybit-api');
const client = new RestClientV5({
testnet: true,
});
client
.getInstrumentsInfo({
category: 'option',
symbol: 'ETH-3JAN23-1250-P',
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});
- HTTP
- Python
- Go
- Java
- Node.js
GET /v5/market/instruments-info?category=spot&symbol=BTCUSDT HTTP/1.1
Host: api-testnet.bybit.com
from pybit.unified_trading import HTTP
session = HTTP(testnet=True)
print(session.get_instruments_info(
category="spot",
symbol="BTCUSDT",
))
import (
"context"
"fmt"
bybit "github.com/bybit-exchange/bybit.go.api"
)
client := bybit.NewBybitHttpClient("", "", bybit.WithBaseURL(bybit.TESTNET))
params := map[string]interface{}{"category": "spot", "symbol": "BTCUSDT"}
client.NewUtaBybitServiceWithParams(params).GetInstrumentInfo(context.Background())
import com.bybit.api.client.domain.*;
import com.bybit.api.client.domain.market.*;
import com.bybit.api.client.domain.market.request.*;
import com.bybit.api.client.service.BybitApiClientFactory;
var client = BybitApiClientFactory.newInstance().newAsyncMarketDataRestClient();
var instrumentInfoRequest = MarketDataRequest.builder().category(CategoryType.SPOT).symbol("BTCUSDT").instrumentStatus(InstrumentStatus.TRADING).limit(500).build();
client.getInstrumentsInfo(instrumentInfoRequest,System.out::println);
const { RestClientV5 } = require('bybit-api');
const client = new RestClientV5({
testnet: true,
});
client
.getInstrumentsInfo({
category: 'spot',
symbol: 'BTCUSDT',
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});
Response Example
- Linear
- Option
- Spot
// official USDT Perpetual instrument structure
{
"retCode": 0,
"retMsg": "OK",
"result": {
"category": "linear",
"list": [
{
"symbol": "BTCUSDT",
"contractType": "LinearPerpetual",
"status": "Trading",
"baseCoin": "BTC",
"quoteCoin": "USDT",
"launchTime": "1585526400000",
"deliveryTime": "0",
"deliveryFeeRate": "",
"priceScale": "2",
"leverageFilter": {
"minLeverage": "1",
"maxLeverage": "100.00",
"leverageStep": "0.01"
},
"priceFilter": {
"minPrice": "0.10",
"maxPrice": "1999999.80",
"tickSize": "0.10"
},
"lotSizeFilter": {
"maxOrderQty": "1190.000",
"minOrderQty": "0.001",
"qtyStep": "0.001",
"postOnlyMaxOrderQty": "1190.000",
"maxMktOrderQty": "500.000",
"minNotionalValue": "5"
},
"unifiedMarginTrade": true,
"fundingInterval": 480,
"settleCoin": "USDT",
"copyTrading": "both",
"upperFundingRate": "0.00375",
"lowerFundingRate": "-0.00375",
"isPreListing": false,
"preListingInfo": null,
"riskParameters": {
"priceLimitRatioX": "0.01",
"priceLimitRatioY": "0.02"
},
"symbolType": ""
}
],
"nextPageCursor": ""
},
"retExtInfo": {},
"time": 1735809771618
}
// Pre-market Perpetual instrument structure
{
"retCode": 0,
"retMsg": "OK",
"result": {
"category": "linear",
"list": [
{
"symbol": "BIOUSDT",
"contractType": "LinearPerpetual",
"status": "PreLaunch",
"baseCoin": "BIO",
"quoteCoin": "USDT",
"launchTime": "1735032510000",
"deliveryTime": "0",
"deliveryFeeRate": "",
"priceScale": "4",
"leverageFilter": {
"minLeverage": "1",
"maxLeverage": "5.00",
"leverageStep": "0.01"
},
"priceFilter": {
"minPrice": "0.0001",
"maxPrice": "1999.9998",
"tickSize": "0.0001"
},
"lotSizeFilter": {
"maxOrderQty": "70000",
"minOrderQty": "1",
"qtyStep": "1",
"postOnlyMaxOrderQty": "70000",
"maxMktOrderQty": "14000",
"minNotionalValue": "5"
},
"unifiedMarginTrade": true,
"fundingInterval": 480,
"settleCoin": "USDT",
"copyTrading": "none",
"upperFundingRate": "0.05",
"lowerFundingRate": "-0.05",
"isPreListing": true,
"preListingInfo": {
"curAuctionPhase": "ContinuousTrading",
"phases": [
{
"phase": "CallAuction",
"startTime": "1735113600000",
"endTime": "1735116600000"
},
{
"phase": "CallAuctionNoCancel",
"startTime": "1735116600000",
"endTime": "1735116900000"
},
{
"phase": "CrossMatching",
"startTime": "1735116900000",
"endTime": "1735117200000"
},
{
"phase": "ContinuousTrading",
"startTime": "1735117200000",
"endTime": ""
}
],
"auctionFeeInfo": {
"auctionFeeRate": "0",
"takerFeeRate": "0.001",
"makerFeeRate": "0.0004"
}
},
"riskParameters": {
"priceLimitRatioX": "0.05",
"priceLimitRatioY": "0.1"
},
"symbolType": ""
}
],
"nextPageCursor": "first%3DBIOUSDT%26last%3DBIOUSDT"
},
"retExtInfo": {},
"time": 1735810114435
}
{
"retCode": 0,
"retMsg": "OK",
"result": {
"category": "option",
"nextPageCursor": "",
"list": [
{
"symbol": "BTC-27MAR26-70000-P-USDT",
"status": "Trading",
"baseCoin": "BTC",
"quoteCoin": "USDT",
"settleCoin": "USDT",
"optionsType": "Put",
"launchTime": "1743669649256",
"deliveryTime": "1774598400000",
"deliveryFeeRate": "0.00015",
"priceFilter": {
"minPrice": "5",
"maxPrice": "1110000",
"tickSize": "5"
},
"lotSizeFilter": {
"maxOrderQty": "500",
"minOrderQty": "0.01",
"qtyStep": "0.01"
},
"displayName": "BTCUSDT-27MAR26-70000-P"
}
]
},
"retExtInfo": {},
"time": 1672712537130
}
{
"retCode": 0,
"retMsg": "OK",
"result": {
"category": "spot",
"list": [
{
"symbol": "BTCUSDT",
"baseCoin": "BTC",
"quoteCoin": "USDT",
"innovation": "0",
"status": "Trading",
"marginTrading": "utaOnly",
"stTag": "0",
"lotSizeFilter": {
"basePrecision": "0.000001",
"quotePrecision": "0.0000001",
"minOrderQty": "0.000011",
"maxOrderQty": "83",
"minOrderAmt": "5",
"maxOrderAmt": "8000000",
"maxLimitOrderQty": "83",
"maxMarketOrderQty": "41.5",
"postOnlyMaxLimitOrderSize":"60000"
},
"priceFilter": {
"tickSize": "0.1"
},
"riskParameters": {
"priceLimitRatioX": "0.005",
"priceLimitRatioY": "0.01"
},
"symbolType": ""
}
]
},
"retExtInfo": {},
"time": 1760027412300
}