If you need football odds as JSON — live 1X2 plus a multi-book pre-match board — that is the Sports Odds API. The listing combines SofaScore live prices, FlashScore match context, and a BetExplorer comparator (fixtures, lookup by team names, history, market signal). Coverage is football. This is not the Live Scores API (scores and incidents, no prices).
Zyla API Hub lists more than 10,000 public APIs. You subscribe per listing (monthly or annual, with an included quota). There is no Free Plan. Your first Hub API includes a 7-day free trial (up to 50 requests). First-level support intermediates with the provider. Listings that fail continuous monitoring are discontinued.
Use cases
- Live 1X2 board. Poll SofaScore live events, then load match odds for that event. Official odds sample: Real Oviedo vs Osasuna, best home
3.75/ draw3.1/ away3, two bookmaker rows, cached at2026-09-23T14:57:11+00:00. - Prematch widget. Featured EPL official sample: Arsenal vs Leeds,
match_idxtmHKGT0, kickoff2026-10-10T12:30:00+00:00. - One call by team names. Unified odds for Arsenal–Leeds returns fixture + prematch best (home
1.37versus.es, draw5.05retabet, away8.75sportium.es) plus a market-signal block. Live SofaScore is unmatched on that prematch fixture (matched: false). - FlashScore context, not prices. Live FlashScore IDs are alphanumeric. Do not pass a SofaScore event into a FlashScore path.
1. Live events — SofaScore
SofaScore Live Football Events official Hub sample (first event, selected fields). Event id 17157205.
API request
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://zylalabs.com/api/13931/sports+odds+api/32119/sofascore+live+football+events"
JSON response
{
"source": "sofascore",
"sport": "football",
"count": 330,
"events": [
{
"id": 17157205,
"slug": "finland-u17-france-u17",
"status": { "code": 31, "description": "Halftime", "type": "inprogress" },
"homeTeam": { "name": "Finland U17", "id": 22602 },
"awayTeam": { "name": "France U17", "id": 22474 },
"homeScore": { "current": 2, "display": 2, "period1": 2 },
"awayScore": { "current": 1, "display": 1, "period1": 1 },
"startTimestamp": 1790172000,
"tournament": { "name": "U17 Friendly Games" }
}
]
}
2. Match odds 1X2 — SofaScore
Official Hub sample uses event 14083104 (Real Oviedo–Osasuna). The generated Hub curl sometimes omits the query; pass event_id.
API request
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://zylalabs.com/api/13931/sports+odds+api/32120/sofascore+match+odds+1x2?event_id=14083104"
SofaScore Match Odds 1X2 official sample (bookmakers trimmed to best):
JSON response
{
"source": "sofascore",
"match_id": "14083104",
"market": "1x2",
"bookmaker_count": 2,
"home": "Real Oviedo",
"away": "Osasuna",
"best": {
"home": { "odds": 3.75, "bookmaker": "sofascore_fid_182658084", "implied_pct": 26.67 },
"draw": { "odds": 3.1, "bookmaker": "sofascore_fid_182658084", "implied_pct": 32.26 },
"away": { "odds": 3, "bookmaker": "sofascore_fid_182658084", "implied_pct": 33.33 }
},
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-23T14:57:11+00:00",
"from_cache": false
}
}
3. Featured EPL + unified by team names
Comparator Featured EPL official sample:
API request
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://zylalabs.com/api/13931/sports+odds+api/32126/comparator+featured+epl?limit=1"
JSON response
{
"source": "betexplorer",
"competition": "epl",
"count": 1,
"fixtures": [
{
"match_id": "xtmHKGT0",
"path": "/football/england/premier-league/arsenal-leeds/xtmHKGT0/",
"slug": "arsenal-leeds",
"home": "Arsenal",
"away": "Leeds",
"kickoff_unix": 1791635400,
"kickoff_iso": "2026-10-10T12:30:00+00:00"
}
]
}
Then Unified Odds by Team Names:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://zylalabs.com/api/13931/sports+odds+api/32131/unified+odds+by+team+names?home=Arsenal&away=Leeds"
{
"source": "sports-odds-api",
"competition": "epl",
"fixture": {
"match_id": "xtmHKGT0",
"home": "Arsenal",
"away": "Leeds",
"kickoff_iso": "2026-10-10T12:30:00+00:00"
},
"prematch": {
"market": "1x2",
"bookmaker_count": 9,
"best": {
"home": { "odds": 1.37, "bookmaker": "versus.es", "implied_pct": 72.99 },
"draw": { "odds": 5.05, "bookmaker": "retabet", "implied_pct": 19.8 },
"away": { "odds": 8.75, "bookmaker": "sportium.es", "implied_pct": 11.43 }
}
},
"live_sofascore": { "matched": false, "event_id": null, "best": null, "bookmaker_count": 0 }
}
market_signal is an odds-movement proxy, not betting volume. Markets on the comparator: 1x2, ou25, btts.
PHP: read best 1X2
$ch = curl_init("https://zylalabs.com/api/13931/sports+odds+api/32120/sofascore+match+odds+1x2?event_id=14083104");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
$home = $data["best"]["home"]["odds"] ?? null;
MCP on the Hub: mcp.zylalabs.com/mcp (search_catalog, get_api_info, call_api).
Go live
1. Register — 7-day trial on your first Hub API.
2. Subscribe to the Sports Odds API listing.
3. GET live events, then match odds with event_id.
4. For EPL widgets, call featured or unified with home / away.