{
"service": "sports-odds-api",
"version": 1,
"proxy": {
"configured": true,
"policy": "scrapingbee basic → premium → brightdata unblocker (no stealth)"
},
"cache": {
"live_odds_ttl_seconds": 20,
"prematch_odds_ttl_seconds": 120
},
"sources": [
{
"id": "sofascore",
"status": "production",
"markets": [
"1x2"
],
"notes": "Live events + per-event odds JSON; bookmaker labels are internal fids."
},
{
"id": "flashscore",
"status": "production",
"notes": "Live feed, match detail, statistics and summary (scores context; no odds)."
},
{
"id": "betexplorer",
"status": "production",
"markets": [
"1x2",
"ou25",
"btts"
],
"competitions": [
"epl",
"laliga",
"serie-a",
"ucl"
],
"notes": "Pre-match multi-bookmaker comparator; snapshot history on odds refresh."
},
{
"id": "oddsportal",
"status": "not_available",
"notes": "Legacy .dat feeds 404; Next.js render not stable — spike only in mvp-odds."
},
{
"id": "betfair_exchange",
"status": "production",
"markets": [
"MATCH_ODDS"
],
"notes": "Exchange matched volume (GBP), best back/lay; requires BETFAIR_* on origin."
}
],
"endpoints": [
{
"method": "GET",
"path": "/health",
"auth": false
},
{
"method": "GET",
"path": "/v1/meta",
"auth": true
},
{
"method": "GET",
"path": "/v1/sofascore/live-events",
"auth": true
},
{
"method": "GET",
"path": "/v1/sofascore/matches/{eventId}/odds",
"auth": true
},
{
"method": "GET",
"path": "/v1/flashscore/live",
"auth": true
},
{
"method": "GET",
"path": "/v1/flashscore/matches/{matchId}",
"auth": true
},
{
"method": "GET",
"path": "/v1/flashscore/matches/{matchId}/stats",
"auth": true
},
{
"method": "GET",
"path": "/v1/flashscore/matches/{matchId}/summary",
"auth": true
},
{
"method": "GET",
"path": "/v1/comparator/epl/fixtures",
"auth": true
},
{
"method": "GET",
"path": "/v1/comparator/epl/featured",
"auth": true,
"query": {
"limit": "1–20, default 5"
}
},
{
"method": "GET",
"path": "/v1/comparator/epl/lookup",
"auth": true,
"query": {
"home": "required",
"away": "required",
"include": "optional best — adds best odds block"
}
},
{
"method": "GET",
"path": "/v1/comparator/{competition}/fixtures",
"auth": true
},
{
"method": "GET",
"path": "/v1/comparator/matches/{matchId}/odds",
"auth": true,
"query": {
"competition": "epl|laliga|serie-a|ucl",
"market": "1x2|ou25|btts",
"path": "optional fixture path",
"fields": "full or best",
"format": "full or compact",
"bookmakers": "comma-separated filter"
}
},
{
"method": "GET",
"path": "/v1/comparator/matches/{matchId}/odds/history",
"auth": true,
"query": [
"competition",
"market",
"limit"
]
},
{
"method": "GET",
"path": "/v1/comparator/competitions",
"auth": true
},
{
"method": "GET",
"path": "/v1/comparator/{competition}/board",
"auth": true,
"query": {
"limit": "featured matches with best + market_signal"
}
},
{
"method": "GET",
"path": "/v1/comparator/matches/{matchId}/market-signal",
"auth": true
},
{
"method": "GET",
"path": "/v1/comparator/matches/{matchId}/analysis",
"auth": true,
"query": {
"format": "full|compact — odds + signal + history bundle"
}
},
{
"method": "GET",
"path": "/v1/odds/{competition}",
"auth": true,
"query": {
"0": "home",
"1": "away",
"format": "full|compact",
"include": "optional betfair — adds betfair_exchange block when configured"
}
},
{
"method": "GET",
"path": "/v1/exchange/betfair/lookup",
"auth": true,
"query": {
"home": "required",
"away": "required"
}
},
{
"method": "GET",
"path": "/v1/exchange/betfair/markets/{marketId}",
"auth": true
}
],
"capabilities": {
"market_signal": "Steam index, line movement, liquidity proxy — not currency volume",
"cross_line_gap": "Prematch BetExplorer vs live SofaScore best lines",
"betfair_exchange": "Matched volume and back/lay from Betfair Exchange API (GBP)",
"sitemap_paths": "Competition slugs resolved from BetExplorer fixtures sitemap (24h cache)"
},
"betfair": {
"configured": true,
"market_cache_seconds": 45
},
"audiences": {
"recreational": {
"label": "Recreativo / comparador",
"goal": "Mejor cuota y casas sin fricción.",
"endpoints": [
"GET /v1/comparator/epl/lookup?home=&away=&include=best",
"GET /v1/comparator/matches/{id}/odds?fields=best",
"GET /v1/comparator/matches/{id}/odds?fields=full",
"GET /v1/sofascore/live-events",
"GET /v1/sofascore/matches/{eventId}/odds",
"GET /v1/flashscore/live",
"GET /v1/flashscore/matches/{matchId}",
"GET /v1/flashscore/matches/{matchId}/stats",
"GET /v1/flashscore/matches/{matchId}/summary"
],
"fields": [
"best",
"bookmakers[]",
"selections.implied_pct",
"edge_vs_best_pct",
"bookmaker_key"
]
},
"semi_pro": {
"label": "Semi-pro / line shoppers",
"goal": "Movimiento de línea + mejor precio + contexto pre-match vs live.",
"endpoints": [
"GET /v1/odds/{competition}?home=&away=",
"GET /v1/comparator/matches/{id}/market-signal",
"GET /v1/comparator/matches/{id}/odds/history",
"GET /v1/comparator/matches/{id}/analysis",
"GET /v1/comparator/{competition}/board"
],
"fields": [
"market_signal.steam_index",
"market_signal.line_movement",
"history.delta",
"cross_line_gap",
"consensus_spread_pct"
],
"notes": "market_signal is odds-based activity — not currency betting volume."
},
"exchange_pro": {
"label": "Pro / exchange (v2 — no publicar aún)",
"goal": "Matched volume en exchange (Betfair GBP). Fuera del listing v1.",
"status": "planned_v2",
"endpoints": [],
"planned": [
"Origin prod: BETFAIR_ENABLED=true — SSO/API vía proxy.zylalabs.com (ScrapingBee premium + country_code=gb); Forge US no llega a Betfair directo.",
"GET /v1/exchange/betfair/lookup?home=&away= y GET /v1/exchange/betfair/markets/{marketId} — matched volume GBP, back/lay (Delayed app key).",
"Unified opcional: GET /v1/odds/{competition}?home=&away=&include=betfair añade bloque betfair_exchange.",
"No confundir con comparador/SofaScore (cuotas de casas). Exchange = liquidez peer-to-peer Betfair.",
"Tomás: no crear endpoints Hub ni listing “Betfair” en v1; ver /doc §10."
],
"notes": "No incluir este bloque en el master del Hub en v1."
}
},
"competitions": [
{
"key": "epl",
"label": "Premier League",
"betexplorer_path": "england/premier-league",
"betexplorer_path_config": "england/premier-league",
"path_source": "sitemap_canonical",
"sitemap_indexed_at": "2026-09-23T14:18:42+00:00"
},
{
"key": "laliga",
"label": "La Liga",
"betexplorer_path": "spain/laliga",
"betexplorer_path_config": "spain/laliga"
}
],
"_note": "Response truncated for documentation purposes"
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32187/api+metadata' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "sofascore",
"sport": "football",
"count": 330,
"events": [
{
"eventState": [],
"tournament": {
"name": "U17 Friendly Games",
"slug": "u17-friendly-games",
"category": {
"name": "World",
"slug": "world",
"sport": {
"name": "Football",
"slug": "football",
"id": 1
},
"priority": 20,
"country": [],
"id": 1468,
"flag": "international",
"fieldTranslations": {
"nameTranslation": {
"ar": "العالم",
"bn": "বিশ্ব",
"hi": "विश्व",
"ru": "Мир"
},
"shortNameTranslation": []
}
},
"uniqueTournament": {
"name": "U17 Friendly Games",
"slug": "u17-friendly-games",
"primaryColorHex": "#25497d",
"secondaryColorHex": "#d38f1d",
"category": {
"name": "World",
"slug": "world",
"sport": {
"name": "Football",
"slug": "football",
"id": 1
},
"priority": 20,
"country": [],
"id": 1468,
"flag": "international",
"fieldTranslations": {
"nameTranslation": {
"ar": "العالم",
"bn": "বিশ্ব",
"hi": "विश्व",
"ru": "Мир"
},
"shortNameTranslation": []
}
},
"userCount": 2043,
"hasPerformanceGraphFeature": false,
"showBanner": true,
"liveActivityEnabled": false,
"country": [],
"id": 858,
"hasEventPlayerStatistics": false,
"displayInverseHomeAwayTeams": false,
"fieldTranslations": {
"nameTranslation": {
"ar": "مباريات ودية تحت 17",
"ru": "Товарищеские игры до 17 лет"
},
"shortNameTranslation": []
}
},
"priority": 0,
"isGroup": false,
"isLive": false,
"id": 5842,
"fieldTranslations": {
"nameTranslation": {
"ar": "مباريات ودية تحت 17",
"ru": "Товарищеские игры U17"
},
"shortNameTranslation": []
}
},
"season": {
"name": "U17 Friendly Games 2026",
"year": "2026",
"editor": false,
"id": 88540
},
"customId": "zZisccj",
"status": {
"code": 31,
"description": "Halftime",
"type": "inprogress"
},
"homeTeam": {
"name": "Finland U17",
"slug": "finland-u17",
"shortName": "Finland U17",
"gender": "M",
"sport": {
"name": "Football",
"slug": "football",
"id": 1
},
"userCount": 367,
"nameCode": "FIN",
"disabled": false,
"national": true,
"type": 0,
"country": {
"alpha2": "FI",
"alpha3": "FIN",
"name": "Finland",
"slug": "finland"
},
"id": 22602,
"subTeams": [],
"teamColors": {
"primary": "#ffffff",
"secondary": "#0066b3",
"text": "#0066b3"
},
"fieldTranslations": {
"nameTranslation": {
"ar": "فنلندا تحت 17",
"hi": "फ़िनलैंड U17",
"ru": "Финляндия U17"
},
"shortNameTranslation": {
"ar": "فنلندا تحت 17"
}
}
},
"awayTeam": {
"name": "France U17",
"slug": "france-u17",
"shortName": "France U17",
"gender": "M",
"sport": {
"name": "Football",
"slug": "football",
"id": 1
},
"userCount": 8356,
"nameCode": "FRA",
"disabled": false,
"national": true,
"type": 0,
"country": {
"alpha2": "FR",
"alpha3": "FRA",
"name": "France",
"slug": "france"
},
"id": 22474,
"subTeams": [],
"teamColors": {
"primary": "#01509e",
"secondary": "#e30613",
"text": "#e30613"
},
"fieldTranslations": {
"nameTranslation": {
"ar": "فرنسا تحت 17",
"hi": "फ्रांस U17",
"ru": "Франция U17"
},
"shortNameTranslation": {
"ar": "فرنسا تحت 17"
}
}
},
"homeScore": {
"current": 2,
"display": 2,
"period1": 2,
"normaltime": 2
},
"awayScore": {
"current": 1,
"display": 1,
"period1": 1,
"normaltime": 1
},
"coverage": -1,
"time": {
"currentPeriodStartTimestamp": 1790172120,
"lastPeriodEndTimestamp": 1790174891
},
"changes": {
"changes": [
"status.code",
"status.description",
"homeScore.period1",
"homeScore.normaltime",
"awayScore.period1",
"awayScore.normaltime",
"time.lastPeriodEnd"
],
"changeTimestamp": 1790174891
},
"hasGlobalHighlights": false,
"crowdsourcingDataDisplayEnabled": false,
"id": 17157205,
"varInProgress": {
"homeTeam": false,
"awayTeam": false
},
"slug": "finland-u17-france-u17",
"startTimestamp": 1790172000,
"finalResultOnly": false,
"feedLocked": false,
"isEditor": false,
"eventFilters": {
"category": [
"national"
],
"level": [
"pro",
"youth"
],
"gender": [
"M"
]
}
},
{
"eventState": [],
"tournament": {
"name": "South American Games, Women, Bronze medal match",
"slug": "south-american-games-playoffs",
"category": {
"name": "South America",
"slug": "south-america",
"sport": {
"name": "Football",
"slug": "football",
"id": 1
},
"priority": 18,
"country": [],
"id": 1470,
"flag": "south-america",
"fieldTranslations": {
"nameTranslation": {
"ar": "أمريكا الجنوبية",
"ru": "Южная Америка"
},
"shortNameTranslation": []
}
},
"uniqueTournament": {
"name": "South American Games, Women",
"slug": "south-american-games-women",
"category": {
"name": "South America",
"slug": "south-america",
"sport": {
"name": "Football"
}
}
}
}
}
],
"_note": "Response truncated for documentation purposes"
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32188/sofascore+live+football+events' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "sofascore",
"match_id": "14083104",
"market": "1x2",
"bookmaker_count": 2,
"bookmakers": [
{
"name": "sofascore_fid_182658084",
"selections": {
"home": 3.2,
"draw": 3.1,
"away": 2.4,
"implied_pct": {
"home": 31.25,
"draw": 32.26,
"away": 41.67
},
"edge_vs_best_pct": {
"home": -14.67,
"draw": 0,
"away": -20
}
},
"overround_pct": 5.17
},
{
"name": "sofascore_fid_182658084",
"selections": {
"home": 3.75,
"draw": 2.05,
"away": 3,
"implied_pct": {
"home": 26.67,
"draw": 48.78,
"away": 33.33
},
"edge_vs_best_pct": {
"home": 0,
"draw": -33.87,
"away": 0
}
},
"overround_pct": 8.78
}
],
"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
}
},
"home": "Real Oviedo",
"away": "Osasuna",
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-23T14:57:11+00:00",
"from_cache": false
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32189/sofascore+match+odds+1x2' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "flashscore",
"count": 226,
"matches": [
{
"source": "flashscore",
"source_event_id": "OUrBkM6m",
"sport": "football",
"status_code": 1,
"start_timestamp": 1790182800,
"updated_timestamp": 1789153771,
"is_live": false,
"home": {
"id": "QDJF1BmN",
"name": "Stammersdorf",
"short_code": "STA",
"slug": "sv-gerasdorf-stammersdorf"
},
"away": {
"id": "dfF86oXf",
"name": "Sportunion Mauer",
"short_code": "SPO",
"slug": "sportunion-mauer"
},
"score": {
"home": null,
"away": null
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "vDJrnwQs",
"sport": "football",
"status_code": 3,
"start_timestamp": 1790141400,
"updated_timestamp": 1790148153,
"is_live": true,
"home": {
"id": "Us2VHLIq",
"name": "Иран U23",
"short_code": "IRN",
"slug": "iran"
},
"away": {
"id": "8x5txsAF",
"name": "Северная Корея U23",
"short_code": "PRK",
"slug": "north-korea"
},
"score": {
"home": 1,
"away": 4
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "AcTCia2K",
"sport": "football",
"status_code": 3,
"start_timestamp": 1790141400,
"updated_timestamp": 1790148187,
"is_live": true,
"home": {
"id": "KvDnIMwk",
"name": "Китай U23",
"short_code": "CHI",
"slug": "china"
},
"away": {
"id": "88mfeE0h",
"name": "ОАЭ U23",
"short_code": "UNI",
"slug": "united-arab-emirates"
},
"score": {
"home": 0,
"away": 0
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "AwwJVHu1",
"sport": "football",
"status_code": 3,
"start_timestamp": 1790159400,
"updated_timestamp": 1790165996,
"is_live": true,
"home": {
"id": "SYF3M1AS",
"name": "Кыргызстан U23",
"short_code": "КЫР",
"slug": "kyrgyzstan"
},
"away": {
"id": "Gb0wGamd",
"name": "Гонконг U23",
"short_code": "HON",
"slug": "hong-kong"
},
"score": {
"home": 4,
"away": 0
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "riyRTeAD",
"sport": "football",
"status_code": 3,
"start_timestamp": 1790159400,
"updated_timestamp": 1790166023,
"is_live": true,
"home": {
"id": "K4AKHlkC",
"name": "Япония U23",
"short_code": "JPN",
"slug": "japan"
},
"away": {
"id": "zchuuC0a",
"name": "Таиланд U23",
"short_code": "Таил",
"slug": "thailand"
},
"score": {
"home": 3,
"away": 0
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "WbAG8ncS",
"sport": "football",
"status_code": 12,
"start_timestamp": 1790173800,
"updated_timestamp": 1790174022,
"is_live": true,
"home": {
"id": "K8aAGt6r",
"name": "Ирак",
"short_code": "IRQ",
"slug": "iraq"
},
"away": {
"id": "EDZck0CK",
"name": "Оман",
"short_code": "OMA",
"slug": "oman"
},
"score": {
"home": 1,
"away": 0
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "boC8A8SF",
"sport": "football",
"status_code": 1,
"start_timestamp": 1790186400,
"updated_timestamp": null,
"is_live": true,
"home": {
"id": "biSY8ox4",
"name": "Саудовская Аравия",
"short_code": "SAU",
"slug": "saudi-arabia"
},
"away": {
"id": "UTDwCIKD",
"name": "Кувейт",
"short_code": "KUW",
"slug": "kuwait"
},
"score": {
"home": null,
"away": null
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "lQiVwvEO",
"sport": "football",
"status_code": 1,
"start_timestamp": 1790186400,
"updated_timestamp": null,
"is_live": true,
"home": {
"id": "rDX0q8Z3",
"name": "Борхэм Вуд",
"short_code": "БОР",
"slug": "boreham-wood"
},
"away": {
"id": "67gs3wiJ",
"name": "Эвертон U21",
"short_code": "ЭВЕ",
"slug": "everton"
},
"score": {
"home": null,
"away": null
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "4n92vE3E",
"sport": "football",
"status_code": 1,
"start_timestamp": 1790189100,
"updated_timestamp": null,
"is_live": false,
"home": {
"id": "2JC8cPU3",
"name": "Exmouth Town",
"short_code": "EXM",
"slug": "exmouth-town"
},
"away": {
"id": "CYvNst7n",
"name": "Тейм",
"short_code": "THM",
"slug": "thame-united"
},
"score": {
"home": null,
"away": null
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "zoKl6Kb4",
"sport": "football",
"status_code": 1,
"start_timestamp": 1790186400,
"updated_timestamp": null,
"is_live": true,
"home": {
"id": "4W00G1qP",
"name": "Кристал Пэлас (Ж)",
"short_code": "CRY",
"slug": "crystal-palace"
},
"away": {
"id": "Kn1rnLwU",
"name": "Уотфорд (Ж)",
"short_code": "УОТ",
"slug": "watford"
},
"score": {
"home": null,
"away": null
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "rBNd4bTG",
"sport": "football",
"status_code": 1,
"start_timestamp": 1790186400,
"updated_timestamp": null,
"is_live": true,
"home": {
"id": "Ye260xTF",
"name": "Ливерпуль (Ж)",
"short_code": "ЛИВ",
"slug": "liverpool"
},
"away": {
"id": "tUgFr9bg",
"name": "Сандерленд (Ж)",
"short_code": "САН",
"slug": "sunderland"
},
"score": {
"home": null,
"away": null
},
"tournament": {
"name": null
}
},
{
"source": "flashscore",
"source_event_id": "QirPkaEN",
"sport": "football",
"status_code": 1,
"start_timestamp": 1790186400,
"updated_timestamp": null,
"is_live": true,
"home": {
"id": "4EeCFcxJ"
}
}
],
"_note": "Response truncated for documentation purposes"
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32190/flashscore+football+live+matches' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "flashscore",
"source_event_id": "OUrBkM6m",
"sport": "football",
"status_code": 3,
"start_timestamp": 1790182800,
"updated_timestamp": 1789153771,
"is_live": false,
"home": {
"id": "QDJF1BmN",
"name": "Stammersdorf",
"short_code": "STA",
"slug": "sv-gerasdorf-stammersdorf"
},
"away": {
"id": "dfF86oXf",
"name": "Sportunion Mauer",
"short_code": "SPO",
"slug": "sportunion-mauer"
},
"score": {
"home": 0,
"away": 2
},
"tournament": {
"name": "АВСТРИЯ: Вена"
},
"meta": {
"status_code": 3,
"last_update_timestamp": 1789153771,
"kickoff_timestamp": 1790182800,
"is_live": false
},
"cache": {
"hit": false,
"ttl_seconds": 20
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32191/flashscore+match+detail&match_id=Required' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "flashscore",
"source_event_id": "C2VSgiFl",
"count": 42,
"statistics": [
{
"period": "Match",
"group": "Top stats",
"stat_id": "12",
"name": "Ball possession",
"home": "50%",
"away": "50%"
},
{
"period": "Match",
"group": "Top stats",
"stat_id": "34",
"name": "Total shots",
"home": "17",
"away": "9"
},
{
"period": "Match",
"group": "Top stats",
"stat_id": "13",
"name": "Shots on target",
"home": "7",
"away": "7"
},
{
"period": "Match",
"group": "Top stats",
"stat_id": "16",
"name": "Corner kicks",
"home": "4",
"away": "8"
},
{
"period": "Match",
"group": "Top stats",
"stat_id": "23",
"name": "Yellow cards",
"home": "3",
"away": "2"
},
{
"period": "Match",
"group": "Shots",
"stat_id": "34",
"name": "Total shots",
"home": "17",
"away": "9"
},
{
"period": "Match",
"group": "Shots",
"stat_id": "13",
"name": "Shots on target",
"home": "7",
"away": "7"
},
{
"period": "Match",
"group": "Shots",
"stat_id": "14",
"name": "Shots off target",
"home": "6",
"away": "1"
},
{
"period": "Match",
"group": "Shots",
"stat_id": "158",
"name": "Ударов заблокировано",
"home": "4",
"away": "1"
},
{
"period": "Match",
"group": "Attack",
"stat_id": "16",
"name": "Corner kicks",
"home": "4",
"away": "8"
},
{
"period": "Match",
"group": "Attack",
"stat_id": "17",
"name": "Offsides",
"home": "2",
"away": "2"
},
{
"period": "Match",
"group": "Attack",
"stat_id": "15",
"name": "Fouls",
"home": "14",
"away": "17"
},
{
"period": "Match",
"group": "Passes",
"stat_id": "18",
"name": "Passes",
"home": "21",
"away": "20"
},
{
"period": "Match",
"group": "Defence",
"stat_id": "21",
"name": "Goalkeeper saves",
"home": "15",
"away": "12"
},
{
"period": "1st half",
"group": "Top stats",
"stat_id": "12",
"name": "Ball possession",
"home": "59%",
"away": "41%"
},
{
"period": "1st half",
"group": "Top stats",
"stat_id": "34",
"name": "Total shots",
"home": "6",
"away": "4"
},
{
"period": "1st half",
"group": "Top stats",
"stat_id": "13",
"name": "Shots on target",
"home": "4",
"away": "4"
},
{
"period": "1st half",
"group": "Top stats",
"stat_id": "16",
"name": "Corner kicks",
"home": "2",
"away": "1"
},
{
"period": "1st half",
"group": "Top stats",
"stat_id": "23",
"name": "Yellow cards",
"home": "2",
"away": "0"
},
{
"period": "1st half",
"group": "Shots",
"stat_id": "34",
"name": "Total shots",
"home": "6",
"away": "4"
},
{
"period": "1st half",
"group": "Shots",
"stat_id": "13",
"name": "Shots on target",
"home": "4",
"away": "4"
},
{
"period": "1st half",
"group": "Shots",
"stat_id": "14",
"name": "Shots off target",
"home": "1",
"away": "0"
},
{
"period": "1st half",
"group": "Shots",
"stat_id": "158",
"name": "Ударов заблокировано",
"home": "1",
"away": "0"
},
{
"period": "1st half",
"group": "Attack",
"stat_id": "16",
"name": "Corner kicks",
"home": "2",
"away": "1"
},
{
"period": "1st half",
"group": "Attack",
"stat_id": "17",
"name": "Offsides",
"home": "0",
"away": "2"
},
{
"period": "1st half",
"group": "Attack",
"stat_id": "15",
"name": "Fouls",
"home": "9",
"away": "5"
},
{
"period": "1st half",
"group": "Passes",
"stat_id": "18",
"name": "Passes",
"home": "14",
"away": "8"
},
{
"period": "1st half",
"group": "Defence",
"stat_id": "21",
"name": "Goalkeeper saves",
"home": "5",
"away": "7"
},
{
"period": "2nd half",
"group": "Top stats",
"stat_id": "12",
"name": "Ball possession",
"home": "41%",
"away": "59%"
},
{
"period": "2nd half",
"group": "Top stats",
"stat_id": "34",
"name": "Total shots",
"home": "11",
"away": "5"
},
{
"period": "2nd half",
"group": "Top stats",
"stat_id": "13",
"name": "Shots on target",
"home": "3",
"away": "3"
},
{
"period": "2nd half",
"group": "Top stats",
"stat_id": "16",
"name": "Corner kicks",
"home": "2",
"away": "7"
},
{
"period": "2nd half",
"group": "Top stats",
"stat_id": "23",
"name": "Yellow cards",
"home": "1",
"away": "2"
},
{
"period": "2nd half",
"group": "Shots",
"stat_id": "34",
"name": "Total shots",
"home": "11",
"away": "5"
},
{
"period": "2nd half",
"group": "Shots",
"stat_id": "13",
"name": "Shots on target",
"home": "3",
"away": "3"
},
{
"period": "2nd half",
"group": "Shots",
"stat_id": "14",
"name": "Shots off target",
"home": "5",
"away": "1"
},
{
"period": "2nd half",
"group": "Shots",
"stat_id": "158",
"name": "Ударов заблокировано",
"home": "3",
"away": "1"
},
{
"period": "2nd half",
"group": "Attack",
"stat_id": "16",
"name": "Corner kicks",
"home": "2",
"away": "7"
},
{
"period": "2nd half",
"group": "Attack",
"stat_id": "17",
"name": "Offsides",
"home": "2",
"away": "0"
},
{
"period": "2nd half",
"group": "Attack",
"stat_id": "15",
"name": "Fouls",
"home": "5",
"away": "12"
},
{
"period": "2nd half",
"group": "Passes",
"stat_id": "18",
"name": "Passes",
"home": "7",
"away": "12"
},
{
"period": "2nd half",
"group": "Defence",
"stat_id": "21",
"name": "Goalkeeper saves",
"home": "10",
"away": "5"
}
],
"cache": {
"hit": true,
"ttl_seconds": 20
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32192/flashscore+match+statistics&match_id=Required' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "flashscore",
"source_event_id": "C2VSgiFl",
"count": 18,
"periods": [
{
"name": "1-й тайм",
"score": {
"home": 2,
"away": 1
},
"incidents": [
{
"id": "0OGoSBSg",
"minute": "4'",
"team_side": 1,
"type_code": 10,
"label": "Пенальти",
"player": "Bounkong B.",
"player_id": "rZsGa1l2",
"player_url": "/player/bounkong-bounphachan/rZsGa1l2/",
"score_home": 1,
"score_away": 0,
"reason": ""
},
{
"id": "nmRsiSK5",
"minute": "24'",
"team_side": 1,
"type_code": 8,
"label": "Голевой пас",
"player": "Sangvilay P.",
"player_id": "8UTnVQlC",
"player_url": "/player/sangvilay-photthavong/8UTnVQlC/",
"score_home": 2,
"score_away": 0,
"reason": ""
},
{
"id": "bowtIGtJ",
"minute": "30'",
"team_side": 1,
"type_code": 1,
"label": "Желтая карточка",
"player": "Bounkong B.",
"player_id": "rZsGa1l2",
"player_url": "/player/bounkong-bounphachan/rZsGa1l2/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "bNroj1h2",
"minute": "33'",
"team_side": 1,
"type_code": 1,
"label": "Желтая карточка",
"player": "Singsavang X.",
"player_id": "b7FHtuph",
"player_url": "/player/singsavang-xayasith/b7FHtuph/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "2yDye5dK",
"minute": "45+1'",
"team_side": 2,
"type_code": 8,
"label": "Голевой пас",
"player": "Ali Rahman A.",
"player_id": "tKQ81Oci",
"player_url": "/player/ali-rahman-azwan/tKQ81Oci/",
"score_home": 2,
"score_away": 1,
"reason": ""
}
]
},
{
"name": "2-й тайм",
"score": {
"home": 1,
"away": 0
},
"incidents": [
{
"id": "IwhK6HDM",
"minute": "46'",
"team_side": 1,
"type_code": 7,
"label": "Замена (уходит)",
"player": "Keonuchanh K.",
"player_id": "vNLd5lYF",
"player_url": "/player/keonuchanh-khonesavanh/vNLd5lYF/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "h2PvfvUG",
"minute": "46'",
"team_side": 1,
"type_code": 7,
"label": "Замена (уходит)",
"player": "Chernvanglien B.",
"player_id": "xvutlpDE",
"player_url": "/player/chernvanglien-bounchay/xvutlpDE/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "8A9uvuKc",
"minute": "57'",
"team_side": 2,
"type_code": 7,
"label": "Замена (уходит)",
"player": "Ismail N.",
"player_id": "nRYMcg7U",
"player_url": "/player/ismail-nazirrudin/nRYMcg7U/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "M3lGS5HD",
"minute": "58'",
"team_side": 1,
"type_code": 7,
"label": "Замена (уходит)",
"player": "Phommachanh S.",
"player_id": "A1xuu7x1",
"player_url": "/player/phommachan-sonesanith/A1xuu7x1/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "S6MC6tHF",
"minute": "61'",
"team_side": 1,
"type_code": 1,
"label": "Желтая карточка",
"player": "Thongkhamsavath D.",
"player_id": "zmtZEOO4",
"player_url": "/player/thongkhamsavath-damoth/zmtZEOO4/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "Q16SkChc",
"minute": "66'",
"team_side": 1,
"type_code": 7,
"label": "Замена (уходит)",
"player": "Angot R.",
"player_id": "KCqx8yHG",
"player_url": "/player/angot-roman/KCqx8yHG/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "MVKjJmy2",
"minute": "66'",
"team_side": 2,
"type_code": 1,
"label": "Желтая карточка",
"player": "Syamra H.",
"player_id": "rTPMHIZq",
"player_url": "/player/naqiuddin-haziq/rTPMHIZq/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "WdU72kx3",
"minute": "67'",
"team_side": 1,
"type_code": 3,
"label": "Гол",
"player": "Chernvanglien B.",
"player_id": "xvutlpDE",
"player_url": "/player/chernvanglien-bounchay/xvutlpDE/",
"score_home": 3,
"score_away": 1,
"reason": ""
},
{
"id": "Gb58lHED",
"minute": "83'",
"team_side": 2,
"type_code": 7,
"label": "Замена (уходит)",
"player": "Danial A.",
"player_id": "2TCOKzYg",
"player_url": "/player/azrin-danial/2TCOKzYg/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "8MZu3GT6",
"minute": "83'",
"team_side": 2,
"type_code": 7,
"label": "Замена (уходит)",
"player": "Azman H.",
"player_id": "AcN7HxaM",
"player_url": "/player/azman-hanif/AcN7HxaM/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "lIMrL96k",
"minute": "87'",
"team_side": 2,
"type_code": 1,
"label": "Желтая карточка",
"player": "Ismail N.",
"player_id": "nRYMcg7U",
"player_url": "/player/ismail-nazirrudin/nRYMcg7U/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "lAQPK0C6",
"minute": "88'",
"team_side": 2,
"type_code": 7,
"label": "Замена (уходит)",
"player": "Munawwar A.",
"player_id": "nymYuDkh",
"player_url": "/player/munawwar-ali/nymYuDkh/",
"score_home": null,
"score_away": null,
"reason": ""
},
{
"id": "KArA0xQb",
"minute": "89'",
"team_side": 1,
"type_code": 7,
"label": "Замена (уходит)",
"player": "Latsavong T.",
"player_id": "neoEHG4j",
"player_url": "/player/latsavong-thavisok/neoEHG4j/",
"score_home": null,
"score_away": null,
"reason": ""
}
]
}
],
"cache": {
"hit": false,
"ttl_seconds": 20
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32193/flashscore+match+summary&match_id=Required' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "betexplorer",
"competition": "epl",
"competition_label": "Premier League",
"betexplorer_path": "england/premier-league",
"count": 20,
"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"
},
{
"match_id": "p6jPIfbD",
"path": "/football/england/premier-league/aston-villa-brentford/p6jPIfbD/",
"slug": "aston-villa-brentford",
"home": "Aston Villa",
"away": "Brentford",
"kickoff_unix": 1791644400,
"kickoff_iso": "2026-10-10T15:00:00+00:00"
},
{
"match_id": "8I6zQB5t",
"path": "/football/england/premier-league/chelsea-bournemouth/8I6zQB5t/",
"slug": "chelsea-bournemouth",
"home": "Chelsea",
"away": "Bournemouth",
"kickoff_unix": null,
"kickoff_iso": null
},
{
"match_id": "UZ96Io4U",
"path": "/football/england/premier-league/ipswich-fulham/UZ96Io4U/",
"slug": "ipswich-fulham",
"home": "Ipswich",
"away": "Fulham",
"kickoff_unix": null,
"kickoff_iso": null
},
{
"match_id": "Qw1VY6lB",
"path": "/football/england/premier-league/sunderland-brighton/Qw1VY6lB/",
"slug": "sunderland-brighton",
"home": "Sunderland",
"away": "Brighton",
"kickoff_unix": null,
"kickoff_iso": null
},
{
"match_id": "hQ2NzTJb",
"path": "/football/england/premier-league/manchester-united-tottenham/hQ2NzTJb/",
"slug": "manchester-united-tottenham",
"home": "Manchester Utd",
"away": "Tottenham",
"kickoff_unix": 1791653400,
"kickoff_iso": "2026-10-10T17:30:00+00:00"
},
{
"match_id": "ld8jMT45",
"path": "/football/england/premier-league/crystal-palace-nottingham/ld8jMT45/",
"slug": "crystal-palace-nottingham",
"home": "Crystal Palace",
"away": "Nottingham",
"kickoff_unix": 1791727200,
"kickoff_iso": "2026-10-11T14:00:00+00:00"
},
{
"match_id": "dMBbK7ZH",
"path": "/football/england/premier-league/hull-city-everton/dMBbK7ZH/",
"slug": "hull-city-everton",
"home": "Hull",
"away": "Everton",
"kickoff_unix": null,
"kickoff_iso": null
},
{
"match_id": "p0aFxkkn",
"path": "/football/england/premier-league/liverpool-manchester-city/p0aFxkkn/",
"slug": "liverpool-manchester-city",
"home": "Liverpool",
"away": "Manchester City",
"kickoff_unix": 1791736200,
"kickoff_iso": "2026-10-11T16:30:00+00:00"
},
{
"match_id": "tW4rOkzg",
"path": "/football/england/premier-league/coventry-newcastle-utd/tW4rOkzg/",
"slug": "coventry-newcastle-utd",
"home": "Coventry",
"away": "Newcastle",
"kickoff_unix": 1791835200,
"kickoff_iso": "2026-10-12T20:00:00+00:00"
},
{
"match_id": "2wo3m634",
"path": "/football/england/premier-league/everton-chelsea/2wo3m634/",
"slug": "everton-chelsea",
"home": "Everton",
"away": "Chelsea",
"kickoff_unix": 1792240200,
"kickoff_iso": "2026-10-17T12:30:00+00:00"
},
{
"match_id": "2Jf9ROto",
"path": "/football/england/premier-league/brentford-liverpool/2Jf9ROto/",
"slug": "brentford-liverpool",
"home": "Brentford",
"away": "Liverpool",
"kickoff_unix": 1792249200,
"kickoff_iso": "2026-10-17T15:00:00+00:00"
},
{
"match_id": "A3lBopYG",
"path": "/football/england/premier-league/fulham-hull-city/A3lBopYG/",
"slug": "fulham-hull-city",
"home": "Fulham",
"away": "Hull",
"kickoff_unix": null,
"kickoff_iso": null
},
{
"match_id": "hjYlv2Qj",
"path": "/football/england/premier-league/manchester-city-ipswich/hjYlv2Qj/",
"slug": "manchester-city-ipswich",
"home": "Manchester City",
"away": "Ipswich",
"kickoff_unix": null,
"kickoff_iso": null
},
{
"match_id": "KdQz25Ic",
"path": "/football/england/premier-league/newcastle-utd-aston-villa/KdQz25Ic/",
"slug": "newcastle-utd-aston-villa",
"home": "Newcastle",
"away": "Aston Villa",
"kickoff_unix": 1792258200,
"kickoff_iso": "2026-10-17T17:30:00+00:00"
},
{
"match_id": "Y34wXpJN",
"path": "/football/england/premier-league/bournemouth-sunderland/Y34wXpJN/",
"slug": "bournemouth-sunderland",
"home": "Bournemouth",
"away": "Sunderland",
"kickoff_unix": 1792332000,
"kickoff_iso": "2026-10-18T14:00:00+00:00"
},
{
"match_id": "fDsekSYi",
"path": "/football/england/premier-league/brighton-crystal-palace/fDsekSYi/",
"slug": "brighton-crystal-palace",
"home": "Brighton",
"away": "Crystal Palace",
"kickoff_unix": null,
"kickoff_iso": null
},
{
"match_id": "rHnJqO2T",
"path": "/football/england/premier-league/leeds-manchester-united/rHnJqO2T/",
"slug": "leeds-manchester-united",
"home": "Leeds",
"away": "Manchester Utd",
"kickoff_unix": null,
"kickoff_iso": null
},
{
"match_id": "hAOr0qmA",
"path": "/football/england/premier-league/nottingham-arsenal/hAOr0qmA/",
"slug": "nottingham-arsenal",
"home": "Nottingham",
"away": "Arsenal",
"kickoff_unix": 1792341000,
"kickoff_iso": "2026-10-18T16:30:00+00:00"
},
{
"match_id": "0zSjbNHM",
"path": "/football/england/premier-league/tottenham-coventry/0zSjbNHM/",
"slug": "tottenham-coventry",
"home": "Tottenham",
"away": "Coventry",
"kickoff_unix": 1792440000,
"kickoff_iso": "2026-10-19T20:00:00+00:00"
}
],
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-23T16:04:26+00:00",
"from_cache": false
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32194/comparator+epl+fixtures' --header 'Authorization: Bearer YOUR_API_KEY'
{
"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"
}
],
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-23T16:08:03+00:00",
"from_cache": true
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32195/comparator+featured+epl?limit=1' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "betexplorer",
"competition": "epl",
"match_id": "xtmHKGT0",
"path": "/football/england/premier-league/arsenal-leeds/xtmHKGT0/",
"home": "Arsenal",
"away": "Leeds",
"kickoff_unix": 1791635400,
"kickoff_iso": "2026-10-10T12:30:00+00:00",
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-23T16:08:03+00:00",
"from_cache": false
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32197/comparator+lookup+by+team+names?home=Arsenal&away=Leeds' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "betexplorer",
"competition": "epl",
"match_id": "xtmHKGT0",
"home": "Arsenal",
"away": "Leeds",
"market": "1x2",
"bookmaker_count": 5,
"best": {
"home": {
"odds": 1.4,
"bookmaker": "interwetten.de",
"implied_pct": 71.43
},
"draw": {
"odds": 5,
"bookmaker": "bet365",
"implied_pct": 20
},
"away": {
"odds": 9.5,
"bookmaker": "neobet",
"implied_pct": 10.53
}
},
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-24T11:33:53+00:00",
"from_cache": true
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32198/comparator+match+odds+comparison?market=1x2&market=1x2&fields=best&market=1x2&match_id=Required' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "betexplorer",
"competition": "epl",
"match_id": "xtmHKGT0",
"market": "1x2",
"count": 3,
"snapshots": [
{
"recorded_at": "2026-09-23T18:15:02+00:00",
"market": "1x2",
"bookmaker_count": 9,
"best": {
"home": {
"odds": 1.39,
"bookmaker": "bwin",
"implied_pct": 71.94
},
"draw": {
"odds": 5,
"bookmaker": "bet365",
"implied_pct": 20
},
"away": {
"odds": 9,
"bookmaker": "betfred",
"implied_pct": 11.11
}
}
},
{
"recorded_at": "2026-09-24T11:23:55+00:00",
"market": "1x2",
"bookmaker_count": 6,
"best": {
"home": {
"odds": 1.38,
"bookmaker": "lv bet",
"implied_pct": 72.46
},
"draw": {
"odds": 5.2,
"bookmaker": "lv bet",
"implied_pct": 19.23
},
"away": {
"odds": 8.7,
"bookmaker": "fuksiarz.pl",
"implied_pct": 11.49
}
}
},
{
"recorded_at": "2026-09-24T11:33:53+00:00",
"market": "1x2",
"bookmaker_count": 5,
"best": {
"home": {
"odds": 1.4,
"bookmaker": "interwetten.de",
"implied_pct": 71.43
},
"draw": {
"odds": 5,
"bookmaker": "bet365",
"implied_pct": 20
},
"away": {
"odds": 9.5,
"bookmaker": "neobet",
"implied_pct": 10.53
}
}
}
],
"delta": {
"best_odds_change": {
"home": 0.02,
"draw": -0.2,
"away": 0.8
},
"from": "2026-09-24T11:23:55+00:00",
"to": "2026-09-24T11:33:53+00:00"
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32201/comparator+odds+history&match_id=Required' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "sports-odds-api",
"competition": "epl",
"fixture": {
"source": "betexplorer",
"competition": "epl",
"match_id": "xtmHKGT0",
"path": "/football/england/premier-league/arsenal-leeds/xtmHKGT0/",
"home": "Arsenal",
"away": "Leeds",
"kickoff_unix": 1791635400,
"kickoff_iso": "2026-10-10T12:30:00+00:00",
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-23T17:03:04+00:00",
"from_cache": true
}
},
"prematch": {
"source": "betexplorer",
"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
}
},
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-23T17:04:37+00:00",
"from_cache": false
}
},
"live_sofascore": {
"matched": false,
"event_id": null,
"best": null,
"bookmaker_count": 0
},
"market_signal": {
"disclaimer": "Market activity proxy from odds movement and bookmaker depth — not betting volume in currency.",
"liquidity": {
"tier": "medium",
"label": "Moderate bookmaker coverage"
},
"bookmaker_count": 9,
"favorite_outcome": "home",
"consensus_spread_pct": {
"home": 2.96,
"draw": 11.52,
"away": 18.75
},
"line_movement": {
"period": {
"from": "2026-09-23T17:00:49+00:00",
"to": "2026-09-23T17:04:37+00:00"
},
"by_outcome": {
"home": {
"odds_change": -0.02,
"direction": "shortening"
},
"draw": {
"odds_change": -0.23,
"direction": "shortening"
},
"away": {
"odds_change": -0.61,
"direction": "shortening"
}
},
"strongest_move_outcome": "away",
"strongest_move_size": 0.61
},
"steam_index": 60,
"steam_label": "active"
},
"cross_line_gap": null,
"history": {
"snapshot_count": 4,
"delta": {
"best_odds_change": {
"home": -0.02,
"draw": -0.23,
"away": -0.61
},
"from": "2026-09-23T17:00:49+00:00",
"to": "2026-09-23T17:04:37+00:00"
}
},
"cache": {
"prematch": {
"ttl_seconds": 120,
"cached_at": "2026-09-23T17:04:37+00:00",
"from_cache": false
},
"live": null
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32202/unified+odds+by+team+names?home=Arsenal&away=Leeds' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "sports-odds-api",
"competition": "epl",
"match_id": "xtmHKGT0",
"home": "Arsenal",
"away": "Leeds",
"market": "1x2",
"best": {
"home": {
"odds": 1.4,
"bookmaker": "interwetten.de",
"implied_pct": 71.43
},
"draw": {
"odds": 5,
"bookmaker": "bet365",
"implied_pct": 20
},
"away": {
"odds": 9.5,
"bookmaker": "neobet",
"implied_pct": 10.53
}
},
"bookmaker_count": 5,
"market_signal": {
"disclaimer": "Market activity proxy from odds movement and bookmaker depth — not betting volume in currency.",
"liquidity": {
"tier": "low",
"label": "Limited bookmakers — treat movement cautiously"
},
"bookmaker_count": 5,
"favorite_outcome": "home",
"consensus_spread_pct": {
"home": 7.41,
"draw": 6.19,
"away": 20.29
},
"line_movement": {
"period": {
"from": "2026-09-24T11:23:55+00:00",
"to": "2026-09-24T11:33:53+00:00"
},
"by_outcome": {
"home": {
"odds_change": 0.02,
"direction": "drifting"
},
"draw": {
"odds_change": -0.2,
"direction": "shortening"
},
"away": {
"odds_change": 0.8,
"direction": "drifting"
}
},
"strongest_move_outcome": "away",
"strongest_move_size": 0.8
},
"steam_index": 50,
"steam_label": "active"
},
"history": {
"snapshot_count": 3,
"delta": {
"best_odds_change": {
"home": 0.02,
"draw": -0.2,
"away": 0.8
},
"from": "2026-09-24T11:23:55+00:00",
"to": "2026-09-24T11:33:53+00:00"
}
},
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-24T11:33:53+00:00",
"from_cache": true
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32205/market+signal&match_id=Required' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "sports-odds-api",
"competition": "epl",
"match_id": "xtmHKGT0",
"home": "Arsenal",
"away": "Leeds",
"market": "1x2",
"market_label": "Full time 1X2",
"best": {
"home": {
"odds": 1.39,
"bookmaker": "betmgm.us",
"implied_pct": 71.94
},
"draw": {
"odds": 5.2,
"bookmaker": "stake.com",
"implied_pct": 19.23
},
"away": {
"odds": 8.2,
"bookmaker": "stake.com",
"implied_pct": 12.2
}
},
"bookmaker_count": 4,
"bookmakers": [
{
"name": "bet365",
"selections": {
"home": 1.33,
"draw": 5,
"away": 8,
"implied_pct": {
"home": 75.19,
"draw": 20,
"away": 12.5
},
"edge_vs_best_pct": {
"home": -4.32,
"draw": -3.85,
"away": -2.44
}
},
"bookmaker_key": "bet365",
"overround_pct": 7.69
},
{
"name": "betmgm.us",
"selections": {
"home": 1.39,
"draw": 5,
"away": 7.5,
"implied_pct": {
"home": 71.94,
"draw": 20,
"away": 13.33
},
"edge_vs_best_pct": {
"home": 0,
"draw": -3.85,
"away": -8.54
}
},
"bookmaker_key": "betmgmus",
"overround_pct": 5.28
},
{
"name": "fanduel",
"selections": {
"home": 1.32,
"draw": 5.1,
"away": 8,
"implied_pct": {
"home": 75.76,
"draw": 19.61,
"away": 12.5
},
"edge_vs_best_pct": {
"home": -5.04,
"draw": -1.92,
"away": -2.44
}
},
"bookmaker_key": "fanduel",
"overround_pct": 7.87
},
{
"name": "stake.com",
"selections": {
"home": 1.35,
"draw": 5.2,
"away": 8.2,
"implied_pct": {
"home": 74.07,
"draw": 19.23,
"away": 12.2
},
"edge_vs_best_pct": {
"home": -2.88,
"draw": 0,
"away": 0
}
},
"bookmaker_key": "stakecom",
"overround_pct": 5.5
}
],
"market_signal": {
"disclaimer": "Market activity proxy from odds movement and bookmaker depth — not betting volume in currency.",
"liquidity": {
"tier": "low",
"label": "Limited bookmakers — treat movement cautiously"
},
"bookmaker_count": 4,
"favorite_outcome": "home",
"consensus_spread_pct": {
"home": 5.17,
"draw": 3.92,
"away": 8.92
},
"line_movement": {
"period": {
"from": "2026-09-23T17:04:37+00:00",
"to": "2026-09-23T17:07:24+00:00"
},
"by_outcome": {
"home": {
"odds_change": 0.02,
"direction": "drifting"
},
"draw": {
"odds_change": 0.15,
"direction": "drifting"
},
"away": {
"odds_change": -0.55,
"direction": "shortening"
}
},
"strongest_move_outcome": "away",
"strongest_move_size": 0.55
},
"steam_index": 52,
"steam_label": "active"
},
"history": {
"snapshot_count": 5,
"delta": {
"best_odds_change": {
"home": 0.02,
"draw": 0.15,
"away": -0.55
},
"from": "2026-09-23T17:04:37+00:00",
"to": "2026-09-23T17:07:24+00:00"
},
"recent_snapshots": [
{
"recorded_at": "2026-09-23T16:48:55+00:00",
"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
}
}
},
{
"recorded_at": "2026-09-23T16:54:00+00:00",
"market": "1x2",
"bookmaker_count": 14,
"best": {
"home": {
"odds": 1.39,
"bookmaker": "bwin",
"implied_pct": 71.94
},
"draw": {
"odds": 5.28,
"bookmaker": "Betfair",
"implied_pct": 18.94
},
"away": {
"odds": 9.36,
"bookmaker": "Betfair",
"implied_pct": 10.68
}
}
},
{
"recorded_at": "2026-09-23T17:00:49+00:00",
"market": "1x2",
"bookmaker_count": 14,
"best": {
"home": {
"odds": 1.39,
"bookmaker": "bwin",
"implied_pct": 71.94
},
"draw": {
"odds": 5.28,
"bookmaker": "Betfair",
"implied_pct": 18.94
},
"away": {
"odds": 9.36,
"bookmaker": "Betfair",
"implied_pct": 10.68
}
}
},
{
"recorded_at": "2026-09-23T17:04:37+00:00",
"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
}
}
},
{
"recorded_at": "2026-09-23T17:07:24+00:00",
"market": "1x2",
"bookmaker_count": 4,
"best": {
"home": {
"odds": 1.39,
"bookmaker": "betmgm.us",
"implied_pct": 71.94
},
"draw": {
"odds": 5.2,
"bookmaker": "stake.com",
"implied_pct": 19.23
},
"away": {
"odds": 8.2,
"bookmaker": "stake.com",
"implied_pct": 12.2
}
}
}
]
},
"cache": {
"ttl_seconds": 120,
"cached_at": "2026-09-23T17:07:24+00:00",
"from_cache": false
}
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32207/match+analysis+bundle&match_id=Required' --header 'Authorization: Bearer YOUR_API_KEY'
{
"source": "sports-odds-api",
"competition": "epl",
"count": 5,
"matches": [
{
"match_id": "xtmHKGT0",
"home": "Arsenal",
"away": "Leeds",
"kickoff_iso": "2026-10-10T12:30:00+00:00",
"best": {
"home": {
"odds": 1.38,
"bookmaker": "lv bet",
"implied_pct": 72.46
},
"draw": {
"odds": 5.2,
"bookmaker": "lv bet",
"implied_pct": 19.23
},
"away": {
"odds": 8.7,
"bookmaker": "fuksiarz.pl",
"implied_pct": 11.49
}
},
"market_signal": {
"disclaimer": "Market activity proxy from odds movement and bookmaker depth — not betting volume in currency.",
"liquidity": {
"tier": "medium",
"label": "Moderate bookmaker coverage"
},
"bookmaker_count": 6,
"favorite_outcome": "home",
"consensus_spread_pct": {
"home": 2.94,
"draw": 13.33,
"away": 23.08
},
"line_movement": {
"period": {
"from": "2026-09-23T18:15:02+00:00",
"to": "2026-09-24T11:23:55+00:00"
},
"by_outcome": {
"home": {
"odds_change": -0.01,
"direction": "shortening"
},
"draw": {
"odds_change": 0.2,
"direction": "drifting"
},
"away": {
"odds_change": -0.3,
"direction": "shortening"
}
},
"strongest_move_outcome": "away",
"strongest_move_size": 0.3
},
"steam_index": 35,
"steam_label": "quiet"
}
},
{
"match_id": "p6jPIfbD",
"home": "Aston Villa",
"away": "Brentford",
"kickoff_iso": "2026-10-10T15:00:00+00:00",
"best": {
"home": {
"odds": 2.6,
"bookmaker": "bet365",
"implied_pct": 38.46
},
"draw": {
"odds": 3.57,
"bookmaker": "admiralbet.rs",
"implied_pct": 28.01
},
"away": {
"odds": 2.55,
"bookmaker": "bet365",
"implied_pct": 39.22
}
},
"market_signal": {
"disclaimer": "Market activity proxy from odds movement and bookmaker depth — not betting volume in currency.",
"liquidity": {
"tier": "low",
"label": "Limited bookmakers — treat movement cautiously"
},
"bookmaker_count": 2,
"favorite_outcome": "away",
"consensus_spread_pct": {
"home": 3.13,
"draw": 4.88,
"away": 1.98
},
"line_movement": {
"period": {
"from": "2026-09-23T18:15:51+00:00",
"to": "2026-09-24T11:23:57+00:00"
},
"by_outcome": {
"home": {
"odds_change": -0.01,
"direction": "shortening"
},
"draw": {
"odds_change": 0.02,
"direction": "drifting"
},
"away": {
"odds_change": -0.08,
"direction": "shortening"
}
},
"strongest_move_outcome": "away",
"strongest_move_size": 0.08
},
"steam_index": 19,
"steam_label": "quiet"
}
},
{
"match_id": "hQ2NzTJb",
"home": "Manchester Utd",
"away": "Tottenham",
"kickoff_iso": "2026-10-10T17:30:00+00:00",
"best": {
"home": {
"odds": 1.75,
"bookmaker": "betnacional",
"implied_pct": 57.14
},
"draw": {
"odds": 4.2,
"bookmaker": "segurobet",
"implied_pct": 23.81
},
"away": {
"odds": 4.55,
"bookmaker": "betano.br",
"implied_pct": 21.98
}
},
"market_signal": {
"disclaimer": "Market activity proxy from odds movement and bookmaker depth — not betting volume in currency.",
"liquidity": {
"tier": "medium",
"label": "Moderate bookmaker coverage"
},
"bookmaker_count": 7,
"favorite_outcome": "home",
"consensus_spread_pct": {
"home": 4.68,
"draw": 7.41,
"away": 8
},
"line_movement": {
"period": {
"from": "2026-09-23T18:15:54+00:00",
"to": "2026-09-24T11:24:00+00:00"
},
"by_outcome": {
"home": {
"odds_change": 0.05,
"direction": "drifting"
},
"draw": {
"odds_change": 0,
"direction": "stable"
},
"away": {
"odds_change": 0.05,
"direction": "drifting"
}
},
"strongest_move_outcome": "home",
"strongest_move_size": 0.05
},
"steam_index": 18,
"steam_label": "quiet"
}
},
{
"match_id": "ld8jMT45",
"home": "Crystal Palace",
"away": "Nottingham",
"kickoff_iso": "2026-10-11T14:00:00+00:00",
"best": {
"home": {
"odds": 2.7,
"bookmaker": "Unibet",
"implied_pct": 37.04
},
"draw": {
"odds": 3.6,
"bookmaker": "betinasia",
"implied_pct": 27.78
},
"away": {
"odds": 2.75,
"bookmaker": "Betfair",
"implied_pct": 36.36
}
},
"market_signal": {
"disclaimer": "Market activity proxy from odds movement and bookmaker depth — not betting volume in currency.",
"liquidity": {
"tier": "high",
"label": "Deep comparator coverage"
},
"bookmaker_count": 13,
"favorite_outcome": "home",
"consensus_spread_pct": {
"home": 7.69,
"draw": 18.18,
"away": 5.99
},
"line_movement": {
"period": {
"from": "2026-09-23T18:15:57+00:00",
"to": "2026-09-24T11:24:05+00:00"
},
"by_outcome": {
"home": {
"odds_change": 0,
"direction": "stable"
},
"draw": {
"odds_change": 0.2,
"direction": "drifting"
},
"away": {
"odds_change": 0.05,
"direction": "drifting"
}
},
"strongest_move_outcome": "draw",
"strongest_move_size": 0.2
},
"steam_index": 43,
"steam_label": "active"
}
},
{
"match_id": "p0aFxkkn",
"home": "Liverpool",
"away": "Manchester City",
"kickoff_iso": "2026-10-11T16:30:00+00:00",
"best": {
"home": {
"odds": 2.85,
"bookmaker": "Unibet",
"implied_pct": 35.09
},
"draw": {
"odds": 3.85,
"bookmaker": "betinasia"
}
}
}
],
"_note": "Response truncated for documentation purposes"
}
curl --location --request GET 'https://zylalabs.com/api/13936/live+football+odds+api/32209/competition+board&competition=Required' --header 'Authorization: Bearer YOUR_API_KEY'
Após se cadastrar, cada desenvolvedor recebe uma chave de acesso à API pessoal, uma combinação única de letras e dígitos para acessar nosso endpoint de API. Para autenticar com a Odds de Futebol ao Vivo API basta incluir seu token Bearer no cabeçalho Authorization.
| Cabeçalho | Descrição |
|---|---|
Authorization
|
Obrigatório
Deve ser Bearer access_key. Veja "Sua chave de acesso à API" acima quando você estiver inscrito.
|
Sem compromisso de longo prazo. Faça upgrade, downgrade ou cancele a qualquer momento. O teste gratuito inclui até 50 requisições.
(Economize 2 meses com cobrança anual 🎉)
Esta API fornece preços de apostas em futebol e contexto da partida antes e durante um jogo. Cobre apenas futebol: a Premier League, La Liga, Serie A e a UEFA Champions League
Antes do apito inicial, são mostrados os preços de várias casas de apostas para uma partida, seja como um quadro completo ou como o melhor preço para cada resultado. Os mercados são o resultado final (casa, empate, fora), mais ou menos 2,5 gols e ambas as equipes marcarem. Cada linha inclui odds decimais, a casa de apostas, probabilidade implícita e como o preço se compara com a melhor linha. Esses números descrevem odds publicadas. Eles não são uma previsão ou uma medida de dinheiro negociado. Os preços podem mudar, verificações recentes são armazenadas em cache, e instantâneas anteriores mostram como uma linha mudou
Durante a partida, jogos ao vivo e preços ao vivo em tempo integral ficam ao lado da pontuação, separados do quadro pré-jogo. O contexto da partida adiciona detalhes, estatísticas e um resumo do período, como posse de bola, chutes, cartões e gols. O contexto não inclui preços de apostas, e uma referência da casa de apostas não é a mesma que uma referência de placar ao vivo ou odds ao vivo
Cada ponto final retorna dados específicos relacionados às odds de futebol e resultados ao vivo Por exemplo o ponto final de eventos de futebol ao vivo da SofaScore fornece detalhes de eventos em andamento enquanto o ponto final de odds de partida 1X2 retorna odds normalizadas probabilidades implícitas e informações sobre casas de apostas
Os campos chave variam conforme o endpoint. Por exemplo, o endpoint das odds de Match 1X2 inclui campos como match_id, bookmaker_count e selections (odds de casa, empate, fora). O endpoint de estatísticas de Match do FlashScore inclui estatísticas como posse de bola e total de chutes
Os dados de resposta estão estruturados em formato JSON, organizados em objetos aninhados. Por exemplo, o endpoint de detalhes da partida inclui seções para times da casa e visitantes, placares, detalhes do torneio e metadados, permitindo o acesso fácil a informações específicas
Os parâmetros variam por ponto de extremidade Para o ponto de extremidade de comparação de odds de Match os usuários podem especificar competição tipo de mercado (1x2 ou25 btts) e campos (completo ou melhor) Isso permite solicitações de dados personalizadas com base nas necessidades do usuário
Os dados são provenientes de múltiplos provedores, incluindo SofaScore e FlashScore. Cada fonte é mencionada na resposta, garantindo transparência sobre a origem dos dados, o que ajuda os usuários a avaliar a confiabilidade
Casos de uso típicos incluem análise de apostas esportivas acompanhamento de placares ao vivo e comparação de odds competitivas Desenvolvedores podem usar os dados para aplicativos focados em insights esportivos em tempo real estratégias de apostas e tendências de mercado
Os usuários podem aproveitar as respostas JSON estruturadas para extrair informações relevantes para suas aplicações Por exemplo eles podem analisar tendências de odds comparar ofertas de casas de apostas ou exibir estatísticas de partidas ao vivo em interfaces de usuário
A precisão dos dados é mantida por meio de atualizações regulares de fontes confiáveis e verificações de qualidade O status de cada fonte é indicado nos metadados da API garantindo que os usuários estejam cientes da confiabilidade e frescor dos dados