MLS odds API
MLS prices, markets and identifiers through one REST API.
The MLS has the league key mls in the SockOdds API. It is a soccer league based in the United States (sport key soccer). Its events have a home and an away team.
Request MLS odds
Current prices for the next MLS game, one market, from every bookmaker your plan includes:
curl -sS "https://api.sockodds.com/v1/odds?league=mls&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=mls&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=mls&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_000ckk0az6hx",
"name": "Atlanta United FC v Austin FC",
"league": {
"key": "mls",
"name": "MLS"
},
"scheduled_start": "2026-10-16T16:00:00.000Z",
"status": "scheduled",
"participants": [
{
"role": "away",
"identity": {
"key": "austin_fc",
"name": "Austin FC"
}
},
{
"role": "home",
"identity": {
"key": "atlanta_united_fc",
"name": "Atlanta United FC"
}
}
],
"markets": [
{
"id": "mk_mpnkmbcyqg019443",
"key": "result",
"name": "Result (with the draw)",
"period": "full",
"subject": null,
"alternate": false,
"outcomes": [
{
"id": "oc_ft5ja47nmpp74wvf",
"name": "Atlanta United FC",
"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": "unibet",
"decimal_odds": 2.01,
"implied_probability": 0.497512,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
},
{
"id": "oc_4atpvj51pwban1f4",
"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": "unibet",
"decimal_odds": 3.33,
"implied_probability": 0.3003,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
},
{
"id": "oc_j6jzqfy6kned0x99",
"name": "Austin FC",
"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": "unibet",
"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
12 bookmakers deliver MLS prices through v1 as of 30 October 2026: Sportsbet, TAB, Unibet, Betfair Exchange, Pinnacle, Kalshi, Polymarket, Matchbook, BetDeluxe, BetFocus, Mintbet and SwiftBet.
MLS markets
63 market types are defined for the MLS. Ask for any of them with markets=; a bookmaker quotes the markets it offers for each game.
Game markets
| Market | Key | Sides | Line | Periods |
|---|---|---|---|---|
| Either of two results | result_pair | home_or_draw, away_or_draw, either_team | No | full, half_1, half_2 |
| Total goals odd/even | total_goals_odd_even | odd, even | No | full, half_1, half_2 |
| Total corners odd/even | total_corners_odd_even | odd, even | No | full |
| Half-time/full-time | result_half_time_full_time | home_home, home_draw, home_away, draw_home, draw_draw, draw_away, away_home, away_draw, away_away | No | full |
| Exact score | result_exact_score | Each exact score | No | full, half_1, half_2 |
| Result (with the draw) | result | home, draw, away | No | full, half_1, half_2 |
| Both teams to score | both_teams_to_score | yes, no | No | full, half_1, half_2 |
| Result (draw no bet) | result_draw_no_bet | home, away | No | full, half_1, half_2 |
| Handicap | handicap | home, away, competitor_1, competitor_2 | Yes | full, half_1, half_2 |
| Total goals | total_goals | over, under | Yes | full, half_1, half_2 |
| Total corners | total_corners | over, under | Yes | full, half_1, half_2 |
| Total cards | total_cards | over, under | Yes | full |
| Total cards (a straight red counts one) | total_cards_single | over, under | Yes | full |
| Three-way handicap (home line) | result_handicap | home, draw, away | Yes | full, half_1, half_2 |
| A goal in both halves | goal_in_both_halves | yes, no | No | full |
| Both teams to score in both halves | both_teams_to_score_both_halves | yes, no | No | full |
| Both teams over (goals) | both_teams_goals_over | yes, no | Yes | full |
| Both teams over (cards) | both_teams_cards_over | yes, no | Yes | full |
| Highest-scoring half | highest_scoring_half | half_1, half_2, tie | No | full |
| Half of the first goal | first_goal_half | half_1, half_2, no_goal | No | full |
| Which teams score | which_teams_score | both_teams, home_only, away_only, neither_team | No | full |
| An own goal is scored | own_goal | yes, no | No | full |
| First team to score | first_team_to_score | home, away | No | full, half_1, half_2 |
| Last team to score | last_team_to_score | home, away | No | full |
| Most corners | result_corners | home, draw, away | No | full, half_1 |
| Corners handicap | handicap_corners | home, away | Yes | full |
| Corners three-way handicap (home line) | result_handicap_corners | home, draw, away | Yes | full |
| Most cards | result_cards | home, draw, away | No | full |
| Cards three-way handicap (home line) | result_handicap_cards | home, draw, away | Yes | full |
| Total shots on target | total_shots_on_target | over, under | Yes | full |
| Total saves | total_saves | over, under | Yes | full |
Team markets
| Market | Key | Sides | Line | Periods |
|---|---|---|---|---|
| Team goals odd/even | team_goals_odd_even | odd, even | No | full, half_1, half_2 |
| Team corners odd/even | team_corners_odd_even | odd, even | No | full |
| Team goals over/under | team_goals_over_under | over, under | Yes | full, half_1, half_2 |
| Team corners over/under | team_corners_over_under | over, under | Yes | full, half_1, half_2 |
| Team shots on target over/under | team_shots_on_target_over_under | over, under | Yes | full |
| Team saves over/under | team_saves_over_under | over, under | Yes | full |
| Team cards over/under | team_cards_over_under | over, under | Yes | full |
| Team wins either half | team_win_either_half_yes_no | yes, no | No | full |
| Team wins both halves | team_win_both_halves_yes_no | yes, no | No | full |
| Team scores in both halves | team_goal_in_both_halves_yes_no | yes, no | No | full |
| Team keeps a clean sheet | team_clean_sheet_yes_no | yes, no | No | full |
Player markets
| Market | Key | Sides | Line | Periods |
|---|---|---|---|---|
| Anytime goal scorer | player_goals_anytime | yes | No | full |
| First goal scorer | player_goals_first | Each competitor | No | full |
| Last goal scorer | player_goals_last | Each competitor | No | full |
| Player goals over/under | player_goals_over_under | over, under | Yes | full |
| Player tackles over/under | player_tackles_over_under | over, under | Yes | full |
| Player shots over/under | player_shots_over_under | over, under | Yes | full |
| Player shots on target over/under | player_shots_on_target_over_under | over, under | Yes | full |
| Anytime assist | player_assists_anytime | yes | No | full |
| To be carded | player_cards_anytime | yes | No | full |
| Player saves over/under | player_saves_over_under | over, under | Yes | full |
| Assist, starter only | player_assists_starter_anytime | yes | No | including_extra_time |
| First goalscorer, starter only | player_goals_starter_first | yes | No | including_extra_time |
| Last goalscorer, starter only | player_goals_starter_last | yes | No | including_extra_time |
| Goals, starter only | player_goals_starter_anytime | yes | No | including_extra_time |
| Goals or assists, starter only | player_goals_assists_starter_anytime | yes | No | including_extra_time |
| Booked, starter only | player_cards_starter_anytime | yes | No | including_extra_time |
| Shots on target, starter only | player_shots_on_target_starter_over_under | over, under | Yes | including_extra_time |
| Shots, starter only | player_shots_starter_over_under | over, under | Yes | including_extra_time |
| Fouls committed, starter only | player_fouls_committed_starter_over_under | over, under | Yes | including_extra_time |
| Tackles, starter only | player_tackles_starter_over_under | over, under | Yes | including_extra_time |
| Times fouled, starter only | player_fouled_starter_over_under | over, under | Yes | including_extra_time |
Periods
including_extra_time (Match including extra time), full (Full match), half_1 (First half) and half_2 (Second half).
Plans
The MLS is included on Rookie and Pro. Pro adds recorded price history, from 14 August 2026. See pricing.