Get best odds
curl --request GET \
--url https://api.sx.bet/orders-v3/odds/bestimport requests
url = "https://api.sx.bet/orders-v3/odds/best"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.sx.bet/orders-v3/odds/best', 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://api.sx.bet/orders-v3/odds/best",
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://api.sx.bet/orders-v3/odds/best"
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://api.sx.bet/orders-v3/odds/best")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sx.bet/orders-v3/odds/best")
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{
"status": "success",
"data": {
"bestOdds": [
{
"marketHash": "0xbf06c6379c922d8118612d1d7493b20f6df6929437fbf6022904327f9516a2eb",
"outcomeOne": {
"percentageOdds": "50000000000000000000",
"size": "1000000"
},
"outcomeTwo": null
}
]
}
}{
"message": [
"marketHashes must be an array of valid hex strings of length 32 bytes",
"marketHashes must contain no more than 100 elements",
"Must provide marketHashes or leagueIds",
"each value in leagueIds must be an integer number",
"leagueIds must be an array",
"leagueIds must contain no more than 5 elements",
"Must provide marketHashes or leagueIds"
],
"error": "Bad Request",
"statusCode": 400
}Order Book
Best odds
Get the best available odds for markets or leagues on the SX Bet exchange.
GET
/
orders-v3
/
odds
/
best
Get best odds
curl --request GET \
--url https://api.sx.bet/orders-v3/odds/bestimport requests
url = "https://api.sx.bet/orders-v3/odds/best"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.sx.bet/orders-v3/odds/best', 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://api.sx.bet/orders-v3/odds/best",
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://api.sx.bet/orders-v3/odds/best"
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://api.sx.bet/orders-v3/odds/best")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sx.bet/orders-v3/odds/best")
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{
"status": "success",
"data": {
"bestOdds": [
{
"marketHash": "0xbf06c6379c922d8118612d1d7493b20f6df6929437fbf6022904327f9516a2eb",
"outcomeOne": {
"percentageOdds": "50000000000000000000",
"size": "1000000"
},
"outcomeTwo": null
}
]
}
}{
"message": [
"marketHashes must be an array of valid hex strings of length 32 bytes",
"marketHashes must contain no more than 100 elements",
"Must provide marketHashes or leagueIds",
"each value in leagueIds must be an integer number",
"leagueIds must be an array",
"leagueIds must contain no more than 5 elements",
"Must provide marketHashes or leagueIds"
],
"error": "Bad Request",
"statusCode": 400
}GET /orders-v3/odds/best returns the best level on each side for a set of markets. For every
level on a single market, use
GET /orderbook-v3/snapshot — both read the top of the same
book.
Prefer the realtime
best_odds_v3:global channel over
polling this endpoint. Use this route once to seed state, then apply stream publications.Exactly one of marketHashes or leagueIds must be provided, but not both.
Query Parameters
Comma-separated, maximum 100. Required unless leagueIds is given.
Comma-separated integer league ids, maximum 5. Required unless marketHashes is given.
Return the book from the perspective of someone wanting each outcome, instead of the makers' own: each side's odds are inverted, the sides are swapped, and each size is restated as the taker stake that fully consumes that level. Accepts true/false/1/0, case-insensitively — TRUE and True work. yes, on and an empty value are a 400.
Last modified on August 11, 2026
⌘I