{
"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/13931/sports+odds+api/32118/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/13931/sports+odds+api/32119/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/13931/sports+odds+api/32120/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/13931/sports+odds+api/32121/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/13931/sports+odds+api/32122/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/13931/sports+odds+api/32123/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/13931/sports+odds+api/32124/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/13931/sports+odds+api/32125/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/13931/sports+odds+api/32126/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/13931/sports+odds+api/32128/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/13931/sports+odds+api/32129/comparator+match+odds+comparison?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/13931/sports+odds+api/32130/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/13931/sports+odds+api/32131/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/13931/sports+odds+api/32132/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/13931/sports+odds+api/32133/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/13931/sports+odds+api/32134/competition+board&competition=Required' --header 'Authorization: Bearer YOUR_API_KEY'
Después de registrarte, a cada desarrollador se le asigna una clave de acceso a la API personal, una combinación única de letras y dígitos proporcionada para acceder a nuestro endpoint de la API. Para autenticarte con el Cuotas deportivas API simplemente incluye tu token de portador en el encabezado de Autorización.
| Encabezado | Descripción |
|---|---|
Autorización
|
Requerido
Debería ser Bearer access_key. Consulta "Tu Clave de Acceso a la API" arriba cuando estés suscrito.
|
Sin compromiso a largo plazo. Mejora, reduce o cancela en cualquier momento. La Prueba Gratuita incluye hasta 50 solicitudes.
(Ahorra 2 meses pagando anualmente 🎉)
Esta API proporciona precios de apuestas de fútbol y contexto de partidos antes y durante un juego Cubre solo fútbol: la Premier League, La Liga, Serie A y la UEFA Champions League
Antes del inicio, se muestran los precios de varios corredores de apuestas para un partido ya sea como un panel completo o como el mejor precio para cada resultado Los mercados son el resultado a tiempo completo (local, empate, visitante) más de o menos de 2.5 goles y ambos equipos marcan Cada línea incluye probabilidades decimales el corredor de apuestas la probabilidad implícita y cómo se compara el precio con la mejor línea Estas cifras describen las probabilidades publicadas No son una predicción ni una medida de dinero negociado Los precios pueden moverse las verificaciones recientes están en caché y las instantáneas anteriores muestran cómo cambió una línea
Durante el partido los juegos en vivo y los precios a tiempo completo en vivo se sitúan junto al marcador separados del panel previo al partido El contexto del partido añade detalles estadísticas y un resumen del período como posesión disparos tarjetas y goles El contexto no incluye precios de apuestas y una referencia de corredor de apuestas no es lo mismo que una referencia de marcador en vivo o de probabilidades en vivo
Cada punto final devuelve datos específicos relacionados con las cuotas de fútbol y los resultados en vivo Por ejemplo el punto final de eventos de fútbol en vivo de SofaScore proporciona detalles de eventos en juego mientras que el punto final de cuotas de partido 1X2 devuelve cuotas normalizadas probabilidades implícitas e información sobre casas de apuestas
Los campos clave varían según el punto final. Por ejemplo el punto final de cuotas de partido 1X2 incluye campos como match_id bookmaker_count y selecciones (cuotas de local empate y visitante). El punto final de estadísticas de partido de FlashScore incluye estadísticas como posesión y tiros totales
Los datos de respuesta están estructurados en formato JSON, organizados en objetos anidados. Por ejemplo, el punto final de detalles del partido incluye secciones para equipos locales y visitantes, puntajes, detalles del torneo y metadatos, lo que permite un fácil acceso a información específica
Los parámetros varían según el punto final Para el punto final de comparación de cuotas de partidos los usuarios pueden especificar la competición el tipo de mercado (1x2 ou25 btts) y los campos (completo o mejor) Esto permite solicitudes de datos personalizadas según las necesidades del usuario
Los datos se obtienen de múltiples proveedores incluyendo SofaScore y FlashScore. Cada fuente se indica en la respuesta asegurando transparencia sobre el origen de los datos lo que ayuda a los usuarios a evaluar la fiabilidad
Los casos de uso típicos incluyen el análisis de apuestas deportivas el seguimiento de puntajes en vivo y la comparación de cuotas competitivas Los desarrolladores pueden utilizar los datos para aplicaciones centradas en análisis deportivos en tiempo real estrategias de apuestas y tendencias del mercado
Los usuarios pueden aprovechar las respuestas JSON estructuradas para extraer información relevante para sus aplicaciones. Por ejemplo, pueden analizar tendencias de cuotas, comparar ofertas de casas de apuestas o mostrar estadísticas de partidos en vivo en interfaces de usuario
La precisión de los datos se mantiene a través de actualizaciones regulares de fuentes fiables y controles de calidad El estado de cada fuente se indica en los metadatos de la API asegurando que los usuarios sean conscientes de la fiabilidad y frescura de los datos