UEFA Champions League odds API

UEFA Champions League prices, markets and identifiers through one REST API.

The UEFA Champions League has the league key champions_league in the SockOdds API. It is a soccer league based in Europe (sport key soccer). Its events have a home and an away team.

Request UEFA Champions League odds

Current prices for the next UEFA Champions League game, one market, from every bookmaker your plan includes:

curl -sS "https://api.sockodds.com/v1/odds?league=champions_league&markets=result&limit=1&starts_after=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
  -H "Authorization: Bearer $SOCKODDS_API_KEY"
const response = await fetch(`https://api.sockodds.com/v1/odds?league=champions_league&markets=result&limit=1&starts_after=${new Date().toISOString().slice(0, 19)}Z`, {
  headers: { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` },
});
console.log(JSON.stringify(await response.json(), null, 2));
import json, os, urllib.request
from datetime import datetime, timezone

request = urllib.request.Request(
    f"https://api.sockodds.com/v1/odds?league=champions_league&markets=result&limit=1&starts_after={datetime.now(timezone.utc):%Y-%m-%dT%H:%M:%SZ}",
    headers={"Authorization": "Bearer " + os.environ["SOCKODDS_API_KEY"]},
)
with urllib.request.urlopen(request) as response:
    print(json.dumps(json.load(response), indent=2))

Response from a local copy of the API with invented test prices

{
  "data": [
    {
      "id": "ev_000ckk0smee8",
      "name": "AEK Athens v Arsenal",
      "league": {
        "key": "champions_league",
        "name": "UEFA Champions League"
      },
      "scheduled_start": "2026-10-16T11:00:00.000Z",
      "status": "scheduled",
      "participants": [
        {
          "role": "away",
          "identity": {
            "key": "arsenal",
            "name": "Arsenal"
          }
        },
        {
          "role": "home",
          "identity": {
            "key": "aek_athens",
            "name": "AEK Athens"
          }
        }
      ],
      "markets": [
        {
          "id": "mk_vjvmez58jfetd1be",
          "key": "result",
          "name": "Result (with the draw)",
          "period": "full",
          "subject": null,
          "alternate": false,
          "outcomes": [
            {
              "id": "oc_75k6atpa3cjb6f74",
              "name": "AEK Athens",
              "side": "home",
              "line": null,
              "prices": [
                {
                  "bookmaker": "pinnacle",
                  "decimal_odds": 2.11,
                  "implied_probability": 0.473934,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "betfair_exchange",
                  "decimal_odds": 2.05,
                  "implied_probability": 0.487805,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "matchbook",
                  "decimal_odds": 2.01,
                  "implied_probability": 0.497512,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            },
            {
              "id": "oc_x3qrjm8h7jjzfsrc",
              "name": "Draw",
              "side": "draw",
              "line": null,
              "prices": [
                {
                  "bookmaker": "pinnacle",
                  "decimal_odds": 3.5,
                  "implied_probability": 0.285714,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "betfair_exchange",
                  "decimal_odds": 3.4,
                  "implied_probability": 0.294118,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "matchbook",
                  "decimal_odds": 3.33,
                  "implied_probability": 0.3003,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            },
            {
              "id": "oc_h4xvrq67kdmrm180",
              "name": "Arsenal",
              "side": "away",
              "line": null,
              "prices": [
                {
                  "bookmaker": "pinnacle",
                  "decimal_odds": 3.71,
                  "implied_probability": 0.269542,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "betfair_exchange",
                  "decimal_odds": 3.6,
                  "implied_probability": 0.277778,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "matchbook",
                  "decimal_odds": 3.53,
                  "implied_probability": 0.283286,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "meta": {
    "count": 1,
    "cursor": null
  },
  "links": {
    "next": null
  }
}

Prices are decimal and exactly as each bookmaker showed them, with the time we saw them. A price older than ten minutes is withheld rather than shown as current.

Bookmakers

5 bookmakers deliver UEFA Champions League prices through v1 as of 15 October 2026: Betfair Exchange, Pinnacle, Matchbook, BetDeluxe and Picklebet.

UEFA Champions League markets

25 market types are defined for the UEFA Champions League. Ask for any of them with markets=; a bookmaker quotes the markets it offers for each game.

Game markets

MarketKeySidesLinePeriods
Either of two resultsresult_pairhome_or_draw, away_or_draw, either_teamNofull, regulation, half_1, half_2
Total goals odd/eventotal_goals_odd_evenodd, evenNofull, regulation, half_1, half_2
Total corners odd/eventotal_corners_odd_evenodd, evenNofull
Exact scoreresult_exact_scoreEach exact scoreNofull, regulation, half_1, half_2
Result (with the draw)resulthome, draw, awayNofull, regulation, half_1, half_2
Both teams to scoreboth_teams_to_scoreyes, noNofull, half_1, half_2
Result (draw no bet)result_draw_no_bethome, awayNofull, half_1
Handicaphandicaphome, away, competitor_1, competitor_2Yesfull, half_1, half_2
Total goalstotal_goalsover, underYesfull, regulation, half_1, half_2
Total cornerstotal_cornersover, underYesfull, half_1
Total cardstotal_cardsover, underYesfull

Team markets

MarketKeySidesLinePeriods
Team goals odd/eventeam_goals_odd_evenodd, evenNofull, half_1, half_2
Team corners odd/eventeam_corners_odd_evenodd, evenNofull
Team goals over/underteam_goals_over_underover, underYesfull, half_1, half_2
Team corners over/underteam_corners_over_underover, underYesfull

Player markets

MarketKeySidesLinePeriods
Anytime goal scorerplayer_goals_anytimeyesNofull
First goal scorerplayer_goals_firstEach competitorNofull
Last goal scorerplayer_goals_lastEach competitorNofull
Player goals over/underplayer_goals_over_underover, underYesfull
Player tackles over/underplayer_tackles_over_underover, underYesfull
Player shots over/underplayer_shots_over_underover, underYesfull
Player shots on target over/underplayer_shots_on_target_over_underover, underYesfull
Anytime assistplayer_assists_anytimeyesNofull
To be cardedplayer_cards_anytimeyesNofull
Player saves over/underplayer_saves_over_underover, underYesfull

Periods

full (Full match), regulation (Regulation time), half_1 (First half) and half_2 (Second half).

Plans

The UEFA Champions League is included on Rookie and Pro. Pro adds recorded price history, from 30 August 2026. See pricing.

Search across the SockOdds documentation and catalogue.