Developers
Every figure on this site comes from the same public JSON API, with the same labels: observed, estimated or on-chain. Read it anonymously, or with a free key for higher limits. Players who opt out disappear from every answer, so build nothing that identifies them.
Quick startone header, one GET; every answer is JSON
curl -H 'x-api-key: gt_live_…' \
'https://gambatracker.com/api/bets?feed=big-wins&window=24h&limit=3'{
"bets": [{
"id": "stake:9418233",
"casino": { "slug": "stake", "name": "Stake" },
"ts": "2026-11-02T08:39:12.410Z",
"player": { "casino": "stake", "name": "frostbyte", "hidden": false },
"game": { "slug": "gates-of-olympus", "name": "Gates of Olympus",
"provider": { "slug": "pragmatic-play", "name": "Pragmatic Play" }, "kind": "slots" },
"amount_usd": 274, "payout_usd": 41160, "multiplier": 150.22,
"edge": 0.0350, "expected_loss_usd": 9.59
}],
"next": "MTc5MzYwOTU1MjQxMDpzdGFrZTo5NDE4MjMz"
}Base URL https://gambatracker.com/api. Send the key as x-api-key or Authorization: Bearer; without one you are an anonymous caller, limited per IP. Lists page with cursor; windows are 10m, 1h, 24h, 7d, 30d, all. Errors come as { "error": { "code", "params" } }.
Live socketthe same frames the site shows
const ws = new WebSocket('wss://gambatracker.com/api/ws');
ws.onopen = () => ws.send(JSON.stringify({ sub: ['bets:big', 'streamers'] }));
ws.onmessage = (e) => {
const { topic, data } = JSON.parse(e.data);
// topic: 'bets:big' → Bet, 'streamers' → StreamerStatus, 'subscribed' → string[]
};Topics: bets:big, bets:live, bets:live:{casino}, online, rtp:{scope}, records, whales, races, sports, rounds, jackpots, status, streamers, streamers:hits. At most 50 topics; a slow client is dropped after 5 s.
What is in itthe public routes, grouped; the docs list every parameter
| Group | Routes | Answers |
|---|---|---|
| Casinos | /casinos, /casinos/{slug}, /compare, /status | online counts, 24 h wager and bets, 30-day flows, reserves, coverage and feed health per casino |
| Bets | /bets?feed=live|big-wins|high-rollers|lucky, /records, /leaderboards/{month} | every sampled bet with stake, payout, multiplier, the game’s house edge and expected loss |
| RTP | /rtp, /rtp/originals, /rtp/originals/{kind}, /games/{slug}, /providers/{slug} | observed RTP with 95% intervals per slot, casino and provider; originals against the advertised figure |
| Chain | /flows, /reserves | on-chain deposits, withdrawals, net flow and hot-wallet reserves by casino and chain |
| Streamers | /streamers, /streamers/{slug}, /streamers/{slug}/sessions/{id}, /leaderboards/streamers | live sessions, recaps and on-stream wins of tracked casino streamers |
| Reports | /reports, /reports/{yyyy-mm} | the frozen monthly reports with per-casino coverage |
| Live | wss://gambatracker.com/api/ws | the public socket: bets, online counts, RTP ticks, records, whales, races, rounds, jackpots, streamers |
Tiers and limitsa bucket of burst requests refilled at the per-minute rate, and a daily quota
| Tier | A minute | Burst | A UTC day | How |
|---|---|---|---|---|
| Anonymousno key, per IP | 120 | 240 | 20,000 | Just call the API. |
| Freeself-serve key | 300 | 300 | 50,000 | Request below; the key arrives by email link. |
| Paidmade by us | 1,200 | 1,200 | 1,000,000 | Write to [email protected] with the use case. |
429 with Retry-After and rate.limited (limit: "minute" | "day"). A presented key is never downgraded: an unknown one is 401 api_key.invalid, a revoked one 401 api_key.revoked.Rate-limit headerson every metered answer
RateLimit-Limit- the burst: how many requests the bucket holds
RateLimit-Remaining- requests left in the bucket right now
RateLimit-Reset- seconds until the bucket is full again
RateLimit-Policy- <per_minute>;w=60;burst=<burst>, <daily>;w=86400
X-Quota-Limit / -Remaining / -Reset- the UTC-day quota, what is left, seconds to 00:00 UTC
X-Api-Tier- anonymous, free or paid: which limits applied
Request a free keyno account needed; a link by email creates it
Termsalso at the top of the interactive docs
- Attribution. Show “Data: gambatracker.com” with a link wherever the data is displayed or published.
- No reselling raw data. The answers may not be sold, sublicensed or redistributed as a dataset or feed of your own; products and analysis built on them are fine.
- Samples are samples. Casinos publish only part of their bets, so counts and RTP are estimates with the intervals given; present them that way.
- No identifying or contacting players. Keys that break the terms or the limits may be revoked. The API comes as is.
Questions, a paid tier or a key to revoke: [email protected]. How each figure is measured: methodology.
For language models and agents: /llms.txt sums up the site and links its main pages, and /llms-full.txt carries the methodology and the tracked sites as plain markdown. Every page is also markdown at its URL plus .md, or for a request that sends Accept: text/markdown. AI crawlers may read every public page at its canonical URL, and an assistant fetching for a person may also call this API (robots.txt).