Ligue 1 odds API
Ligue 1 prices, markets and identifiers through one REST API.
Ligue 1 has the league key ligue_1 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 Ligue 1 odds
Current prices for the next Ligue 1 game, one market, from every bookmaker your plan includes:
curl -sS "https://api.sockodds.com/v1/odds?league=ligue_1&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=ligue_1&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=ligue_1&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": "AJ Auxerre v Angers",
"league": {
"key": "ligue_1",
"name": "Ligue 1"
},
"scheduled_start": "2026-10-16T13:00:00.000Z",
"status": "scheduled",
"participants": [
{
"role": "away",
"identity": {
"key": "angers",
"name": "Angers"
}
},
{
"role": "home",
"identity": {
"key": "aj_auxerre",
"name": "AJ Auxerre"
}
}
],
"markets": [
{
"id": "mk_vjvmez58jfetd1be",
"key": "result",
"name": "Result (with the draw)",
"period": "full",
"subject": null,
"alternate": false,
"outcomes": [
{
"id": "oc_75k6atpa3cjb6f74",
"name": "AJ Auxerre",
"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_x3qrjm8h7jjzfsrc",
"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_h4xvrq67kdmrm180",
"name": "Angers",
"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
15 bookmakers deliver Ligue 1 prices through v1 as of 12 October 2026: Sportsbet, TAB, Neds, Unibet, Betfair Exchange, Pinnacle, Dabble, Kalshi, Matchbook, BetDeluxe, BetFocus, Mintbet, Picklebet, SwiftBet and TABtouch.
Ligue 1 markets
25 market types are defined for Ligue 1. 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 |
| 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 |
| 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 |
| Total cards | total_cards | 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 |
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 |
Periods
full (Full match), half_1 (First half) and half_2 (Second half).
Plans
Ligue 1 is included on Rookie and Pro. Pro adds recorded price history, from 18 August 2026. See pricing.