Ligue 1 API

Realtime Sports API serves French Ligue 1 games through the same REST endpoints and JSON schema as every other league, using sport=soccer and league=fra.1. You get the current scoreboard, live scores, game detail, play-by-play, teams, rosters and news, plus current odds and line history from a single source book. Not currently available or not verified for this league: injuries, player box-score stats. Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.

Slugs
sport=soccer
league=fra.1
Teams
18
Season (from data)
2026-27 French Ligue 1 2026-27 Ligue 1
In the scoreboard now
1 games

Upcoming and live Ligue 1 games

Ligue 1 games from the API
DateAwayHomeTime / ResultTVVenue
Fri, Oct 9LyonLens2:45 PM ETStade Bollaert-Delelis · Lens

From the /events endpoint for this league, refreshed every few minutes. Times are US Eastern. Full Ligue 1 schedule

Live example

Request

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/soccer/leagues/fra.1/events?limit=1"

Response captured from live data at 2026-10-05 02:11 UTC (refreshed every few minutes). Long arrays are trimmed; meta.rateLimit values are illustrative for a Free key.

Response

{
  "success": true,
  "data": [
    {
      "id": "401876447",
      "uid": "s:600~l:710~e:401876447",
      "name": "Lyon at Lens",
      "shortName": "LYON @ RCL",
      "date": "2026-10-09T18:45Z",
      "status": {
        "state": "pre",
        "completed": false,
        "period": 0,
        "clock": "0'",
        "detail": "Fri, October 9th at 2:45 PM EDT",
        "halftime": false,
        "firstHalfEnded": false
      },
      "homeTeam": {
        "id": "175",
        "name": "Lens",
        "abbreviation": "RCL",
        "logo": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXQAOWRMQEENcUx1GVQ1DH0pXAQ",
        "color": "E91514",
        "alternateColor": "004c37",
        "winner": false,
        "score": 0
      },
      "awayTeam": {
        "id": "167",
        "name": "Lyon",
        "abbreviation": "LYON",
        "logo": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXQAOWRMQEENcUx1GVQxBH0pXAQ",
        "color": "ffffff",
        "alternateColor": "1a1a1a",
        "winner": false,
        "score": 0
      },
      "competition": {
        "attendance": 0,
        "neutralSite": false,
        "conferenceCompetition": false,
        "divisionCompetition": false,
        "playByPlayAvailable": true,
        "highlightsAvailable": false
      },
      "venue": {
        "id": "10342",
        "name": "Stade Bollaert-Delelis",
        "city": "Lens",
        "indoor": false,
        "grass": false
      },
      "notes": [],
      "season": {
        "year": 2026,
        "displayName": "2026-27 French Ligue 1",
        "type": {
          "id": "1",
          "name": "2026-27 Ligue 1",
          "abbreviation": "2026-27 Ligue 1"
        },
        "week": {}
      },
      "broadcasts": [],
      "officials": []
    }
  ],
  "meta": {
    "rateLimit": {
      "limit": 125,
      "remaining": 124,
      "reset": 1793491200000
    }
  }
}

Ligue 1 endpoints

Checked against live data on 2026-10-04. Paths are relative to /api/v1/sports/soccer/leagues/fra.1.

EndpointPathLigue 1Notes
Live scores/events/liveAvailable
Events (scoreboard)/eventsAvailable
Event detail/events/{eventId}Available
Play-by-play/events/{eventId}/playsAvailable
Box score/events/{eventId}/boxscoreLimitedTeam totals and period scores only; player stats are not returned.
Odds/events/{eventId}/oddsAvailable
Win probability/events/{eventId}/winprobabilityNot available
Teams/teamsAvailable
Rosters/teams/{teamId}/rosterAvailable
Athletes/athletes/searchAvailable
Injuries/injuriesNot available
News/newsAvailable
Schedule / weeks/seasons/{season}/scheduleAvailable
NCAA tournament/seasons/{season}/tournamentNot available
Webhooks/webhooksAvailable
WebSocket/websocket/authAvailable
  • Schedules are by date, not week: use /events for the current scoreboard and /seasons/{season}/schedule for a season. Week parameters return SCHEDULE_WEEKS_NOT_SUPPORTED.
  • Soccer play-by-play is a stream of match events (passes, shots, fouls, cards); box scores carry team totals and period scores without player rows.

Event object fields

Every Ligue 1 game in the events, live and schedule endpoints uses the same Event object as other leagues.

FieldTypeNotes
idstringEvent id; use it with the detail, plays, box score and odds endpoints.
uidstring
namestringFull matchup name.
shortNamestringAbbreviated matchup, e.g. "AWAY @ HOME".
datestringStart time, ISO-8601 UTC.
statusEventStatusstate (pre, in, post), completed, period, clock and display detail.
homeTeamEventTeamid, name, abbreviation, colors, logo (proxied), record, score, winner.
awayTeamEventTeamSame shape as homeTeam.
competitionobjectattendance, neutralSite, conference/division flags, playByPlayAvailable.
venueobjectVenue id, name, city, state, indoor, grass (null when unknown).
notesstring[]Headline notes, e.g. round or rivalry names.
seasonobjectyear, type (preseason/regular/postseason) and week where the league uses weeks.
broadcastsobject[]TV/stream networks for the game.
officialsobject[]Game officials when published.
oddsOddsOnly with includeOdds=true and when the game has odds.

Code samples

curl

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/soccer/leagues/fra.1/events?limit=5"

JavaScript (fetch)

const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/soccer/leagues/fra.1/events?limit=5", {
  headers: { Authorization: `Bearer ${process.env.RSA_API_KEY}` }
});
const { success, data, meta } = await res.json();
console.log(data, meta.rateLimit);

Python (requests)

import os, requests

res = requests.get(
    "https://www.realtimesportsapi.com/api/v1/sports/soccer/leagues/fra.1/events?limit=5",
    headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
    timeout=10,
)
body = res.json()
print(body["data"])

MCP prompt (Claude, Cursor, ChatGPT)

Using the Realtime Sports MCP server (https://www.realtimesportsapi.com/api/mcp), call get_events with sport "soccer" and league "fra.1" and list the games it returns with start times, status and scores for Ligue 1.

Connect the hosted MCP server first: setup guide. Each tool call counts as one API call.

Rate limits and pricing

PlanPriceCallsRateWebSocketWebhooks
Free$0125/mo (1,000 first 30 days)1/s500 msgs/moNo
Starter$29/mo ($290/yr)10,000/mo5/sShares monthly poolShares monthly pool
Growth$49/mo ($490/yr)25,000/mo10/sShares monthly poolShares monthly pool
Pro$99/mo ($990/yr)50,000/mo20/s100,000 msgs/mo25,000/mo
Scale$299/mo ($2,990/yr)500,000/mo100/s500,000 msgs/mo100,000/mo

Every successful REST call counts as one call. Over the limit you get HTTP 429 with a Retry-After header. No SLA. Full pricing.

29 leagues monitored live: NFL, college football, NBA, men's college basketball, MLB, NHL and 23 soccer competitions.

FAQ

Is there a free Ligue 1 API?
Yes. The Free plan is $0 with 125 calls per month (1,000 in the first 30 days) at 1 request per second, no card required. The same key works for all 29 leagues.
How fresh is the Ligue 1 data?
Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA. It is not intended for in-play betting that needs sub-second data.
Which Ligue 1 endpoints are available?
Available: live scores, events (scoreboard), event detail, play-by-play, odds, teams, rosters, athletes, news, schedule / weeks. Not available or not verified: box score (limited), win probability (not available), injuries (not available), ncaa tournament (not available).
Does the Ligue 1 API include betting odds?
Yes. Upcoming Ligue 1 games returned a spread, moneyline and total when we checked, from a single source book, with line history. It is not a multi-book comparison feed and not suited to sub-second in-play betting.
Does it include Ligue 1 injuries?
No. The injuries endpoint returned no records for Ligue 1 when we checked, so treat injuries as not available for this league.
Can I get Ligue 1 score updates pushed instead of polling?
Yes. Webhooks are included on every paid plan (Starter, Growth, Pro, Scale). WebSocket is included on paid plans, and the Free plan gets a 500-message monthly preview. Both can be filtered to fra.1.