The Ligue1 Live Scores API allows to retrieve historical data as well as current season results, scorers, lineups, substitutes, events, statistics and much more all with live updates, for the top professional French football league. And more features are coming…
The <b>Ligue 1 Live Scores</b> is already, without any doubt, in so little time from its birth, the best API available on the web for the top professional French football league and don’t believe we have finished, indeed we are only at the start.
<i>You too can help us to make even better this API asking on the <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores/support/new”>API Support</a> tab for the features you dream, our developers will try to make them real.</i>
In the meantime give a look at the always growing list of its unique features.
Have fun!
<b>The Ligue 1 Ninja Team</b>
You don’t need to be a developer or to recruit one to use this API, thanks to his easy integration with the <a href=“https://www.talend.com/products/talend-open-studio”>Talend Open Studio</a> suite.
At the Talend marketplace you can now download for free the <a href=“https://exchange.talend.com/#marketplacesearch:gallery=marketplace%2F1&ob=releaseDate&o=0&c=20&d=true&s=tFootballData&f=&tf=&bf=&cat=&title=Search%20Results”>tFootballDataInput</a> component that let you to easily consume the mashape Ligue 1 API into your integration jobs in a blink just using your Mashape key and without writing a single line of code!
The component is now released in beta version v.04 that integrates only some features now available on Mashape, but we count to release new versions with weekly schedule to add more.
The component let you either to easily access other European Football Leagues Mashape API that is, <a href=“https://market.mashape.com/heisenbug/la-liga-live-scores”>La Liga</a>, <a href=“https://market.mashape.com/heisenbug/premier-league-live-scores”>Premier League</a>, <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores”>Bundesliga</a> and <a href=“https://market.mashape.com/heisenbug/italy-seriea-league-live-results”>Serie A</a>.
For any trouble using the component the preferred mode to get support is to ask to the community at the <a href=“https://www.talendforge.org/forum/”>Talend Forum</a>, instead for any bug or new features request is better to open a ticket on the <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores/support/new”>API Support</a>.
For a demo on how using Talend and the tFootballDataInput component take a look at this YouTube demo <a href=“https://youtu.be/8v4w6PiCBVI”>here</a>.
It’s possible to retrieve all the 2016-17 season matches calling the endpoint
<a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#season-matches-results”>/api/ligue1</a>
You can call the API
-without submitting any parameter, to get all the matches for the day (if there isn’t any match for the day you will get a 500 server error, that it isn’t count as an API call)
-submitting the parameter date
, to retrieve the matches for that date (in the format mmddyyyy)
-submitting the parameter team1
, to retrieve the matches that the team has played at home (together with team2
return that very match)
-submitting the parameter team2
, to retrieve the matches that the team has played away (together with team1
return that very match)
-submitting the parameter matchday
, to retrieve the matches for that round
If matches are already played, the API will give you data about red cards number if any, referee, final and first half scores too, otherwise only the matches schedule.
Here it is an example response for a call wit a match day already played (matchday=1
)
{"matches":[
{"team1":{"teamScore":0,"teamName":"Lille","firstHalfScore":0},
"team2":{"teamScore":1,"teamName":"Paris Saint Germain","firstHalfScore":0,"redCards":1},
"time":"FT","referee":"Fredy Fautrel","when":"Friday, Aug 7 2015"},
.....
.....
{"team1":{"teamScore":0,"teamName":"Lyon","firstHalfScore":0},
"team2":{"teamScore":0,"teamName":"Lorient","firstHalfScore":0},
"time":"FT","referee":"Benoit Millot","when":"Sunday, Aug 9 2015"}
]}
and here it is an example response for a call wit a match day not yet played (matchday=22
)
{"matches":[
{"team1":{"teamName":"Monaco"},"team2":{"teamName":"Toulouse"},"when":"Saturday, Jan 23 2016"},
{"team1":{"teamName":"Guingamp"},"team2":{"teamName":"SC Bastia"},"when":"Saturday, Jan 23 2016"},
.....
{"team1":{"teamName":"Rennes"},"team2":{"teamName":"GFC Ajaccio"},"when":"Saturday, Jan 23 2016"}
]}
Take in mind that this API returns only final results ("time":"FT"
) or not already played matches, and the final ones only after a while the matches are really finished (however always within 24 hours); if you need live updates you have to set thelive
parameter to true (in this case time
returns the minute for the match), if there isn’t any playing match for the parameters specified, the API give you the 500 error message ‘No games found’.
Take in mind that a live request can continue to give you the result even after a while, usually some hours, a match is finished; as soon as the API stop to give you the result for the match, you can get the result again removing the live parameter.
You can get historical results either setting the optional parameter <code>season</code> (default value 2016-17); for now you can get results from the season 2010-11.
Historical data are only available with the MEGA plan.
It’s possible to get data about teams players and coaches for a game using the following API
<a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#lineups-and-substitutes-for-a-match”>/api/ligue1/formations</a>
The API requires two mandatory attributes, <code>team1</code> and <code>team2</code> to select the game of interest.
The result is a JSON object with two properties, <code>team1</code> and <code>team2</code>, where each team property is an object containing the <code>teamName</code> and the <code>players</code> properties, where the first one is the name of the team (equals to the one in the request) and the second one an object with the arrays <code>lineups</code> and <code>substitutes</code> with each array item equals to an object containing the <code>playerNamber</code>, that is the shirt number for the player and the <code>playerName</code> attribute.
Captain players are identified by the property <code>isCaptain</code>.
Following an example response for the request
<code>team1=Lille&team2=Paris+Saint+Germain</code>
{"team1":
{"teamName":"Lille",
"players":{
"substitutes":[
{"playerNumber":"8","playerName":"Mounir Obbadi"},
{"playerNumber":"16","playerName":"Steeve Elana"},
{"playerNumber":"17","playerName":"Soualiho Meité"},
{"playerNumber":"20","playerName":"Ryan Mendes"},
{"playerNumber":"21","playerName":"Ronny Rodelin"},
{"playerNumber":"22","playerName":"Junior Tallo"},
{"playerNumber":"3","playerName":"Youssouf Kone"}
],
"lineups":[
{"playerNumber":"1","playerName":"Vincent Enyeama"},
{"playerNumber":"28","playerName":"Benjamin Pavard"},
{"playerNumber":"19","playerName":"Djibril Sidibe"},
{"playerNumber":"24","playerName":"Rio Mavuba"},
{"playerNumber":"5","playerName":"Renato Civelli"},
{"playerNumber":"6","playerName":"Ibrahim Amadou"},
{"playerNumber":"2","playerName":"Sébastien Corchia"},
{"playerNumber":"4","playerName":"Florent Balmont"},
{"playerNumber":"12","playerName":"Sehrou Grassy"},
{"playerNumber":"7","playerName":"Sofia Boufal"},
{"playerNumber":"9","playerName":"Éric Bautheac"}
]},
"coach":"Hervé Renard"},
"team2":{
"teamName":"Paris Saint Germain",
"players":{
"substitutes":[
{"playerNumber":"4","playerName":"Benjamin Stambouli"},
{"playerNumber":"5","playerName":"Marquinhos"},
{"playerNumber":"8","playerName":"Thiago Motta"},
{"playerNumber":"22","playerName":"Ezequiel Lavezzi"},
{"playerNumber":"23","playerName":"Gregory Van der Wiel"},
{"playerNumber":"29","playerName":"Jean-Kevin Augustin"},
{"playerNumber":"30","playerName":"Salvatore Sirigu"}
],
"lineups":[
{"playerNumber":"16","playerName":"Kevin Trapp"},
{"playerNumber":"19","playerName":"Serge Aurier"},
{"playerNumber":"17","playerName":"Maxwell"},
{"playerNumber":"25","playerName":"Adrien Rabiot"},
{"playerNumber":"2","playerName":"Thiago Silva"},
{"playerNumber":"32","playerName":"David Luiz"},
{"playerNumber":"6","playerName":"Marco Verratti"},
{"playerNumber":"14","playerName":"Blaise Matuidi"},
{"playerNumber":"9","playerName":"Edison Cavan"},
{"playerNumber":"7","playerName":"Lucas Moura"},
{"playerNumber":"27","playerName":"Javier Pastore"}
]},
"coach":"Laurent Blanc"}}
The lineups players are ordered from goalkeeper to forward, to get more insight on how players are on the pitch see the events <code>Module-Start</code> and <code>Module-Change</code> you can get from the <a href="#wiki-match-events">match events</a> API without forgetting the attribute <code>position</code> returned by the <a href="#wiki-player-statistics-for-a-match">player match statistics API</a>.
You can get the formations starting from 30 minutes before a match start using thelive
parameter set to true, if the API give you the 500 error message, that means the game is already finished from a while or it’s not playing or not going to play.
Take in mind that a live request can continue to give you the result even after a while, usually some hours, a match is finished; as soon as the API stop to give you the result for the match, you can get the result again removing the live parameter.
The APIs can either respond with a 500 error if doesn’t exist a match in the 2016-17 season for them team1 and team2 parameters in the request (values are case sensitive, use the <a href="#wiki-season-results">Season results</a> requests to find out valid values to use).
For now the API returns results for the current season only.
Using the endpoint API <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#league-table”>/api/ligue1/table</a> you will get the current table for the league.
The current table is compute considering all the finished games returned by the <a href="#wiki-season-results">season results</a> API (the one with no live updates).
The API let you to restrict the games considered using the following three optional parameters
<code>from</code> to include all the games played from (default the first played game returned by the no live version of the season results API)
<code>to</code> to include all the games played till to (default the last played game return by the no live version of the season results API)
<code>mode</code> set to <b>home</b> to consider only home games, to <b>away</b> to consider only away games (default all games)
<code>time</code> to compute the table considering only the first half (FH) or the second half (SH). Default is full time (FT)
The JSON response give you data about the <code>team</code> name the game <code>played</code>, <code>win</code>, <code>loss</code>, <code>goalsFor</code>, <code>goalsAgainst</code> and <code>points</code>.
The API at the moment don’t take into account any penalization a team could have to compute the total points number.
You can get table from previous seasons either setting the option parameter <code>season</code>; for now you can query for league table from the 2010-11 season (default value for season is 2016-17).
It’s possible to get all the scorers for a match with a single API call.
There are two version for this API, one without live update <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#match-scorers”>/api/ligue1/scores</a> that get you the answer after a while the game is finished (usually between few hours, and however always within 24 hours), and the other <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#match-scorers-either-live”>/api/live/ligue1/scorers</a> with live updates, so you can get the answer even while the match is still playing (check the <a href="#wiki-season-results">season results</a> API live version to know the games with goals).
All two versions require two mandatory parameters
<code>team1</code> that is the home team name
and
<code>team2</code> that is the away team name
(<u>always the ones returned by the <b>season results</b> API</u>).
The JSON response contains the player name who scored the goal and the minute it was scored, more it can contains other attributes either that qualify better the kind of goal.
At the moment the attributes handled by the API are:
<code>isPenalty</code> true if the goal is scored from a penalty, default false
<code>isOwn</code> true if the goal is an own goal, default false
<code>isFromCorner</code> true if the goal is scored from a corner, default false
<code>isFreekick</code> true if the goal is scored from a free kick, default false
<code/>isLeftFoot</code> true if the goal is scored by left, default false
<code>isRightFoot</code> * true if the goal is scored by right, default false*
<code>isHead</code> true if the goal is scored by head, default false
Here it is a JSON response for the following query string
<code>team1=Nice&team2=Paris+Saint+Germain</code>
{"team1":{
"teamName":"Nice",
"goals":[]
},
"team2":{
"teamName":"Paris Saint Germain",
"goals":[
{"isLeftFoot":true,"player":"Edinson Cavani","minute":"34'"},
{"isRightFoot":true,"isPenalty":true,"player":"Zlatan Ibrahimovic","minute":"44'"},
{"isRightFoot":true,"player":"Zlatan Ibrahimovic","minute":"61'"}
]}}
The API give you an answer even if there isn’t any goal for a match, in that case the <code>goals</code> attribute will be an empty array.
For now the API returns results for the current season only.
The <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#top-scorers”>/api/ligue1/table/scorers</a> let you the get the top five scorers for the league.
The JSON result give you the player name, the number of goals scored in order from the first till the fifth and the number of ones scored by penalty.
You can either use optional parameters to query for a different set of games, that is
<code>from</code> to consider only the games played <b>from</b> the match day specified (default 1)
<code>to</code> to consider only the games played till <b>to</b> the match day specified (default last final match day returned by the <a href="#wiki-season-results">season results</a> API no live version)
<code>mode</code> to consider only goals scored at <b>home</b> or <b>away</b> (default <b>all</b>)
<code>player</code> to get the result only for the <i>player</i> name specified (useful to get the number of goals scored by those players that aren’t in top 5).
<code>team</code> *to consider only goals scored for the specified <i>team</i> *
If you specify a player name that hasn’t scored any goal yet, you will get an empty response, that is:
{"scorers":[]}
otherwise, like for example querying for
<code>player=Ezequiel+Lavezzi</code>
{"scorers":[{"playerName":"Ezequiel Lavezzi","goals":2","penalties":0}]}
or for for example with
<code>mode=away&to=15</code>
{“scorers”:[
{“playerName”:“Zlatan Ibrahimovic”,“goals”:7",“penalties”:1},
{“playerName”:“Hatem Ben Arfa”,“goals”:7",“penalties”:0},
{“playerName”:“Michy Batshuayi”,“goals”:7",“penalties”:0},
{“playerName”:“Benjamin Moukandjo”,“goals”:6",“penalties”:0},
{“playerName”:“Valère Germain”,“goals”:5",“penalties”:0}
]}
or maybe simply without any parameter
{"scorers":[
{"playerName":"Zlatan Ibrahimovic","goals":32","penalties":3},
{"playerName":"Alexandre Lacazette","goals":17","penalties":1},
{"playerName":"Hatem Ben Arfa","goals":16","penalties":3},
{"playerName":"Wissam Ben Yedder","goals":15","penalties":2},
{"playerName":"Edison Cavani","goals":13","penalties":0}
]}
For now the API returns results for the current season only.
The Ligue1 Live Scores API let you trace two different kind of events
Team events
Module-Start
(tell you the team module, that is how players are on the pitch, as soon as the match start)
Module-Change
(tell you each module change occurred during the match)
Players events
Yellow-Card
Red-Card
In
and Out
(substitutions)
Missed-Penalty
(penalty failed)
Saved-Penalty
(keeper save a penalty)
Saved-Goal
(player avoid an already done goal clearance off the line)
Shot-On-Post
Error-Goal
(player error that lead to a goal)
Assist-Goal
(when a player intentionally do an assist that lead to a goal)
Goal-Disallowed
Penalty-Won
(the player that won the penalty)
Penalty-Commited
(the player that committed a penalty foul)
Changed-Captain
(the new captain player if the previous goes out)
All teams and players events give you the minute the event occurred,
teams events have a value attribute more that get the value for the event (the team module),
players events instead a list of players name related to the event.
For example
....
{"eventName":"Module-Start","value":"4411","minute":"0'"} *value is the formation module 4-4-1-1
....
{"players":[{"playerName":"Niklas Hult"}],"eventName":"Red-Card","minute":"43'"}
....
There are two API version to get the data events, that is, with (<a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#match-events-live”>/api/live/ligue1/match/events</a>) or without live updates (<a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#match-events”>/api/ligue1/match/events</a>).
The version without live update get you the data only after a while the match is finished (usually within few hours), the one with live updates instead get you real time data.
When the match is finished the live version continue to get you the answer that will be the same you get with the no live one if this last one has been synchronised (usually always within 24 hours).
All the two API versions require two parameters
team1
that is the home team name
and
team2
that is the away team name
and returns all the events for the two teams
for example with
team1=Nice
and
team2=Paris Saint Germain
you will get
{"team1":
{"teamName":"Nice",
"events":[
{"eventName":"Module-Start","value":"352","minute":"0'"},
{"players":[{"playerName":"Niklas Hult"}],"eventName":"Red-Card","minute":"43'"},
{"players":[{"playerName":"Olivier Boscagli"}],"eventName":"In","minute":"62'"},
{"players":[{"playerName":"Romain Genevois"}],"eventName":"Out","minute":"62'"},
{"players":[{"playerName":"Valère Germain"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Said Benrahma"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Vincent Koziello"}],"eventName":"Out","minute":"82'"},
{"players":[{"playerName":"Stéphan Raheriharimanana"}],"eventName":"In","minute":"82'"}
]},
"team2":{
"teamName":"Paris Saint Germain",
"events":[
{"eventName":"Module-Start","value":"433","minute":"0'"},
{"players":[{"playerName":"Blaise Matuidi"}],"eventName":"Yellow-Card","minute":"39'"},
{"players":[{"playerName":"Adrien Rabiot"}],"eventName":"In","minute":"58'"},
{"players":[{"playerName":"Blaise Matuidi"}],"eventName":"Out","minute":"58'"},
{"players":[{"playerName":"Ezequiel Lavezzi"}],"eventName":"In","minute":"76'"},
{"players":[{"playerName":"Thiago Motta"}],"eventName":"Out","minute":"76'"},
{"eventName":"Module-Change","value":"4231","minute":"77"},
{"players":[{"playerName":"Zlatan Ibrahimovic"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Lucas Moura"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Serge Aurier"}],"eventName":"Yellow-Card","minute":"85'"}
]}}
For now the API returns results for the current season only.
The API requires two mandatory parameters
<code>team1</code> the home team name for the match
<code>team2</code> the away team name for the match
In the JSON response you can find the following impressive amount of statistics for each team of the match selected:
<code>totalSaves touches aerialsWon passesTotal passesSuccessful cornersTotal cornersAccurate tackleSuccessful throwInsTotal</br>
aerialsTotal offensiveAerials defensiveAerials shotsOffTarget tacklesTotal dribblesLost shotsTotal shotsBlocked</br>
dribblesAttempted dribbledPast dispossessed foulsCommited shotsOnTarget offsidesCaught tackleUnsuccesful interceptions dribblesWon clearances possession</br>
goals foulsWon penatyWon penaltyCommited</code>
Here it is an example response for the query string <code>team1=Nice&team2=Paris+Saint+Germain</code>
{"team1":{"teamName":"Nice",
"teamStats":{
"cornersTotal":5,"dribbledPast":7,"tackleSuccessful":17,"throwInsTotal":12,"aerialsTotal":23,"offensiveAerials":13,"dispossessed":12,
"foulsCommited":9,"passesTotal":396,"offsidesCaught":2,"shotsOnTarget":2,"tackleUnsuccesful":7,"defensiveAerials":10,
"interceptions":20,"touches":523,"shotsOffTarget":4,"tacklesTotal":24,"dribblesWon":4,"dribblesLost":6,"shotsTotal":7,
"shotsBlocked":1,"aerialsWon":6,"clearances":7,"dribblesAttempted":10
}},
"team2":{"teamName":"Paris Saint Germain",
"teamStats":{
"cornersTotal":5,"dribbledPast":4,"tackleSuccessful":18,"throwInsTotal":13,"aerialsTotal":23,"offensiveAerials":10,"dispossessed":12,
"foulsCommited":12,"passesTotal":757,"offsidesCaught":3,"shotsOnTarget":6,"tackleUnsuccesful":4,"defensiveAerials":13,
"interceptions":19,"touches":906,"shotsOffTarget":5,"tacklesTotal":22,"dribblesWon":7,"dribblesLost":5,"shotsTotal":15,
"shotsBlocked":4,"aerialsWon":17,"clearances":13,"dribblesAttempted":12
}}}
Take in mind that this API exists in two version, the one without live update <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#match-statistics”>/api/ligue1/match/stats</a> and the one with live update <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#match-statistics-live”>/api/live/ligue1/match/stats</a> with the second one one giving you real time statistics updates during the game and the first one giving you only the final statistics after a while the match is finished, after this point in time all the two API give you the same answer.
For now the API returns results for the current season only.
It’s possible to get all the player statistics for a match using one of the two API version, the <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#player-stats-for-a-match”>no live</a> and the <a href=“https://market.mashape.com/heisenbug/ligue-1-live-scores#player-stats-for-a-match-live”>live</a> one, with the first giving you the result only after a while the game is finished (usually within few hours and however always within 24 hours) and the second you giving you the result starting from the first minute match, that is with live updates.
The API requires three mandatory parameters
<code>team1</code> the home team name for the match
<code>team2</code> the away team name for the match
<code>player</code> the player name you want to know statistics
The result is a JSON format response containing player infos like data age, weight, height and player match stats like dribble won, fouls committed.
The complete data list handle at the moment from the API follows:
player info
<code>isManOfTheMatch, shirtNo, name, weight, age, height, isFirstEleven, position</code>
player match stats
<code>totalSaves, touches, aerialsWon, passesTotal, passesSuccessful, cornersTotal, cornersAccurate, tackleSuccessful, <br>
throwInsTotal, aerialsTotal, offensiveAerials, defensiveAerials, shotsOffTarget, tacklesTotal, <br>
dribblesLost, shotsTotal, shotsBlocked, dribblesAttempted, dribbledPast, dispossessed, <br>
foulsCommited, shotsOnTarget, offsidesCaught, tackleUnsuccesful, interceptions, dribblesWon, <br>
clearances, possession, goals, foulsWon, penaltyWon, penaltyCommited</code>
Follow an example for
<code>player=Niklas+Hult&team1=Nice&team2=Paris+Saint+Germain</code>
{"isFirstEleven":true,"isManOfTheMatch":false,"stats":
{"dribbledPast":1,"touches":14,"tacklesTotal":1,"aerialsTotal":3,"offensiveAerials":2,
"foulsCommited":1,"passesTotal":10,"aerialsWon":1,"tackleUnsuccesful":1,"defensiveAerials":1,
"interceptions":1},
"shirtNo":"13","name":"Niklas Hult","weight":66,"position":"DML","age":25,"height":173}
For the <code>position</code> attribute you can get the following values:
GK = Goalkeeper
DM = Defensive Midfielder (1)
D = Defender (1)
M = Midfielder (1)
AM = Attacking Midfielder (1)
FW = Forward
Sub = substitute player
(1) the attribute value can have one letter more to specify better the field position, that is <code>C</code> for Center, <code>L</code> for Left and <code>R</code> for Right.
For now the API returns results for the current season only.