Domestic league API

Ligue 1 API for
fixtures and results.

Query Ligue 1 2025/26 teams, fixtures, rounds, and full-time results through a stable football JSON API. This is a historical CC0 beta dataset, not a live or guaranteed-fresh feed.

CompetitionLigue 1
RegionFrance
Dataset timezoneEurope/Paris
AvailabilityHistorical beta
League-first workflow

One competition.
A complete starting layer.

Build a French top-flight schedule, results archive, research workflow, or football agent with consistent pagination, filtering, and error responses.

Discover the competition first, retain its Stats API ID, list its seasons, and then filter the match collection. Customer requests are served from normalized Stats API storage rather than forwarded to OpenFootball.

Available now
2025/26
CompetitionName, country, type, and stable Stats API identifier
Season2025/26 label plus team and match counts
TeamsNormalized team names and stable team identifiers
MatchesKickoff time, round, participants, status, and full-time score when present
Requires a licensed provider
Not sold today
Live incidentsGoals, cards, substitutions, and an in-play clock
Players & lineupsSquads, starters, benches, injuries, and suspensions
Advanced statisticsxG, shot maps, player statistics, and heat maps
OddsLicensed pre-match and in-play bookmaker markets
Two-request discovery

Find the IDs,
then query the matches.

Search by the human name once. Store the returned competition and season IDs in your application, then use those stable identifiers for match collection.

Read the match endpoint guide →
1 · Find Ligue 1
curl --silent --show-error \
  "https://stats-api.com/api/v1/football/competitions?q=Ligue%201" \
  -H "Authorization: Bearer ${STATS_API_KEY}" \
  -H "Accept: application/json"
2 · Filter the match collection
curl --silent --show-error \
  "https://stats-api.com/api/v1/football/matches?competition_id=${COMPETITION_ID}&season_id=${SEASON_ID}" \
  -H "Authorization: Bearer ${STATS_API_KEY}" \
  -H "Accept: application/json"
Freshness boundary

Historical data,
described honestly.

A successful importer run proves when Stats API retrieved and processed the configured artifact. It does not prove when the upstream football facts were last changed.

Use GET /api/v1/coverage/summary to inspect the observed ingestion time, artifact retrieval time, and freshness_guaranteed=false before presenting time-sensitive results.

Build with Ligue 1 data

Start with the contract
that exists today.

Explore the API