Odds API by market / Ligue 1

Ligue 1 Total Goals API

Live totals odds across every book that posts it, in one REST call — and, unlike any other odds API, every one of those outcomes settled against the official result once play ends.

No credit card. 1,000 requests / day on the free tier.

What Ligue 1 total goals is

Over/Under on combined goals, almost always quoted around 2.5. Alternate totals and per-team goal totals ship in the same response.

How we settle it. Settled on the score after 90 minutes plus stoppage time. Extra time and penalties do NOT count — that is the books' own convention, not a shortcut.

11
books quoting it on the next event
9/12
of the next Ligue 1 events carry it right now
106
outcomes settled in the last 21 days

Every number on this page is measured against the live API, never copied from a spec sheet. Last measured 16 August 2026.

Books posting Ligue 1 total goals

Measured live, not listed from a spec. Coverage moves — a book that has not put its board up yet will not appear until it does, which is exactly what this list is for.

BetMGMBetRiversBovadaDraftKingsFanDuelMatchbookPinnacleProphetXSmarketsTABUnibet

Line shopping across all of them is one request — every book arrives in the same bookmakers array, not one call per book. Add ?bookmakers= to narrow it, or use /best-line for the best price per line already ranked.

Recently settled Ligue 1 total goals outcomes

These are real rows out of the API, not an illustration. Each one was a price on a board before the event and carries the actual figure it was graded against afterwards. No other odds API returns that last column — they stop at the price.

106 total goals outcomes settled in the last 21 days across 9 books. The 12 most recent:

BetActualResult
Over 2.53.0won
Under 2.53.0lost
Over 3.50.0lost
Under 3.50.0won
Over 2.50.0lost
Over 3.53.0lost
Under 2.50.0won
Over 2.00.0lost
Under 2.00.0won
Under 3.53.0won
Over 3.53.0lost
Under 3.53.0won

Over/Under split, last 21 days

The Over won 11.3% of 53 decided total goals lines (6 over, 47 under). Computed from the settled rows themselves, scoped to Ligue 1 only.

Read off 53 Over legs out of 106 settled outcomes on this market. The rest are Unders and milestone legs (“1+”, “2+”) that some books price here too, and a threshold rung is not an Over.

A few days of one market describes a few days — it is not an edge. Pull the full history through /exports/resolved-props for a sample worth modelling on.

Live response

Captured from the real endpoint on Strasbourg @ Marseille, trimmed to one book and three outcomes so the shape stays readable. The full response carries every book and every line, alternates included, in the same call.

{
  "id": "63562",
  "sport_key": "soccer_ligue_1",
  "home_team": "Marseille",
  "away_team": "Strasbourg",
  "commence_time": "2026-08-21T18:45:00Z",
  "live": false,
  "last_update": "2026-08-16T22:22:17.337073Z",
  "bookmakers": [
    {
      "key": "betmgm",
      "title": "BetMGM",
      "last_update": "2026-08-16T22:22:16.385466Z",
      "link": null,
      "book_event_id": null,
      "markets": [
        {
          "key": "totals",
          "last_update": "2026-08-16T22:22:16.385466Z",
          "period": null,
          "suspended_at": null,
          "outcomes": [
            {
              "name": "Over",
              "description": "",
              "price": 120,
              "point": 3.5,
              "book_updated_at": null,
              "book_version": null,
              "payout_multiplier": null,
              "dfs_odds_type": null,
              "last_change_at": "2026-08-11T20:15:41.679109Z",
              "line_gap": null,
              "book_outcome_id": null
            },
            {
              "name": "Under",
              "description": "",
              "price": -175,
              "point": 3.5,
              "book_updated_at": null,
              "book_version": null,
              "payout_multiplier": null,
              "dfs_odds_type": null,
              "last_change_at": "2026-08-11T20:15:41.679109Z",
              "line_gap": null,
              "book_outcome_id": null
            }
          ]
        }
      ]
    }
  ]
}

The response shape is the-odds-api compatible — events, bookmakers, markets, outcomes — so migrating is usually a base URL change.

Try it

1. List Ligue 1 events to get an event id:

curl "https://api.prop-line.com/v1/sports/soccer_ligue_1/events?apiKey=YOUR_API_KEY"

2. Pull total goals for one game across every book — this exact URL works right now:

curl "https://api.prop-line.com/v1/sports/soccer_ligue_1/events/63562/odds?apiKey=YOUR_API_KEY&markets=totals"

3. After the game, get the graded outcomes with the actual stat:

curl "https://api.prop-line.com/v1/sports/soccer_ligue_1/events/63562/results?apiKey=YOUR_API_KEY"

Steps 1 and 2 run on the free tier. Step 3 — prop resolution — starts on Hobby at $9/mo. See pricing.

Get your free Ligue 1 odds API key

1,000 requests / day. No credit card. The same key covers every sport and every market — not just this one.

Free tier includes 1,000 requests/day. Upgrade anytime.