Stoiximan Odds API
The ArbPlay Stoiximan odds API serves Stoiximan's own JSON over HTTPS: one live file covering every in-play sport, pre-match files for soccer, basketball and tennis, and a soccer-leagues file with the upcoming rounds of 15 major leagues, about 7 days ahead. Live odds are rewritten about every 1–3 seconds, pre-match about every 4–7. Subscribe on RapidAPI, Zyla or JoJ API.
Stoiximan is Kaizen Gaming's Greek brand (the company behind Betano). The data comes from Stoiximan's Greek website.
Key facts
| Bookmaker | Stoiximan — Kaizen Gaming's Greek brand of Betano |
|---|---|
| Company key | stoiximan |
| Files | 5: site_live_stoiximan.json, site_pregame_stoiximan_{soccer,basketball,tennis}.json and site_pregame_stoiximan_soccer_leagues.json |
| Live coverage | Every in-play sport in one file — soccer, basketball, tennis, ice hockey, handball, volleyball, American football, baseball, table tennis, darts, futsal, golf, esports and virtual sports |
| Pre-match coverage | Soccer, basketball and tennis for events starting in the next few hours, plus the upcoming rounds of 15 major soccer leagues — about 7 days ahead |
| Soccer leagues file | Premier League, Championship, League One, League Two, LaLiga, Serie A, Bundesliga, Ligue 1, Eredivisie, Primeira Liga, Süper Lig, Stoiximan Super League, Champions League, Europa League and Conference League — match result only |
| Refresh | Live about every 1–3 s, pre-match about every 4–7 s |
| Odds format | Decimal (price) |
| Cross-bookmaker id | Betradar match id: betradarMatchId (live), betRadarId (pre-match) |
| Schema | Live: a store of sports, zones, leagues, events, markets, selections keyed by id. Pre-match: data.blocks[].events[].markets[].selections[]; the leagues file is a list of such pages, one per league |
| Market codes | MRES match result, HCTG over/under, BTSC both teams to score, DBLC double chance, DNOB draw no bet |
| Access | RapidAPI, Zyla API Hub or JoJ API listing, or a direct X-API-Key from ArbPlay |
Files and what's inside
Every file is Stoiximan's own JSON, served unchanged inside the API envelope. Refresh: live files about every 1–3 s, pre-match files about every 4–7 s.
| File | What's inside | Refresh |
|---|---|---|
site_live_stoiximan.json | Every live event of every sport, as a normalized store keyed by id; includes live score in liveData | ≈1–3 s |
site_pregame_stoiximan_soccer.json | Soccer events starting in the next few hours: match result, over/under, BTTS, double chance, draw no bet | ≈4–7 s |
site_pregame_stoiximan_soccer_leagues.json | Upcoming rounds of 15 major soccer leagues (Premier League, LaLiga, Serie A, Bundesliga, Ligue 1, Champions League…), one page per league, match result | ≈4–7 s |
site_pregame_stoiximan_basketball.json | Basketball games starting in the next few hours; odds sit in sixPackBlocks (winner, spread, total) | ≈4–7 s |
site_pregame_stoiximan_tennis.json | Tennis matches starting in the next few hours (winner market) | ≈4–7 s |
Pre-match markets by sport
| Sport | Markets |
|---|---|
| Soccer | Match result, over/under goals (full time and first half), both teams to score, double chance, draw no bet; the 15-league file has match result only |
| Basketball | Winner, spread and total (sixPackBlocks), for games starting in the next few hours |
| Tennis | Winner, for matches starting in the next few hours |
Every bookmaker compared: sports and markets per bookmaker.
Field map: where each value lives
Live paths start at data; pre-match paths start at data.data.blocks[] (the file has its own data key). In site_pregame_stoiximan_soccer_leagues.json, data is a list of league pages and each page has its own data.blocks[].
| Value | Live files | Pre-match files |
|---|---|---|
| Event id | events[id].id | events[].id |
| Teams / name | events[id].participants[].name (isHome) | events[].name ("Home - Away") |
| League | leagues[str(leagueId)].name | events[].leagueName |
| Country / region | zones[str(zoneId)].name | events[].regionName |
| Sport | sports.byId[sportId].name (sportId = FOOT, BASK, TENN…) | events[].sportId |
| Start time | events[id].startTime (epoch ms) | events[].startTime (epoch ms) |
| Market | markets[str(id)].name, .type | events[].markets[].name, .type |
| Selection, price | selections[str(id)].name, .price | markets[].selections[].name, .price |
| Line | markets[…].handicap | markets[].handicap |
| Betradar id | events[id].betradarMatchId | events[].betRadarId |
| Link | events[id].url (path on stoiximan.gr) | events[].url |
| Status | events[id].isSuspended, markets[id].isSuspended (present only when true) | — (no status field) |
| Live score | events[id].liveData.score | — |
Real sample
An abridged record from site_pregame_stoiximan_soccer.json: real values, most fields left out so the structure is readable. The downloads below keep every field.
{
"data": {
"blocks": [
{
"name": "International - Friendlies",
"events": [
{
"id": "92917069",
"name": "USA - Peru",
"leagueName": "Friendlies",
"regionName": "International",
"sportId": "FOOT",
"startTime": 1790454600000,
"betRadarId": 73600382,
"url": "/match-odds/usa-peru/92917069/",
"markets": [
{
"name": "Match Result",
"type": "MRES",
"selections": [
{
"name": "1",
"fullName": "USA",
"price": 1.47
},
{
"name": "X",
"fullName": "Draw",
"price": 4.45
},
{
"name": "2",
"fullName": "Peru",
"price": 6.9
}
]
}
]
}
]
}
]
}
}
- site_live_stoiximan.sample.json — one live soccer, basketball and tennis event
- site_pregame_stoiximan_soccer.sample.json — trimmed to a few events
- site_pregame_stoiximan_soccer_leagues.sample.json — trimmed to a few events
Each download is a complete GET /v1/data/{filename} response cut down to a few events, with every id reference still resolving. All samples are listed in samples/index.json.
Extract match-result (1X2) odds in Python
This function is tested against the samples on this page. Pass it the parsed JSON response.
def match_result(payload):
"""(event, 1, X, 2) rows from any Stoiximan file: live store, pre-match or leagues."""
data, rows = payload["data"], []
if isinstance(data, dict) and "events" in data: # site_live_stoiximan.json: records keyed by string id
for ev in data["events"].values():
name = " - ".join(p["name"] for p in ev.get("participants", []))
for market_id in ev.get("marketIdList", []):
market = data["markets"].get(str(market_id))
if market and market["type"] == "MRES":
sels = [data["selections"].get(str(s)) for s in market["selectionIdList"]]
odds = {s["name"]: s["price"] for s in sels if s}
rows.append((name, odds.get("1"), odds.get("X"), odds.get("2")))
else: # pre-match: one page (may be {}), or a list of league pages in the soccer_leagues file
for page in data if isinstance(data, list) else [data]:
for block in page.get("data", {}).get("blocks", []):
for ev in block["events"]:
for market in ev.get("markets", []):
if market["type"] == "MRES":
odds = {s["name"]: s["price"] for s in market["selections"]}
rows.append((ev["name"], odds.get("1"), odds.get("X"), odds.get("2")))
return rows
Fetch Stoiximan odds
With a direct key
# 1. which files can this key read?
curl -sS --compressed -H "X-API-Key: YOUR_API_KEY" \
https://api.arbplay.app/v1/files
# 2. download one file (JSON envelope: company, file, updated_at, data)
curl -sS --compressed -H "X-API-Key: YOUR_API_KEY" \
https://api.arbplay.app/v1/data/site_pregame_stoiximan_soccer_leagues.json -o site_pregame_stoiximan_soccer_leagues.json
import requests # pip install requests
resp = requests.get(
"https://api.arbplay.app/v1/data/site_pregame_stoiximan_soccer_leagues.json",
headers={"X-API-Key": "YOUR_API_KEY"}, # gzip is negotiated automatically
timeout=60,
)
resp.raise_for_status()
payload = resp.json()
print(payload["updated_at"], payload["file"])
for event, home, draw, away in match_result(payload): # the function above
print(f"{event}: {home} / {draw} / {away}")
// Node 18+ (server-side: the API sends no CORS headers)
const res = await fetch("https://api.arbplay.app/v1/data/site_pregame_stoiximan_soccer_leagues.json", {
headers: { "X-API-Key": process.env.ARBPLAY_API_KEY },
});
if (!res.ok) throw new Error(`${res.status} ${(await res.json()).detail}`);
const { company, file, updated_at, data } = await res.json();
console.log(file, "updated", updated_at);
Through a marketplace
On RapidAPI, Zyla API Hub or JoJ API you call the marketplace's gateway with that marketplace's key. The two endpoints and the JSON they return are the same; copy the base URL and path from the listing.
| Marketplace | Your key goes in | Base URL and full path |
|---|---|---|
| RapidAPI | X-RapidAPI-Key and X-RapidAPI-Host | Endpoints tab of the listing |
| Zyla API Hub | Authorization: Bearer <access key> | Code sample on the listing |
| JoJ API | X-JoJAPI-Key (or Authorization: Bearer) | Code sample on the listing |
Freshness, gaps and caveats
- Refresh: live files about every 1–3 s, pre-match files about every 4–7 s. Every response carries
updated_atand aLast-Modifiedheader; sendIf-Modified-Sinceto get304 Not Modifiedwhen nothing changed. - The soccer, basketball and tennis pre-match files mirror Stoiximan's upcoming view — events starting in the next few hours — and can be
{}when nothing is scheduled. For a longer horizon usesite_pregame_stoiximan_soccer_leagues.json: the upcoming rounds of 15 major leagues, about 7 days ahead, with the match-result market. - Pre-match basketball odds are in
sixPackBlocks(winner, spread and total columns); itsmarketslist is empty. - In the live store the id lists (
marketIdList,selectionIdList) hold numbers but the dictionary keys are strings — look them up withstr(id). - Live events have no
name; build it fromparticipants. Not every live event carriesbetradarMatchId.
Get Stoiximan odds API access
- RapidAPI — Stoiximan odds listing
- Zyla API Hub — Stoiximan odds listing
- JoJ API — Stoiximan odds listing
- Contact ArbPlay for a direct key to
https://api.arbplay.app - Before you buy: direct keys for several bookmakers, trial keys, rate limits and data rights
Plans and quotas are set on each marketplace listing. More in the API reference and the API hub.
Frequently asked questions
Is this the official Stoiximan API?
No. ArbPlay is independent and is not affiliated with or endorsed by Stoiximan or its operator. It collects the odds Stoiximan publishes on its public website and serves them unchanged as JSON for informational use. ArbPlay does not place bets.
Which Stoiximan files can I download?
Five: site_live_stoiximan.json, which holds every in-play sport in one file; site_pregame_stoiximan_soccer.json, site_pregame_stoiximan_basketball.json and site_pregame_stoiximan_tennis.json for events starting soon; and site_pregame_stoiximan_soccer_leagues.json for 15 major soccer leagues. Call GET /v1/files to list the files your key can read.
Which leagues does the Stoiximan soccer-leagues file cover?
Premier League, Championship, League One, League Two, LaLiga, Serie A, Bundesliga, Ligue 1, Eredivisie, Primeira Liga, Süper Lig, Stoiximan Super League, Champions League, Europa League and Conference League. It holds each league's upcoming matches, about 7 days ahead, with the match-result market.
How often are Stoiximan odds updated?
During active hours live files are rewritten about every 1 to 3 seconds and pre-match files about every 4 to 7 seconds. Every response carries updated_at and a Last-Modified header, and If-Modified-Since returns 304 when nothing changed.
Can I match Stoiximan events with other bookmakers?
Yes. Most events carry a Betradar match id (betradarMatchId in the live file, betRadarId in pre-match files). Novibet, Superbet, OPAP and Bwin expose the same id, so you can join on it; for Elabet and Fonbet match on team names and start time.
How do I get access to the Stoiximan odds API?
Subscribe to the Stoiximan listing on RapidAPI, Zyla API Hub or JoJ API and call it with that marketplace's key; plans and quotas are set on each listing. For a direct key to https://api.arbplay.app (header X-API-Key), contact ArbPlay.
ArbPlay is independent and not affiliated with or endorsed by Stoiximan or its operator. Odds are collected from publicly available bookmaker odds and served unchanged for informational use; ArbPlay does not place bets. 21+.
Other bookmakers: Novibet · Fonbet · Superbet · Elabet · OPAP · Bwin. Machine-readable: /openapi.json · /llms.txt. Guide: Greek bookmaker odds API.