BYTETOOLS

Bybit Public Market Data API

Free Bybit public market API with no key: spot and derivatives tickers, order books, klines, funding rates and open interest. Tested curl example.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the Bybit Public Market Data API?

The Bybit public market data API is free and key-free, providing spot and derivatives market data — ticker prices, order book depth, candlesticks, funding rates and open interest — across the exchange's trading pairs.

Bybit's public market endpoints need no authentication, and its derivatives coverage is the distinguishing feature: funding rates and open interest for perpetual contracts are data points most free crypto APIs do not expose at all.

The `category` parameter is mandatory and selects the market type — `spot`, `linear` for USDT perpetuals, `inverse` for coin-margined contracts. Omitting it or choosing the wrong one is the most common cause of an empty result.

Quick facts

Base URL
https://api.bybit.com/v5
Authentication
Public market data needs no key. Trading and account endpoints require an API key with signing.
Rate limit
Roughly 120 requests per second per IP for public endpoints.
Pricing
Free for public market data.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the Bybit Public Market Data API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Fetch a spot market ticker

GET https://api.bybit.com/v5/market/tickers?category=spot&symbol=BTCUSDT

curl
curl 'https://api.bybit.com/v5/market/tickers?category=spot&symbol=BTCUSDT'
JavaScript (fetch)
const res = await fetch("https://api.bybit.com/v5/market/tickers?category=spot&symbol=BTCUSDT");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.bybit.com/v5/market/tickers?category=spot&symbol=BTCUSDT", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "retCode": 0,
  "retMsg": "OK",
  "result": {
    "category": "spot",
    "list": [
      {
        "symbol": "BTCUSDT",
        "bid1Price": "69762.8",
        "bid1Size": "0.273172",
        "ask1Price": "69762.9",
        "ask1Size": "0.584646",
        "lastPrice": "69765",
        "prevPrice24h": "64587.8",
        "price24hPcnt": "0.0802",
        "highPrice24h": "70059.3",
        "lowPrice24h": "64164",
        "turnover24h": "861981016.01553737",
        "volume24h": "12885.551545",
        "usdIndexPrice": "69742.702231"
      }
    ]
  },
  "retExtInfo": {},
  "time": 1787176678853
}

Parameters

ParameterTypeRequiredDescription
market/tickerspathRequiredTicker endpoint. market/tickers
categorystringRequiredspot, linear, inverse or option. Mandatory. spot
symbolstringOptionalTrading pair. Omit for all pairs in the category. BTCUSDT
market/klinepathOptionalCandlestick data. market/kline
intervalstringOptionalKline interval such as 1, 60, D. 60

Response fields

retCodeinteger
0 means success — check this, not just the HTTP status.
retMsgstring
OK, or an error description.
result.categorystring
Which market type the results cover.
result.list[].symbolstring
Trading pair.
result.list[].lastPricestring
Last traded price, as a string.
result.list[].bid1Price / ask1Pricestring
Best bid and ask.
result.list[].volume24h / turnover24hstring
24-hour volume and turnover.

What you can build with the Bybit Public Market Data API

  • Display live crypto prices from a major exchange
  • Track funding rates and open interest on perpetual futures
  • Build a trading dashboard or price alert service
  • Compare spot and derivatives pricing

Common errors and how to fix them

Empty result.list

Wrong or missing category.

Fix: category is mandatory — spot for spot markets, linear for USDT perpetuals.

retCode non-zero with HTTP 200

Errors are signalled in the body.

Fix: Always check retCode === 0 rather than relying on the HTTP status.

Prices as strings

All numeric fields are strings.

Fix: Parse explicitly and use decimal arithmetic for money.

Bybit Public Market Data API — frequently asked questions

Does the Bybit API need a key?

Not for public market data — tickers, order books, klines, funding rates and open interest are all anonymous. Trading and account access require a signed API key.

What does the category parameter do?

It selects the market type: spot, linear for USDT perpetuals, inverse for coin-margined contracts, or option. It is mandatory, and getting it wrong returns an empty list.

Can I get derivatives data?

Yes, and that is its main advantage over most free crypto APIs — funding rates and open interest for perpetual contracts are available without a key.

Why is retCode 0 important?

Bybit signals errors in the response body while still returning HTTP 200. Always check retCode rather than the status code.

Tools that pair with this API

Bybit Public Market Data is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.