English Premier League odds API
English Premier League prices, markets and identifiers through one REST API.
The English Premier League has the league key epl in the SockOdds API. It is a soccer league based in the United Kingdom (sport key soccer). Its events have a home and an away team.
Request English Premier League odds
Current prices for the next English Premier League game, one market, from every bookmaker your plan includes:
curl -sS "https://api.sockodds.com/v1/odds?league=epl&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=epl&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=epl&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_000ckk0x3cvs",
"name": "AFC Bournemouth v Arsenal",
"league": {
"key": "epl",
"name": "English Premier League"
},
"scheduled_start": "2026-10-16T12:00:00.000Z",
"status": "scheduled",
"participants": [
{
"role": "away",
"identity": {
"key": "arsenal",
"name": "Arsenal"
}
},
{
"role": "home",
"identity": {
"key": "afc_bournemouth",
"name": "AFC Bournemouth"
}
}
],
"markets": [
{
"id": "mk_bwmshwahz240sdgp",
"key": "result",
"name": "Result (with the draw)",
"period": "full",
"subject": null,
"alternate": false,
"outcomes": [
{
"id": "oc_qh427z1g4z99rmg6",
"name": "AFC Bournemouth",
"side": "home",
"line": null,
"prices": [
{
"bookmaker": "prophetx",
"decimal_odds": 2.15,
"implied_probability": 0.465116,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
},
{
"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"
},
{
"bookmaker": "swiftbet",
"decimal_odds": 1.97,
"implied_probability": 0.507614,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
},
{
"id": "oc_gxvpyf3k4m51r0nc",
"name": "Draw",
"side": "draw",
"line": null,
"prices": [
{
"bookmaker": "prophetx",
"decimal_odds": 3.57,
"implied_probability": 0.280112,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
},
{
"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"
},
{
"bookmaker": "swiftbet",
"decimal_odds": 3.26,
"implied_probability": 0.306748,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
},
{
"id": "oc_580dzdfmktsk1dqx",
"name": "Arsenal",
"side": "away",
"line": null,
"prices": [
{
"bookmaker": "prophetx",
"decimal_odds": 3.78,
"implied_probability": 0.26455,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
},
{
"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"
},
{
"bookmaker": "swiftbet",
"decimal_odds": 3.46,
"implied_probability": 0.289017,
"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
18 bookmakers deliver English Premier League prices through v1 as of 30 October 2026: Sportsbet, TAB, Neds, PointsBet, Unibet, Betfair Exchange, Pinnacle, Dabble, Betr, Kalshi, Polymarket, Matchbook, BetDeluxe, BetFocus, Mintbet, ProphetX, SwiftBet and TABtouch.
English Premier League markets
63 market types are defined for the English Premier League. 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 English Premier League is included on Rookie and Pro. Pro adds recorded price history, from 22 February 2026. See pricing.