Research API
A free, open REST API giving programmatic access to live casino game statistics, fairness scores, and segment distributions. Designed for researchers, data journalists, and developers.
Quick Start
https://livecasinodata.com/api/v1Endpoints
/api/v1/gamesReturns statistics for all tracked games across 7-day, 30-day, and 90-day windows.
windowstringoptionalFilter to one window: 7d | 30d | 90d{
"meta": {
"api_version": "v1",
"source": "livecasinodata.com",
"license": "CC BY 4.0",
"total_games": 29,
"generated_at": "2026-03-10T12:00:00Z"
},
"games": [
{
"slug": "crazy-time",
"name": "Crazy Time",
"provider": "Evolution Gaming",
"category": "game-show",
"theoretical_rtp_pct": 96.08,
"theoretical_bonus_rate_pct": 14.79,
"stats": {
"d7": { "total_rounds": 14221, "bonus_rate_pct": 14.82, "avg_multiplier": 6.1, "lcfi_score": 88 },
"d30": { "total_rounds": 61004, "bonus_rate_pct": 14.61, "avg_multiplier": 5.9, "lcfi_score": 91 },
"d90": { "total_rounds": 183012, "bonus_rate_pct": 14.79, "avg_multiplier": 6.0, "lcfi_score": 95 }
}
}
]
}/api/v1/games/:slugDetailed statistics for a specific game including segment distribution and theoretical comparison.
slugpathrequiredGame slug, e.g. crazy-time, lightning-roulette{
"game": {
"slug": "crazy-time",
"name": "Crazy Time",
"provider": "Evolution Gaming",
"theoretical_rtp_pct": 96.08,
"stats": {
"d30": {
"total_rounds": 61004,
"bonus_rate_pct": 14.61,
"avg_multiplier": 5.9,
"max_multiplier": 10000,
"lcfi_score": 91,
"lcfi_grade": "A+"
}
},
"segment_distribution_30d": [
{ "result": "1", "count": 27724, "pct": 45.44 },
{ "result": "2", "count": 13856, "pct": 22.71 },
{ "result": "5", "count": 6938, "pct": 11.37 },
{ "result": "Crazy Time", "count": 698, "pct": 1.14 }
],
"theoretical_segments": [
{ "name": "1", "theoreticalPct": 45.45 },
{ "name": "Crazy Time", "theoreticalPct": 1.14 }
]
}
}/api/v1/statsHigh-level platform summary: total rounds tracked, active games, and aggregate metrics.
{
"platform": {
"total_rounds_all_time": 2847621,
"total_games_tracked": 30,
"data_since": "2024-06-01",
"last_updated": "2026-03-10T11:58:32Z"
},
"windows": {
"d30": {
"total_rounds": 621004,
"active_games": 29,
"platform_avg_bonus_rate_pct": 15.2,
"platform_avg_multiplier": 5.8,
"platform_max_multiplier": 50000
},
"d90": {
"total_rounds": 1843221,
"active_games": 30,
"platform_avg_multiplier": 5.7
}
}
}/api/v1/fairnessLive Casino Fairness Index scores for all games, sorted by score. Platform-wide LCFI included.
{
"platform_lcfi": 84,
"platform_lcfi_grade": "A",
"total_games": 29,
"games": [
{
"slug": "crazy-time",
"lcfi_score": 91,
"lcfi_grade": "A+",
"observed_bonus_rate_pct": 14.61,
"theoretical_bonus_rate_pct": 14.79,
"bonus_deviation_pct": 1.2,
"data_confidence_pct": 100,
"total_rounds_30d": 61004
}
]
}/api/datasetAggregated CSV or JSON datasets for all games. Full column documentation on the dataset page.
windowstringrequired7d | 30d | 90d | allformatstringrequiredcsv | json# LiveCasinoData Open Dataset — 30d window ending 2026-03-10 # License: Creative Commons Attribution 4.0 (CC BY 4.0) period,period_end,game_slug,game_name,provider,... 30d,2026-03-10,crazy-time,Crazy Time,Evolution Gaming,...
Code Examples
import requests
BASE = "https://livecasinodata.com/api/v1"
# Get all games
games = requests.get(f"{BASE}/games?window=30d").json()
for game in games["games"]:
print(game["slug"], game["stats"]["d30"]["lcfi_score"])
# Get Fairness Index
fairness = requests.get(f"{BASE}/fairness").json()
print(f"Platform LCFI: {fairness['platform_lcfi']}")
# Get single game detail
ct = requests.get(f"{BASE}/games/crazy-time").json()
print(ct["game"]["segment_distribution_30d"][:3])const BASE = "https://livecasinodata.com/api/v1";
// Get all games
const { games } = await fetch(`${BASE}/games?window=30d`).then(r => r.json());
for (const game of games) {
console.log(game.slug, game.stats.d30?.lcfi_score);
}
// Get Fairness Index
const { platform_lcfi, games: fairness } =
await fetch(`${BASE}/fairness`).then(r => r.json());
console.log("Platform LCFI:", platform_lcfi);library(httr) library(jsonlite) BASE <- "https://livecasinodata.com/api/v1" # Get all games (30d window) resp <- GET(paste0(BASE, "/games?window=30d")) data <- fromJSON(content(resp, "text")) df <- data$games # Extract LCFI scores lcfi_df <- data.frame( slug = df$slug, lcfi = sapply(df$stats, function(s) s$d30$lcfi_score) ) print(lcfi_df)
Rate Limits & Fair Use
| Tier | Limit | Auth | Use Case |
|---|---|---|---|
| Public | 1,000 req/hour | None | Research, journalism, personal dashboards |
| Research | Unlimited | Contact us | Academic institutions, regulatory bodies |
Rate limit headers are included in every response: X-RateLimit-Limit and X-RateLimit-Window. For high-volume access, use the bulk dataset download instead.
Response Headers
Content-Typeapplication/jsonAll responses are JSONAccess-Control-Allow-Origin*CORS allowed from any originX-RateLimit-Limit1000Requests per rate-limit windowX-RateLimit-Window3600Window duration in secondsCache-Controlno-storeData is always live from the databaseAttribution Required
All data is published under CC BY 4.0. When using this data in publications, dashboards, or applications, include: