La Liga odds API

La Liga prices, markets and identifiers through one REST API.

La Liga has the league key la_liga 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 La Liga odds

Current prices for the next La Liga game, one market, from every bookmaker your plan includes:

curl -sS "https://api.sockodds.com/v1/odds?league=la_liga&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=la_liga&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=la_liga&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_000ckk00jb9a",
      "name": "Alavés v Athletic Club",
      "league": {
        "key": "la_liga",
        "name": "La Liga"
      },
      "scheduled_start": "2026-10-16T13:00:00.000Z",
      "status": "scheduled",
      "participants": [
        {
          "role": "away",
          "identity": {
            "key": "athletic_club",
            "name": "Athletic Club"
          }
        },
        {
          "role": "home",
          "identity": {
            "key": "alav_s",
            "name": "Alavés"
          }
        }
      ],
      "markets": [
        {
          "id": "mk_2v7sjf8tydchmp0k",
          "key": "result",
          "name": "Result (with the draw)",
          "period": "full",
          "subject": null,
          "alternate": false,
          "outcomes": [
            {
              "id": "oc_3xhgv1s5ywrywtxr",
              "name": "Alavés",
              "side": "home",
              "line": null,
              "prices": [
                {
                  "bookmaker": "tab",
                  "decimal_odds": 2.11,
                  "implied_probability": 0.473934,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "sportsbet",
                  "decimal_odds": 2.05,
                  "implied_probability": 0.487805,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "neds",
                  "decimal_odds": 2.01,
                  "implied_probability": 0.497512,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            },
            {
              "id": "oc_72pshwdss3j21byr",
              "name": "Draw",
              "side": "draw",
              "line": null,
              "prices": [
                {
                  "bookmaker": "tab",
                  "decimal_odds": 3.5,
                  "implied_probability": 0.285714,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "sportsbet",
                  "decimal_odds": 3.4,
                  "implied_probability": 0.294118,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "neds",
                  "decimal_odds": 3.33,
                  "implied_probability": 0.3003,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            },
            {
              "id": "oc_8gm7dhfdby0kcbya",
              "name": "Athletic Club",
              "side": "away",
              "line": null,
              "prices": [
                {
                  "bookmaker": "tab",
                  "decimal_odds": 3.71,
                  "implied_probability": 0.269542,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "sportsbet",
                  "decimal_odds": 3.6,
                  "implied_probability": 0.277778,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "neds",
                  "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

16 bookmakers deliver La Liga prices through v1 as of 30 October 2026: Sportsbet, TAB, Neds, Unibet, Betfair Exchange, Pinnacle, Dabble, Kalshi, Polymarket, Matchbook, BetDeluxe, BetFocus, Mintbet, ProphetX, SwiftBet and TABtouch.

La Liga markets

63 market types are defined for La Liga. 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, half_1, half_2
Total goals odd/eventotal_goals_odd_evenodd, evenNofull, half_1, half_2
Total corners odd/eventotal_corners_odd_evenodd, evenNofull
Half-time/full-timeresult_half_time_full_timehome_home, home_draw, home_away, draw_home, draw_draw, draw_away, away_home, away_draw, away_awayNofull
Exact scoreresult_exact_scoreEach exact scoreNofull, half_1, half_2
Result (with the draw)resulthome, draw, awayNofull, 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, half_2
Handicaphandicaphome, away, competitor_1, competitor_2Yesfull, half_1, half_2
Total goalstotal_goalsover, underYesfull, half_1, half_2
Total cornerstotal_cornersover, underYesfull, half_1, half_2
Total cardstotal_cardsover, underYesfull
Total cards (a straight red counts one)total_cards_singleover, underYesfull
Three-way handicap (home line)result_handicaphome, draw, awayYesfull, half_1, half_2
A goal in both halvesgoal_in_both_halvesyes, noNofull
Both teams to score in both halvesboth_teams_to_score_both_halvesyes, noNofull
Both teams over (goals)both_teams_goals_overyes, noYesfull
Both teams over (cards)both_teams_cards_overyes, noYesfull
Highest-scoring halfhighest_scoring_halfhalf_1, half_2, tieNofull
Half of the first goalfirst_goal_halfhalf_1, half_2, no_goalNofull
Which teams scorewhich_teams_scoreboth_teams, home_only, away_only, neither_teamNofull
An own goal is scoredown_goalyes, noNofull
First team to scorefirst_team_to_scorehome, awayNofull, half_1, half_2
Last team to scorelast_team_to_scorehome, awayNofull
Most cornersresult_cornershome, draw, awayNofull, half_1
Corners handicaphandicap_cornershome, awayYesfull
Corners three-way handicap (home line)result_handicap_cornershome, draw, awayYesfull
Most cardsresult_cardshome, draw, awayNofull
Cards three-way handicap (home line)result_handicap_cardshome, draw, awayYesfull
Total shots on targettotal_shots_on_targetover, underYesfull
Total savestotal_savesover, 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, half_1, half_2
Team shots on target over/underteam_shots_on_target_over_underover, underYesfull
Team saves over/underteam_saves_over_underover, underYesfull
Team cards over/underteam_cards_over_underover, underYesfull
Team wins either halfteam_win_either_half_yes_noyes, noNofull
Team wins both halvesteam_win_both_halves_yes_noyes, noNofull
Team scores in both halvesteam_goal_in_both_halves_yes_noyes, noNofull
Team keeps a clean sheetteam_clean_sheet_yes_noyes, noNofull

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
Assist, starter onlyplayer_assists_starter_anytimeyesNoincluding_extra_time
First goalscorer, starter onlyplayer_goals_starter_firstyesNoincluding_extra_time
Last goalscorer, starter onlyplayer_goals_starter_lastyesNoincluding_extra_time
Goals, starter onlyplayer_goals_starter_anytimeyesNoincluding_extra_time
Goals or assists, starter onlyplayer_goals_assists_starter_anytimeyesNoincluding_extra_time
Booked, starter onlyplayer_cards_starter_anytimeyesNoincluding_extra_time
Shots on target, starter onlyplayer_shots_on_target_starter_over_underover, underYesincluding_extra_time
Shots, starter onlyplayer_shots_starter_over_underover, underYesincluding_extra_time
Fouls committed, starter onlyplayer_fouls_committed_starter_over_underover, underYesincluding_extra_time
Tackles, starter onlyplayer_tackles_starter_over_underover, underYesincluding_extra_time
Times fouled, starter onlyplayer_fouled_starter_over_underover, underYesincluding_extra_time

Periods

including_extra_time (Match including extra time), full (Full match), half_1 (First half) and half_2 (Second half).

Plans

La Liga is included on Rookie and Pro. Pro adds recorded price history, from 17 August 2026. See pricing.

Search across the SockOdds documentation and catalogue.