Get an orderbook snapshot
curl --request GET \
--url https://api.sx.bet/orderbook-v3/snapshotimport requests
url = "https://api.sx.bet/orderbook-v3/snapshot"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.sx.bet/orderbook-v3/snapshot', 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/orderbook-v3/snapshot",
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/orderbook-v3/snapshot"
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/orderbook-v3/snapshot")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sx.bet/orderbook-v3/snapshot")
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": {
"marketHash": "0xbf06c6379c922d8118612d1d7493b20f6df6929437fbf6022904327f9516a2eb",
"outcomeOne": [
{
"percentageOdds": "50000000000000000000",
"size": "1000000"
},
{
"percentageOdds": "40000000000000000000",
"size": "5000000"
}
],
"outcomeTwo": [],
"version": "00100000000000008914000"
}
}{
"message": [
"marketHash must be a valid hex string of length 32 bytes"
],
"error": "Bad Request",
"statusCode": 400
}{
"message": "Market not found",
"error": "Not Found",
"statusCode": 404
}{
"message": "Service Unavailable",
"statusCode": 503
}Order Book
Get orderbook snapshot
Get a snapshot of the order book for a market on SX Bet.
GET
/
orderbook-v3
/
snapshot
Get an orderbook snapshot
curl --request GET \
--url https://api.sx.bet/orderbook-v3/snapshotimport requests
url = "https://api.sx.bet/orderbook-v3/snapshot"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.sx.bet/orderbook-v3/snapshot', 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/orderbook-v3/snapshot",
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/orderbook-v3/snapshot"
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/orderbook-v3/snapshot")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sx.bet/orderbook-v3/snapshot")
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": {
"marketHash": "0xbf06c6379c922d8118612d1d7493b20f6df6929437fbf6022904327f9516a2eb",
"outcomeOne": [
{
"percentageOdds": "50000000000000000000",
"size": "1000000"
},
{
"percentageOdds": "40000000000000000000",
"size": "5000000"
}
],
"outcomeTwo": [],
"version": "00100000000000008914000"
}
}{
"message": [
"marketHash must be a valid hex string of length 32 bytes"
],
"error": "Bad Request",
"statusCode": 400
}{
"message": "Market not found",
"error": "Not Found",
"statusCode": 404
}{
"message": "Service Unavailable",
"statusCode": 503
}GET /orderbook-v3/snapshot returns the aggregated book for a single market.
Prefer the realtime
orderbook_v3:{marketHash} channel over
polling this endpoint. Use the snapshot once to bootstrap state, then apply stream publications.Use
showTakerPerspective for display only. percentageOdds is from the perspective of the maker. Read the order
book walks the conversion through.Query Parameters
The market hash for which to get the snapshot. For many markets in one call use GET /orders-v3/odds/best, which takes up to 100 hashes but returns only the top level per side.
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