Skip to main content
Every trade made on SX Bet is publicly available through the SX Bet API. You can query trades for a specific user, event, market, time period, and more.
EndpointBest for
GET /tradesIndividual filled orders — split by order, so one taker bet filling five maker orders returns five records
GET /trades/consolidatedAggregated history — that same bet appears as one record with weighted average odds
GET /trades/ordersWhen you have specific order hashes and want to see all fills against them
tradeStatus reflects the on-chain confirmation state of a trade: "PENDING" while awaiting confirmation, then "SUCCESS" or "FAILED" once confirmation completes.

GET /trades

Use this when you need granular fill data — individual order matches, settlement status, or trade history for a specific market or user. Filter by bettor, market hash, time range, settlement status, and more. See the full parameter reference →.
If bettor is not provided, results are limited to trades placed within the last 12 months — pass bettor to query further back. marketHashes accepts at most 100 hashes per request; anything more is rejected with a 400 error.
odds is the bettor’s implied probability as a fixed-point integer — divide by 10^20 to get a decimal. 50875000000000000000 = 50.875% (1.97 in decimal odds format).stake and normalizedStake reflect the bettor’s stake — stake is in raw token units, normalizedStake is in whole token units. See Unit Conversions for token decimal details.
Results are paginated using a cursor — each response includes a nextKey field inside data. Pass it as paginationKey in your next request. Default page size is 100, max 300. When nextKey is absent, you’ve reached the last page.

GET /trades/consolidated

Use this when you want one record per bet regardless of how many maker orders it filled — for portfolio views, PnL tracking, or reviewing a user’s betting history. Fills that crossed multiple maker orders are rolled up with weighted average odds. See the full parameter reference →.
page, perPage, sortBy, sortAsc, and settled are all required parameters for this endpoint.
If bettor is not provided, results are limited to trades placed within the last 12 months — pass bettor to query further back.
count is the total number of matching trades — use it to calculate total pages: Math.ceil(count / perPage). Pagination starts at page 0.

GET /trades/orders

Use this when you have specific order hashes and want to see exactly how and when they were filled. See the full parameter reference →.
Each order hash returns two trade records — one for the maker and one for the taker. odds is from each bettor’s perspective as a fixed-point integer — divide by 10^20 to get a decimal.

Real-time trades

Rather than polling, subscribe to WebSocket channels to receive trades as they happen:
  • recent_trades:global — Global feed of every trade on the exchange, one message per order fill.
  • recent_trades_consolidated:global — Same feed, but one message per taker bet regardless of how many maker orders it filled.
For setup and full payload references, see Real-time Data →.
Last modified on July 14, 2026