curl --request GET \
--url https://whitebit.com/api/v4/public/marketsimport requests
url = "https://whitebit.com/api/v4/public/markets"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://whitebit.com/api/v4/public/markets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://whitebit.com/api/v4/public/markets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://whitebit.com/api/v4/public/markets"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://whitebit.com/api/v4/public/markets")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/public/markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"name": "SON_USD",
"stock": "SON",
"money": "USD",
"stockPrec": "3",
"moneyPrec": "2",
"feePrec": "4",
"makerFee": "0.1",
"takerFee": "0.1",
"minAmount": "0.001",
"minTotal": "0.001",
"maxTotal": "10000000000",
"tradesEnabled": true,
"isCollateral": true,
"type": "spot",
"isTradFiFutures": false,
"delistedAt": 1786752000,
"tickSize": "0.01",
"stepSize": "0.001"
}
]{
"success": false,
"message": "Internal server error.",
"errors": []
}Market info
The endpoint retrieves configuration and trading rules for all available spot, futures, and TradFi futures markets. Use the response to discover tradeable pairs, check minimum order sizes, and read fee schedules. Each entry includes precision settings, fee ratios, and order-size constraints for the market.
Market configuration is reference data, re-synced from the database approximately every 10 seconds. Polling more frequently returns identical data. The cache is shared across all callers.
TradFi futures markets are region-gated: markets not available in a given region are omitted from the response entirely and do not appear under any other market type.
A market with an announced delisting carries the announced date in delistedAt and stays tradeable until the delisting runs. Once the delisting runs, the platform cancels the active orders on the market and drops the market from this response — Query delisting and maintenance orders is a signed request that returns the authenticated account’s resulting spot order records. An announcement can be rescheduled or canceled, so treat delistedAt as the current plan rather than a settled fact and re-read the value on the next poll.
Rate limit 2000 requests/10 sec.
curl --request GET \
--url https://whitebit.com/api/v4/public/marketsimport requests
url = "https://whitebit.com/api/v4/public/markets"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://whitebit.com/api/v4/public/markets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://whitebit.com/api/v4/public/markets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://whitebit.com/api/v4/public/markets"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://whitebit.com/api/v4/public/markets")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/public/markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"name": "SON_USD",
"stock": "SON",
"money": "USD",
"stockPrec": "3",
"moneyPrec": "2",
"feePrec": "4",
"makerFee": "0.1",
"takerFee": "0.1",
"minAmount": "0.001",
"minTotal": "0.001",
"maxTotal": "10000000000",
"tradesEnabled": true,
"isCollateral": true,
"type": "spot",
"isTradFiFutures": false,
"delistedAt": 1786752000,
"tickSize": "0.01",
"stepSize": "0.001"
}
]{
"success": false,
"message": "Internal server error.",
"errors": []
}Response
Successful response
Market pair name
"SON_USD"
Ticker of stock currency
"SON"
Ticker of money currency. Perpetual futures markets report USDT as the money currency.
"USD"
Maximum number of decimal places for the base (stock) currency quantity. Represented as a stringified integer.
"3"
Maximum number of decimal places for the quote (money) currency amount. Represented as a stringified integer.
"2"
Maximum number of decimal places used when calculating fees. Represented as a stringified integer.
"4"
Default maker fee as a percentage value (e.g., "0.1" means 0.1%). Divide by 100 to convert to a decimal ratio. GET /api/v4/public/assets reports maker_fee in the same format.
"0.1"
Default taker fee as a percentage value (e.g., "0.1" means 0.1%). Divide by 100 to convert to a decimal ratio. GET /api/v4/public/assets reports taker_fee in the same format.
"0.1"
Minimum order quantity in the base (stock) currency.
"0.001"
Minimum order total in the quote (money) currency.
"0.001"
Maximum order total (quantity × price) in the quote (money) currency. "0" indicates no upper limit.
"10000000000"
Indicates whether trading is enabled. The response includes only markets enabled for trading, so the value is always true.
true
Indicates whether margin trading is enabled
true
Market type. Possible values: spot, futures, tradfiFutures
spot, futures, tradfiFutures "spot"
Indicates whether the market is a traditional-finance (TradFi) futures market. Always paired with type: tradfiFutures. TradFi futures markets are region-gated and omitted from the response entirely where not available.
false
Announced delisting date as a Unix timestamp in seconds. null when no delisting is announced for the market. The field is always present in the response.
1786752000
Minimal price step a limit order price must be a multiple of. Passed through verbatim from the trade engine; an empty string when the engine does not provide the value for the market. From September 18, 2026, an order price that is not a multiple of this value is rejected.
"0.01"
Minimal quantity step an order amount must be a multiple of. Passed through verbatim from the trade engine; an empty string when the engine does not provide the value for the market. From September 18, 2026, an order amount that is not a multiple of this value is rejected.
"0.001"
Was this page helpful?