How to stream Crash rounds in real time
Subscribe to /v1-beta/stream over WebSocket and you get every finalised round pushed within milliseconds of our scraper writing it. Works for stake-crash, roobet-crash, duel-crash, shuffle-crash and their Slide siblings.
1. WebSocket URL
wss://api.trackersino.com/v1-beta/stream — optionally filter by ?games=stake-crash,roobet-crash. Auth via the same Authorization header you use on REST.
# minimal subscription
wscat -c "wss://api.trackersino.com/v1-beta/stream?games=stake-crash,roobet-crash" \
-H "Authorization: Bearer YOUR_KEY"2. Frame shape
Each frame is one JSON object. game_id identifies the source; the rest of the fields mirror the /rounds response exactly.
{
"game_id": "stake-crash",
"round_id": "c2caaf8a-34b3-42b0-8d44-c01cb879049d",
"round_index": 956100250495943837,
"multiplier": "3.1611",
"state": "finalized",
"finalized_at": "2026-05-28T15:05:15Z",
"multiplier_source": "stake",
"raw": { /* full upstream envelope */ }
}3. Reconnect strategy
We send a heartbeat ping every 25s. If you miss two consecutive pings, drop the connection and reconnect. On reconnect, the last finalized_at you observed is the resume point — backfill the gap via GET /v1-beta/games/{slug}/rounds?since=<last>.
4. Working example
import asyncio, json, websockets
URI = 'wss://api.trackersino.com/v1-beta/stream?games=stake-crash'
HEAD = [('Authorization', 'Bearer YOUR_KEY')]
async def main():
async for ws in websockets.connect(URI, extra_headers=HEAD, ping_interval=20):
try:
async for msg in ws:
r = json.loads(msg)
if float(r['multiplier']) > 10:
print(f"🚀 {r['game_id']} {r['multiplier']}x at {r['finalized_at']}")
except websockets.ConnectionClosed:
continue # auto-reconnect via for-async
asyncio.run(main())import WebSocket from 'ws';
function connect() {
const ws = new WebSocket(
'wss://api.trackersino.com/v1-beta/stream?games=stake-crash',
{ headers: { Authorization: 'Bearer YOUR_KEY' } },
);
ws.on('message', (data) => {
const r = JSON.parse(data);
if (parseFloat(r.multiplier) > 10) {
console.log(`🚀 ${r.game_id} ${r.multiplier}x at ${r.finalized_at}`);
}
});
ws.on('close', () => setTimeout(connect, 1000));
ws.on('error', () => ws.terminate());
}
connect();5. Multi-game subscriptions
Pass a comma-separated games= list to receive only the games you care about. Empty / missing = every game on your tier.
Edge cases?
Reconnect logic varies by stack. Ping us on Telegram with the language you're using and we'll send a production-ready helper (auto-reconnect, exponential backoff, gap detection via /rounds backfill).
Open Telegram →