README
Bundesliga Live Scores
The <b>Bundesliga 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 German 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/bundesliga-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 Bundesliga Ninja Team</b>
Talend Open Studio integration
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 Bundesliga 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/ligue-1-live-scores”>Ligue 1</a>, <a href=“https://market.mashape.com/heisenbug/premier-league-live-scores”>Premier League</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/bundesliga-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>.
Season results
It’s possible to retrieve all the 2016-17 season matches calling the endpoint
<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#season-matches-results”>/api/bundesliga</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":5,"teamName":"Bayern Munich","firstHalfScore":1},
"team2":{"teamScore":0,"teamName":"Hamburger SV","firstHalfScore":0},"time":"FT","referee":"Bastian Dankert","when":"Friday, Aug 14 2015"},
.....
{"team1":{"teamScore":1,"teamName":"VfB Stuttgart","firstHalfScore":0},
"team2":{"teamScore":3,"teamName":"FC Cologne","firstHalfScore":0},"time":"FT","referee":"Wolfgang Stark","when":"Sunday, Aug 16 2015"}
]}
and here it is an example response for a call wit a match day not yet played (matchday=22
)
{"matches":[
{"team1":{"teamName":"Bayern Munich"},"team2":{"teamName":"Darmstadt"},"when":"Saturday, Feb 20 2016"},
{"team1":{"teamName":"Schalke 04"},"team2":{"teamName":"VfB Stuttgart"},"when":"Saturday, Feb 20 2016"},
{"team1":{"teamName":"Bayer Leverkusen"},"team2":{"teamName":"Borussia Dortmund"},"when":"Saturday, Feb 20 2016"},
.....
{"team1":{"teamName":"Ingolstadt"},"team2":{"teamName":"Werder Bremen"},"when":"Saturday, Feb 20 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 season (default value 2016-17); for now you can get results from the season 2008-09.
Historical data are only available with the MEGA plan.
Lineups, substitutes and coaches
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/bundesliga-live-scores#lineups-and-substitutes-for-a-game”>/api/bundesliga/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=Schalke+04&team2=Hannover+96</code>
{
"team1": {
"teamName": "Schalke 04",
"players": {
"substitutes": [
{
"playerNumber": "3",
"playerName": "Junior Caicara"
},
{
"playerNumber": "6",
"playerName": "Sead Kolasinac"
},
{
"playerNumber": "9",
"playerName": "Franco Di Santo"
},
{
"playerNumber": "23",
"playerName": "Pierre-Emile Højbjerg"
},
{
"playerNumber": "24",
"playerName": "Kaan Ayhan"
},
{
"playerNumber": "30",
"playerName": "Michael Gspurning"
},
{
"playerNumber": "33",
"playerName": "Roman Neustädter"
}
],
"lineups": [
{
"playerNumber": "1",
"playerName": "Ralf Fährmann"
},
{
"playerNumber": "27",
"playerName": "Sascha Riether"
},
{
"playerNumber": "15",
"playerName": "Dennis Aogo"
},
{
"playerNumber": "8",
"playerName": "Leon Goretzka"
},
{
"playerNumber": "4",
"playerName": "Benedikt Höwedes"
},
{
"playerNumber": "32",
"playerName": "Joel Matip"
},
{
"playerNumber": "19",
"playerName": "Leroy Sané"
},
{
"playerNumber": "5",
"playerName": "Johannes Geis"
},
{
"playerNumber": "25",
"playerName": "Klaas-Jan Huntelaar"
},
{
"playerNumber": "7",
"playerName": "Max Meyer"
},
{
"playerNumber": "13",
"playerName": "Eric Maxim Choupo-Moting"
}
]
},
"coach": "André Breitenreiter"
},
"team2": {
"teamName": "Hannover 96",
"players": {
"substitutes": [
{
"playerNumber": "7",
"playerName": "Edgar Prib"
},
{
"playerNumber": "11",
"playerName": "Felix Klaus"
},
{
"playerNumber": "13",
"playerName": "Philipp Tschauner"
},
{
"playerNumber": "14",
"playerName": "Allan Saint-Maximin"
},
{
"playerNumber": "20",
"playerName": "Felipe"
},
{
"playerNumber": "31",
"playerName": "Waldemar Anton"
},
{
"playerNumber": "35",
"playerName": "Charlison Benschop"
}
],
"lineups": [
{
"playerNumber": "1",
"playerName": "Ron-Robert Zieler"
},
{
"playerNumber": "29",
"playerName": "Oliver Sorg"
},
{
"playerNumber": "3",
"playerName": "Miiko Albornoz"
},
{
"playerNumber": "8",
"playerName": "Manuel Schmiedebach"
},
{
"playerNumber": "25",
"playerName": "Marcelo"
},
{
"playerNumber": "19",
"playerName": "Christian Schulz"
},
{
"playerNumber": "2",
"playerName": "Leon Andreasen"
},
{
"playerNumber": "5",
"playerName": "Salif Sané"
},
{
"playerNumber": "9",
"playerName": "Artur Sobiech"
},
{
"playerNumber": "6",
"playerName": "Ceyhun Gülselam"
},
{
"playerNumber": "26",
"playerName": "Kenan Karaman"
}
]
},
"coach": "Michael Frontzeck"
}
}
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.
League Table
Using the endpoint API <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#league-table”>/api/bundesliga/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 season; for now you can query for league table from the 2008-09 season (default value for season is 2016-17).
Match scorers
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/bundesliga-live-scores#match-scorers”>/api/bundesliga/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/bundesliga-live-scores#match-scorers-live”>/api/live/bundesliga/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
(always the ones returned by the <b>season results</b> API).
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=Schalke+04&team2=Hannover+96</code>
{"team1":{
"teamName":"Schalke 04",
"goals":[
{"isRightFoot":true,"isPenalty":true,"player":"Johannes Geis","minute":"51'"},
{"isRightFoot":true,"player":"Klaas-Jan Huntelaar","minute":"72'"},
{"isHead":true,"player":"Franco Di Santo","minute":"81'"}
]},
"team2":{
"teamName":"Hannover 96",
"goals":[
{"isRightFoot":true,"player":"Allan Saint-Maximin","minute":"81'"}
]}}
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.
Top Scorers
The <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#top-scorers”>/api/bundesliga/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=Anthony+Ujah</code>
{"scorers":[{"playerName":"Anthony Ujah","goals":7","penalties":0}]}
or for for example with
<code>mode=away&to=15</code>
{"scorers":[
{"playerName":"Yunus Malli","goals":5","penalties":0},
{"playerName":"Anthony Ujah","goals":5","penalties":0},
{"playerName":"Salomon Kalou","goals":5","penalties":1},
{"playerName":"Paul Verhaegh","goals":4","penalties":1},
{"playerName":"Kevin Volland","goals":4","penalties":0}
]}
or maybe simply without any parameter
{"scorers":[
{"playerName":"Robert Lewandowski","goals":25","penalties":1},
{"playerName":"Pierre-Emerick Aubameyang","goals":19","penalties":0},
{"playerName":"Thomas Müller","goals":15","penalties":1},
{"playerName":"Javier Hernández","goals":13","penalties":1},
{"playerName":"Sandro Wagner","goals":13","penalties":1}
]}
For now the API returns results for the current season only.
Match events
The Bundesliga 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":"Kenan Karaman"}],"eventName":"Shot-On-Post","minute":"80'"}
....
There are two API version to get the data events, that is, with (<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-events-live”>/api/live/bundesliga/match/events</a>) or without live updates (<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-events”>/api/bundesliga/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
<code>team1=Schalke+04&team2=Hannover+96</code>
you will get
{"team1":
{"teamName":"Schalke 04","events":[
{"eventName":"Module-Start","value":"4231","minute":"0'"},
{"players":[{"playerName":"Klaas-Jan Huntelaar"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Franco Di Santo"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Pierre-Emile Højbjerg"}],"eventName":"In","minute":"78'"},
{"players":[{"playerName":"Max Meyer"}],"eventName":"Out","minute":"78'"},
{"players":[{"playerName":"Johannes Geis"}],"eventName":"Out","minute":"87'"},
{"players":[{"playerName":"Sead Kolasinac"}],"eventName":"In","minute":"87'"},
{"players":[{"playerName":"Sascha Riether"}],"eventName":"Yellow-Card","minute":"9'"}
]},
"team2":{
"teamName":"Hannover 96","events":[
{"eventName":"Module-Start","value":"4231","minute":"0'"},
{"players":[{"playerName":"Artur Sobiech"}],"eventName":"Out","minute":"16'"},
{"players":[{"playerName":"Charleston Benschop"}],"eventName":"In","minute":"16'"},
{"players":[{"playerName":"Marcelo"}],"eventName":"Yellow-Card","minute":"50'"},
{"players":[{"playerName":"Manuel Schmiedebach"}],"eventName":"Out","minute":"62'"},
{"players":[{"playerName":"Allan Saint-Maximin"}],"eventName":"In","minute":"62'"},
{"players":[{"playerName":"Leon Andreasen"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Edgar Prib"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Kenan Karaman"}],"eventName":"Shot-On-Post","minute":"80'"}
]}}
For now the API returns results for the current season only.
Match statistics
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=Schalke+04&team2=Hannover+96</code>
{"team1":{
"teamName":"Schalke 04",
"teamStats":{
"cornersTotal":10,"dribbledPast":8,"tackleSuccessful":12,"throwInsTotal":31,"aerialsTotal":43,
"offensiveAerials":24,"dispossessed":11,"foulsCommited":8,"passesTotal":443,"offsidesCaught":3,"shotsOnTarget":8,
"tackleUnsuccesful":8,"defensiveAerials":19,"interceptions":19,"touches":617,"shotsOffTarget":10,"tacklesTotal":20,
"dribblesWon":14,"dribblesLost":11,"shotsTotal":26,"shotsBlocked":8,"aerialsWon":18,"clearances":16,"dribblesAttempted":25}},
"team2":{
"teamName":"Hannover 96",
"teamStats":{
"cornersTotal":10,"dribbledPast":14,"tackleSuccessful":22,"throwInsTotal":26,"aerialsTotal":43,"offensiveAerials":19,
"dispossessed":5,"foulsCommited":13,"passesTotal":351,"offsidesCaught":2,"shotsOnTarget":1,"tackleUnsuccesful":14,
"defensiveAerials":24,"interceptions":15,"touches":514,"shotsOffTarget":3,"tacklesTotal":36,"dribblesWon":8,"dribblesLost":7,
"shotsTotal":7,"shotsBlocked":3,"aerialsWon":25,"clearances":30,"dribblesAttempted":15}}}
Take in mind that this API exists in two version, the one without live update <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-statistics”>/api/bundesliga/match/stats</a> and the one with live update <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-statistics-live”>/api/live/bundesliga/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.
Player statistics for a match
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/bundesliga-live-scores#player-stats-for-a-match”>no live</a> and the <a href=“https://market.mashape.com/heisenbug/bundesliga-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=Klaas-Jan+Huntelaar&team1=Schalke+04&team2=Hannover+96</code>
{"isFirstEleven":true,"isManOfTheMatch":true,"stats":
{"throwInsTotal":1,"aerialsTotal":2,"offensiveAerials":2,"foulsCommited":1,"passesTotal":19,
"offsidesCaught":1,"shotsOnTarget":1,"interceptions":1,"touches":27,"shotsOffTarget":1,
"dribblesLost":1,"shotsTotal":3,"shotsBlocked":1,"aerialsWon":1,"dribblesAttempted":1},
"shirtNo":"25","name":"Klaas-Jan Huntelaar","weight":83,"position":"FW","age":32,"height":186}
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.
Missing player for a match
The API <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#missing-players-for-a-match”>Missing players for a match</a> requires two parameters
<code>team1</code> and <code>team2</code>,
and returns a response a few days before a match with continue updates till the match starts.
Even after a match is played, the API continue to give you the last answer.
The response returns for each team the player name who will miss with the reason.
If there is any doubt about the player will play the match the reason will be inside a square bracket, otherwise the reason will be with no bracket.
Typical reasons are Injured, Suspended, Unfit, Other.
For example calling the API with
<code>team1=Hertha+Berlin&team2=Hannover+96</code>
you will have the following response
{ "team1" : { "players" : { "missing" : [ { "playerName" : "Sami Allagui",
"reason" : "Injured"
},
{ "playerName" : "Sinan Kurt",
"reason" : "Injured"
},
{ "playerName" : "John Brooks",
"reason" : "Injured"
},
{ "playerName" : "Per Skjelbred",
"reason" : "[Injured]"
}
] },
"teamName" : "Hertha Berlin"
},
"team2" : { "players" : { "missing" : [ { "playerName" : "Leon Andreasen",
"reason" : "Injured"
},
{ "playerName" : "Charlison Benschop",
"reason" : "Injured"
},
{ "playerName" : "Felipe",
"reason" : "Injured"
},
{ "playerName" : "Hotaru Yamaguchi",
"reason" : "Injured"
}
] },
"teamName" : "Hannover 96"
}
}
For now the API returns results for the current season only.
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 Bundesliga 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/ligue-1-live-scores”>Ligue 1</a>, <a href=“https://market.mashape.com/heisenbug/premier-league-live-scores”>Premier League</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/bundesliga-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/bundesliga-live-scores#season-matches-results”>/api/bundesliga</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":5,"teamName":"Bayern Munich","firstHalfScore":1},
"team2":{"teamScore":0,"teamName":"Hamburger SV","firstHalfScore":0},"time":"FT","referee":"Bastian Dankert","when":"Friday, Aug 14 2015"},
.....
{"team1":{"teamScore":1,"teamName":"VfB Stuttgart","firstHalfScore":0},
"team2":{"teamScore":3,"teamName":"FC Cologne","firstHalfScore":0},"time":"FT","referee":"Wolfgang Stark","when":"Sunday, Aug 16 2015"}
]}
and here it is an example response for a call wit a match day not yet played (matchday=22
)
{"matches":[
{"team1":{"teamName":"Bayern Munich"},"team2":{"teamName":"Darmstadt"},"when":"Saturday, Feb 20 2016"},
{"team1":{"teamName":"Schalke 04"},"team2":{"teamName":"VfB Stuttgart"},"when":"Saturday, Feb 20 2016"},
{"team1":{"teamName":"Bayer Leverkusen"},"team2":{"teamName":"Borussia Dortmund"},"when":"Saturday, Feb 20 2016"},
.....
{"team1":{"teamName":"Ingolstadt"},"team2":{"teamName":"Werder Bremen"},"when":"Saturday, Feb 20 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 season (default value 2016-17); for now you can get results from the season 2008-09.
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/bundesliga-live-scores#lineups-and-substitutes-for-a-game”>/api/bundesliga/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=Schalke+04&team2=Hannover+96</code>
{
"team1": {
"teamName": "Schalke 04",
"players": {
"substitutes": [
{
"playerNumber": "3",
"playerName": "Junior Caicara"
},
{
"playerNumber": "6",
"playerName": "Sead Kolasinac"
},
{
"playerNumber": "9",
"playerName": "Franco Di Santo"
},
{
"playerNumber": "23",
"playerName": "Pierre-Emile Højbjerg"
},
{
"playerNumber": "24",
"playerName": "Kaan Ayhan"
},
{
"playerNumber": "30",
"playerName": "Michael Gspurning"
},
{
"playerNumber": "33",
"playerName": "Roman Neustädter"
}
],
"lineups": [
{
"playerNumber": "1",
"playerName": "Ralf Fährmann"
},
{
"playerNumber": "27",
"playerName": "Sascha Riether"
},
{
"playerNumber": "15",
"playerName": "Dennis Aogo"
},
{
"playerNumber": "8",
"playerName": "Leon Goretzka"
},
{
"playerNumber": "4",
"playerName": "Benedikt Höwedes"
},
{
"playerNumber": "32",
"playerName": "Joel Matip"
},
{
"playerNumber": "19",
"playerName": "Leroy Sané"
},
{
"playerNumber": "5",
"playerName": "Johannes Geis"
},
{
"playerNumber": "25",
"playerName": "Klaas-Jan Huntelaar"
},
{
"playerNumber": "7",
"playerName": "Max Meyer"
},
{
"playerNumber": "13",
"playerName": "Eric Maxim Choupo-Moting"
}
]
},
"coach": "André Breitenreiter"
},
"team2": {
"teamName": "Hannover 96",
"players": {
"substitutes": [
{
"playerNumber": "7",
"playerName": "Edgar Prib"
},
{
"playerNumber": "11",
"playerName": "Felix Klaus"
},
{
"playerNumber": "13",
"playerName": "Philipp Tschauner"
},
{
"playerNumber": "14",
"playerName": "Allan Saint-Maximin"
},
{
"playerNumber": "20",
"playerName": "Felipe"
},
{
"playerNumber": "31",
"playerName": "Waldemar Anton"
},
{
"playerNumber": "35",
"playerName": "Charlison Benschop"
}
],
"lineups": [
{
"playerNumber": "1",
"playerName": "Ron-Robert Zieler"
},
{
"playerNumber": "29",
"playerName": "Oliver Sorg"
},
{
"playerNumber": "3",
"playerName": "Miiko Albornoz"
},
{
"playerNumber": "8",
"playerName": "Manuel Schmiedebach"
},
{
"playerNumber": "25",
"playerName": "Marcelo"
},
{
"playerNumber": "19",
"playerName": "Christian Schulz"
},
{
"playerNumber": "2",
"playerName": "Leon Andreasen"
},
{
"playerNumber": "5",
"playerName": "Salif Sané"
},
{
"playerNumber": "9",
"playerName": "Artur Sobiech"
},
{
"playerNumber": "6",
"playerName": "Ceyhun Gülselam"
},
{
"playerNumber": "26",
"playerName": "Kenan Karaman"
}
]
},
"coach": "Michael Frontzeck"
}
}
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/bundesliga-live-scores#league-table”>/api/bundesliga/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 season; for now you can query for league table from the 2008-09 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/bundesliga-live-scores#match-scorers”>/api/bundesliga/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/bundesliga-live-scores#match-scorers-live”>/api/live/bundesliga/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=Schalke+04&team2=Hannover+96</code>
{"team1":{
"teamName":"Schalke 04",
"goals":[
{"isRightFoot":true,"isPenalty":true,"player":"Johannes Geis","minute":"51'"},
{"isRightFoot":true,"player":"Klaas-Jan Huntelaar","minute":"72'"},
{"isHead":true,"player":"Franco Di Santo","minute":"81'"}
]},
"team2":{
"teamName":"Hannover 96",
"goals":[
{"isRightFoot":true,"player":"Allan Saint-Maximin","minute":"81'"}
]}}
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/bundesliga-live-scores#top-scorers”>/api/bundesliga/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=Anthony+Ujah</code>
{"scorers":[{"playerName":"Anthony Ujah","goals":7","penalties":0}]}
or for for example with
<code>mode=away&to=15</code>
{"scorers":[
{"playerName":"Yunus Malli","goals":5","penalties":0},
{"playerName":"Anthony Ujah","goals":5","penalties":0},
{"playerName":"Salomon Kalou","goals":5","penalties":1},
{"playerName":"Paul Verhaegh","goals":4","penalties":1},
{"playerName":"Kevin Volland","goals":4","penalties":0}
]}
or maybe simply without any parameter
{"scorers":[
{"playerName":"Robert Lewandowski","goals":25","penalties":1},
{"playerName":"Pierre-Emerick Aubameyang","goals":19","penalties":0},
{"playerName":"Thomas Müller","goals":15","penalties":1},
{"playerName":"Javier Hernández","goals":13","penalties":1},
{"playerName":"Sandro Wagner","goals":13","penalties":1}
]}
For now the API returns results for the current season only.
The Bundesliga 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":"Kenan Karaman"}],"eventName":"Shot-On-Post","minute":"80'"}
....
There are two API version to get the data events, that is, with (<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-events-live”>/api/live/bundesliga/match/events</a>) or without live updates (<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-events”>/api/bundesliga/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
<code>team1=Schalke+04&team2=Hannover+96</code>
you will get
{"team1":
{"teamName":"Schalke 04","events":[
{"eventName":"Module-Start","value":"4231","minute":"0'"},
{"players":[{"playerName":"Klaas-Jan Huntelaar"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Franco Di Santo"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Pierre-Emile Højbjerg"}],"eventName":"In","minute":"78'"},
{"players":[{"playerName":"Max Meyer"}],"eventName":"Out","minute":"78'"},
{"players":[{"playerName":"Johannes Geis"}],"eventName":"Out","minute":"87'"},
{"players":[{"playerName":"Sead Kolasinac"}],"eventName":"In","minute":"87'"},
{"players":[{"playerName":"Sascha Riether"}],"eventName":"Yellow-Card","minute":"9'"}
]},
"team2":{
"teamName":"Hannover 96","events":[
{"eventName":"Module-Start","value":"4231","minute":"0'"},
{"players":[{"playerName":"Artur Sobiech"}],"eventName":"Out","minute":"16'"},
{"players":[{"playerName":"Charleston Benschop"}],"eventName":"In","minute":"16'"},
{"players":[{"playerName":"Marcelo"}],"eventName":"Yellow-Card","minute":"50'"},
{"players":[{"playerName":"Manuel Schmiedebach"}],"eventName":"Out","minute":"62'"},
{"players":[{"playerName":"Allan Saint-Maximin"}],"eventName":"In","minute":"62'"},
{"players":[{"playerName":"Leon Andreasen"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Edgar Prib"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Kenan Karaman"}],"eventName":"Shot-On-Post","minute":"80'"}
]}}
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=Schalke+04&team2=Hannover+96</code>
{"team1":{
"teamName":"Schalke 04",
"teamStats":{
"cornersTotal":10,"dribbledPast":8,"tackleSuccessful":12,"throwInsTotal":31,"aerialsTotal":43,
"offensiveAerials":24,"dispossessed":11,"foulsCommited":8,"passesTotal":443,"offsidesCaught":3,"shotsOnTarget":8,
"tackleUnsuccesful":8,"defensiveAerials":19,"interceptions":19,"touches":617,"shotsOffTarget":10,"tacklesTotal":20,
"dribblesWon":14,"dribblesLost":11,"shotsTotal":26,"shotsBlocked":8,"aerialsWon":18,"clearances":16,"dribblesAttempted":25}},
"team2":{
"teamName":"Hannover 96",
"teamStats":{
"cornersTotal":10,"dribbledPast":14,"tackleSuccessful":22,"throwInsTotal":26,"aerialsTotal":43,"offensiveAerials":19,
"dispossessed":5,"foulsCommited":13,"passesTotal":351,"offsidesCaught":2,"shotsOnTarget":1,"tackleUnsuccesful":14,
"defensiveAerials":24,"interceptions":15,"touches":514,"shotsOffTarget":3,"tacklesTotal":36,"dribblesWon":8,"dribblesLost":7,
"shotsTotal":7,"shotsBlocked":3,"aerialsWon":25,"clearances":30,"dribblesAttempted":15}}}
Take in mind that this API exists in two version, the one without live update <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-statistics”>/api/bundesliga/match/stats</a> and the one with live update <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-statistics-live”>/api/live/bundesliga/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/bundesliga-live-scores#player-stats-for-a-match”>no live</a> and the <a href=“https://market.mashape.com/heisenbug/bundesliga-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=Klaas-Jan+Huntelaar&team1=Schalke+04&team2=Hannover+96</code>
{"isFirstEleven":true,"isManOfTheMatch":true,"stats":
{"throwInsTotal":1,"aerialsTotal":2,"offensiveAerials":2,"foulsCommited":1,"passesTotal":19,
"offsidesCaught":1,"shotsOnTarget":1,"interceptions":1,"touches":27,"shotsOffTarget":1,
"dribblesLost":1,"shotsTotal":3,"shotsBlocked":1,"aerialsWon":1,"dribblesAttempted":1},
"shirtNo":"25","name":"Klaas-Jan Huntelaar","weight":83,"position":"FW","age":32,"height":186}
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.
prova
The API <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#missing-players-for-a-match”>Missing players for a match</a> requires two parameters
<code>team1</code> and <code>team2</code>,
and returns a response a few days before a match with continue updates till the match starts.
Even after a match is played, the API continue to give you the last answer.
The response returns for each team the player name who will miss with the reason.
If there is any doubt about the player will play the match the reason will be inside a square bracket, otherwise the reason will be with no bracket.
Typical reasons are Injured, Suspended, Unfit, Other.
For example calling the API with
<code>team1=Hertha+Berlin&team2=Hannover+96</code>
you will have the following response
{ "team1" : { "players" : { "missing" : [ { "playerName" : "Sami Allagui",
"reason" : "Injured"
},
{ "playerName" : "Sinan Kurt",
"reason" : "Injured"
},
{ "playerName" : "John Brooks",
"reason" : "Injured"
},
{ "playerName" : "Per Skjelbred",
"reason" : "[Injured]"
}
] },
"teamName" : "Hertha Berlin"
},
"team2" : { "players" : { "missing" : [ { "playerName" : "Leon Andreasen",
"reason" : "Injured"
},
{ "playerName" : "Charlison Benschop",
"reason" : "Injured"
},
{ "playerName" : "Felipe",
"reason" : "Injured"
},
{ "playerName" : "Hotaru Yamaguchi",
"reason" : "Injured"
}
] },
"teamName" : "Hannover 96"
}
}
For now the API returns results for the current season only.
Missing player for a match
The API <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#missing-players-for-a-match”>Missing players for a match</a> requires two parameters
<code>team1</code> and <code>team2</code>,
and returns a response a few days before a match with continue updates till the match starts.
Even after a match is played, the API continue to give you the last answer.
The response returns for each team the player name who will miss with the reason.
If there is any doubt about the player will play the match the reason will be inside a square bracket, otherwise the reason will be with no bracket.
Typical reasons are Injured, Suspended, Unfit, Other.
For example calling the API with
<code>team1=Hertha+Berlin&team2=Hannover+96</code>
you will have the following response
{ "team1" : { "players" : { "missing" : [ { "playerName" : "Sami Allagui",
"reason" : "Injured"
},
{ "playerName" : "Sinan Kurt",
"reason" : "Injured"
},
{ "playerName" : "John Brooks",
"reason" : "Injured"
},
{ "playerName" : "Per Skjelbred",
"reason" : "[Injured]"
}
] },
"teamName" : "Hertha Berlin"
},
"team2" : { "players" : { "missing" : [ { "playerName" : "Leon Andreasen",
"reason" : "Injured"
},
{ "playerName" : "Charlison Benschop",
"reason" : "Injured"
},
{ "playerName" : "Felipe",
"reason" : "Injured"
},
{ "playerName" : "Hotaru Yamaguchi",
"reason" : "Injured"
}
] },
"teamName" : "Hannover 96"
}
}
For now the API returns results for the current season only.
League Table
Using the endpoint API <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#league-table”>/api/bundesliga/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 season; for now you can query for league table from the 2008-09 season (default value for season is 2016-17).
Top Scorers
The <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#top-scorers”>/api/bundesliga/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=Anthony+Ujah</code>
{"scorers":[{"playerName":"Anthony Ujah","goals":7","penalties":0}]}
or for for example with
<code>mode=away&to=15</code>
{"scorers":[
{"playerName":"Yunus Malli","goals":5","penalties":0},
{"playerName":"Anthony Ujah","goals":5","penalties":0},
{"playerName":"Salomon Kalou","goals":5","penalties":1},
{"playerName":"Paul Verhaegh","goals":4","penalties":1},
{"playerName":"Kevin Volland","goals":4","penalties":0}
]}
or maybe simply without any parameter
{"scorers":[
{"playerName":"Robert Lewandowski","goals":25","penalties":1},
{"playerName":"Pierre-Emerick Aubameyang","goals":19","penalties":0},
{"playerName":"Thomas Müller","goals":15","penalties":1},
{"playerName":"Javier Hernández","goals":13","penalties":1},
{"playerName":"Sandro Wagner","goals":13","penalties":1}
]}
For now the API returns results for the current season only.
Talend Open Studio integration
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 Bundesliga 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/ligue-1-live-scores”>Ligue 1</a>, <a href=“https://market.mashape.com/heisenbug/premier-league-live-scores”>Premier League</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/bundesliga-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>.
Player statistics for a match
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/bundesliga-live-scores#player-stats-for-a-match”>no live</a> and the <a href=“https://market.mashape.com/heisenbug/bundesliga-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=Klaas-Jan+Huntelaar&team1=Schalke+04&team2=Hannover+96</code>
{"isFirstEleven":true,"isManOfTheMatch":true,"stats":
{"throwInsTotal":1,"aerialsTotal":2,"offensiveAerials":2,"foulsCommited":1,"passesTotal":19,
"offsidesCaught":1,"shotsOnTarget":1,"interceptions":1,"touches":27,"shotsOffTarget":1,
"dribblesLost":1,"shotsTotal":3,"shotsBlocked":1,"aerialsWon":1,"dribblesAttempted":1},
"shirtNo":"25","name":"Klaas-Jan Huntelaar","weight":83,"position":"FW","age":32,"height":186}
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.
Match scorers
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/bundesliga-live-scores#match-scorers”>/api/bundesliga/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/bundesliga-live-scores#match-scorers-live”>/api/live/bundesliga/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
(always the ones returned by the <b>season results</b> API).
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=Schalke+04&team2=Hannover+96</code>
{"team1":{
"teamName":"Schalke 04",
"goals":[
{"isRightFoot":true,"isPenalty":true,"player":"Johannes Geis","minute":"51'"},
{"isRightFoot":true,"player":"Klaas-Jan Huntelaar","minute":"72'"},
{"isHead":true,"player":"Franco Di Santo","minute":"81'"}
]},
"team2":{
"teamName":"Hannover 96",
"goals":[
{"isRightFoot":true,"player":"Allan Saint-Maximin","minute":"81'"}
]}}
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.
Match statistics
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=Schalke+04&team2=Hannover+96</code>
{"team1":{
"teamName":"Schalke 04",
"teamStats":{
"cornersTotal":10,"dribbledPast":8,"tackleSuccessful":12,"throwInsTotal":31,"aerialsTotal":43,
"offensiveAerials":24,"dispossessed":11,"foulsCommited":8,"passesTotal":443,"offsidesCaught":3,"shotsOnTarget":8,
"tackleUnsuccesful":8,"defensiveAerials":19,"interceptions":19,"touches":617,"shotsOffTarget":10,"tacklesTotal":20,
"dribblesWon":14,"dribblesLost":11,"shotsTotal":26,"shotsBlocked":8,"aerialsWon":18,"clearances":16,"dribblesAttempted":25}},
"team2":{
"teamName":"Hannover 96",
"teamStats":{
"cornersTotal":10,"dribbledPast":14,"tackleSuccessful":22,"throwInsTotal":26,"aerialsTotal":43,"offensiveAerials":19,
"dispossessed":5,"foulsCommited":13,"passesTotal":351,"offsidesCaught":2,"shotsOnTarget":1,"tackleUnsuccesful":14,
"defensiveAerials":24,"interceptions":15,"touches":514,"shotsOffTarget":3,"tacklesTotal":36,"dribblesWon":8,"dribblesLost":7,
"shotsTotal":7,"shotsBlocked":3,"aerialsWon":25,"clearances":30,"dribblesAttempted":15}}}
Take in mind that this API exists in two version, the one without live update <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-statistics”>/api/bundesliga/match/stats</a> and the one with live update <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-statistics-live”>/api/live/bundesliga/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.
Lineups, substitutes and coaches
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/bundesliga-live-scores#lineups-and-substitutes-for-a-game”>/api/bundesliga/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=Schalke+04&team2=Hannover+96</code>
{
"team1": {
"teamName": "Schalke 04",
"players": {
"substitutes": [
{
"playerNumber": "3",
"playerName": "Junior Caicara"
},
{
"playerNumber": "6",
"playerName": "Sead Kolasinac"
},
{
"playerNumber": "9",
"playerName": "Franco Di Santo"
},
{
"playerNumber": "23",
"playerName": "Pierre-Emile Højbjerg"
},
{
"playerNumber": "24",
"playerName": "Kaan Ayhan"
},
{
"playerNumber": "30",
"playerName": "Michael Gspurning"
},
{
"playerNumber": "33",
"playerName": "Roman Neustädter"
}
],
"lineups": [
{
"playerNumber": "1",
"playerName": "Ralf Fährmann"
},
{
"playerNumber": "27",
"playerName": "Sascha Riether"
},
{
"playerNumber": "15",
"playerName": "Dennis Aogo"
},
{
"playerNumber": "8",
"playerName": "Leon Goretzka"
},
{
"playerNumber": "4",
"playerName": "Benedikt Höwedes"
},
{
"playerNumber": "32",
"playerName": "Joel Matip"
},
{
"playerNumber": "19",
"playerName": "Leroy Sané"
},
{
"playerNumber": "5",
"playerName": "Johannes Geis"
},
{
"playerNumber": "25",
"playerName": "Klaas-Jan Huntelaar"
},
{
"playerNumber": "7",
"playerName": "Max Meyer"
},
{
"playerNumber": "13",
"playerName": "Eric Maxim Choupo-Moting"
}
]
},
"coach": "André Breitenreiter"
},
"team2": {
"teamName": "Hannover 96",
"players": {
"substitutes": [
{
"playerNumber": "7",
"playerName": "Edgar Prib"
},
{
"playerNumber": "11",
"playerName": "Felix Klaus"
},
{
"playerNumber": "13",
"playerName": "Philipp Tschauner"
},
{
"playerNumber": "14",
"playerName": "Allan Saint-Maximin"
},
{
"playerNumber": "20",
"playerName": "Felipe"
},
{
"playerNumber": "31",
"playerName": "Waldemar Anton"
},
{
"playerNumber": "35",
"playerName": "Charlison Benschop"
}
],
"lineups": [
{
"playerNumber": "1",
"playerName": "Ron-Robert Zieler"
},
{
"playerNumber": "29",
"playerName": "Oliver Sorg"
},
{
"playerNumber": "3",
"playerName": "Miiko Albornoz"
},
{
"playerNumber": "8",
"playerName": "Manuel Schmiedebach"
},
{
"playerNumber": "25",
"playerName": "Marcelo"
},
{
"playerNumber": "19",
"playerName": "Christian Schulz"
},
{
"playerNumber": "2",
"playerName": "Leon Andreasen"
},
{
"playerNumber": "5",
"playerName": "Salif Sané"
},
{
"playerNumber": "9",
"playerName": "Artur Sobiech"
},
{
"playerNumber": "6",
"playerName": "Ceyhun Gülselam"
},
{
"playerNumber": "26",
"playerName": "Kenan Karaman"
}
]
},
"coach": "Michael Frontzeck"
}
}
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.
Match events
The Bundesliga 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":"Kenan Karaman"}],"eventName":"Shot-On-Post","minute":"80'"}
....
There are two API version to get the data events, that is, with (<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-events-live”>/api/live/bundesliga/match/events</a>) or without live updates (<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-events”>/api/bundesliga/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
<code>team1=Schalke+04&team2=Hannover+96</code>
you will get
{"team1":
{"teamName":"Schalke 04","events":[
{"eventName":"Module-Start","value":"4231","minute":"0'"},
{"players":[{"playerName":"Klaas-Jan Huntelaar"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Franco Di Santo"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Pierre-Emile Højbjerg"}],"eventName":"In","minute":"78'"},
{"players":[{"playerName":"Max Meyer"}],"eventName":"Out","minute":"78'"},
{"players":[{"playerName":"Johannes Geis"}],"eventName":"Out","minute":"87'"},
{"players":[{"playerName":"Sead Kolasinac"}],"eventName":"In","minute":"87'"},
{"players":[{"playerName":"Sascha Riether"}],"eventName":"Yellow-Card","minute":"9'"}
]},
"team2":{
"teamName":"Hannover 96","events":[
{"eventName":"Module-Start","value":"4231","minute":"0'"},
{"players":[{"playerName":"Artur Sobiech"}],"eventName":"Out","minute":"16'"},
{"players":[{"playerName":"Charleston Benschop"}],"eventName":"In","minute":"16'"},
{"players":[{"playerName":"Marcelo"}],"eventName":"Yellow-Card","minute":"50'"},
{"players":[{"playerName":"Manuel Schmiedebach"}],"eventName":"Out","minute":"62'"},
{"players":[{"playerName":"Allan Saint-Maximin"}],"eventName":"In","minute":"62'"},
{"players":[{"playerName":"Leon Andreasen"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Edgar Prib"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Kenan Karaman"}],"eventName":"Shot-On-Post","minute":"80'"}
]}}
For now the API returns results for the current season only.
Season results
It’s possible to retrieve all the 2016-17 season matches calling the endpoint
<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#season-matches-results”>/api/bundesliga</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":5,"teamName":"Bayern Munich","firstHalfScore":1},
"team2":{"teamScore":0,"teamName":"Hamburger SV","firstHalfScore":0},"time":"FT","referee":"Bastian Dankert","when":"Friday, Aug 14 2015"},
.....
{"team1":{"teamScore":1,"teamName":"VfB Stuttgart","firstHalfScore":0},
"team2":{"teamScore":3,"teamName":"FC Cologne","firstHalfScore":0},"time":"FT","referee":"Wolfgang Stark","when":"Sunday, Aug 16 2015"}
]}
and here it is an example response for a call wit a match day not yet played (matchday=22
)
{"matches":[
{"team1":{"teamName":"Bayern Munich"},"team2":{"teamName":"Darmstadt"},"when":"Saturday, Feb 20 2016"},
{"team1":{"teamName":"Schalke 04"},"team2":{"teamName":"VfB Stuttgart"},"when":"Saturday, Feb 20 2016"},
{"team1":{"teamName":"Bayer Leverkusen"},"team2":{"teamName":"Borussia Dortmund"},"when":"Saturday, Feb 20 2016"},
.....
{"team1":{"teamName":"Ingolstadt"},"team2":{"teamName":"Werder Bremen"},"when":"Saturday, Feb 20 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 season (default value 2016-17); for now you can get results from the season 2008-09.
Historical data are only available with the MEGA plan.
Bundesliga Live Scores
Bundesliga Live Scores
The <b>Bundesliga 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 German 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/bundesliga-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 Bundesliga Ninja Team</b>
Talend Open Studio integration
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 Bundesliga 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/ligue-1-live-scores”>Ligue 1</a>, <a href=“https://market.mashape.com/heisenbug/premier-league-live-scores”>Premier League</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/bundesliga-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>.
Season results
It’s possible to retrieve all the 2016-17 season matches calling the endpoint
<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#season-matches-results”>/api/bundesliga</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":5,"teamName":"Bayern Munich","firstHalfScore":1},
"team2":{"teamScore":0,"teamName":"Hamburger SV","firstHalfScore":0},"time":"FT","referee":"Bastian Dankert","when":"Friday, Aug 14 2015"},
.....
{"team1":{"teamScore":1,"teamName":"VfB Stuttgart","firstHalfScore":0},
"team2":{"teamScore":3,"teamName":"FC Cologne","firstHalfScore":0},"time":"FT","referee":"Wolfgang Stark","when":"Sunday, Aug 16 2015"}
]}
and here it is an example response for a call wit a match day not yet played (matchday=22
)
{"matches":[
{"team1":{"teamName":"Bayern Munich"},"team2":{"teamName":"Darmstadt"},"when":"Saturday, Feb 20 2016"},
{"team1":{"teamName":"Schalke 04"},"team2":{"teamName":"VfB Stuttgart"},"when":"Saturday, Feb 20 2016"},
{"team1":{"teamName":"Bayer Leverkusen"},"team2":{"teamName":"Borussia Dortmund"},"when":"Saturday, Feb 20 2016"},
.....
{"team1":{"teamName":"Ingolstadt"},"team2":{"teamName":"Werder Bremen"},"when":"Saturday, Feb 20 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 season (default value 2016-17); for now you can get results from the season 2008-09.
Historical data are only available with the MEGA plan.
Lineups, substitutes and coaches
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/bundesliga-live-scores#lineups-and-substitutes-for-a-game”>/api/bundesliga/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=Schalke+04&team2=Hannover+96</code>
{
"team1": {
"teamName": "Schalke 04",
"players": {
"substitutes": [
{
"playerNumber": "3",
"playerName": "Junior Caicara"
},
{
"playerNumber": "6",
"playerName": "Sead Kolasinac"
},
{
"playerNumber": "9",
"playerName": "Franco Di Santo"
},
{
"playerNumber": "23",
"playerName": "Pierre-Emile Højbjerg"
},
{
"playerNumber": "24",
"playerName": "Kaan Ayhan"
},
{
"playerNumber": "30",
"playerName": "Michael Gspurning"
},
{
"playerNumber": "33",
"playerName": "Roman Neustädter"
}
],
"lineups": [
{
"playerNumber": "1",
"playerName": "Ralf Fährmann"
},
{
"playerNumber": "27",
"playerName": "Sascha Riether"
},
{
"playerNumber": "15",
"playerName": "Dennis Aogo"
},
{
"playerNumber": "8",
"playerName": "Leon Goretzka"
},
{
"playerNumber": "4",
"playerName": "Benedikt Höwedes"
},
{
"playerNumber": "32",
"playerName": "Joel Matip"
},
{
"playerNumber": "19",
"playerName": "Leroy Sané"
},
{
"playerNumber": "5",
"playerName": "Johannes Geis"
},
{
"playerNumber": "25",
"playerName": "Klaas-Jan Huntelaar"
},
{
"playerNumber": "7",
"playerName": "Max Meyer"
},
{
"playerNumber": "13",
"playerName": "Eric Maxim Choupo-Moting"
}
]
},
"coach": "André Breitenreiter"
},
"team2": {
"teamName": "Hannover 96",
"players": {
"substitutes": [
{
"playerNumber": "7",
"playerName": "Edgar Prib"
},
{
"playerNumber": "11",
"playerName": "Felix Klaus"
},
{
"playerNumber": "13",
"playerName": "Philipp Tschauner"
},
{
"playerNumber": "14",
"playerName": "Allan Saint-Maximin"
},
{
"playerNumber": "20",
"playerName": "Felipe"
},
{
"playerNumber": "31",
"playerName": "Waldemar Anton"
},
{
"playerNumber": "35",
"playerName": "Charlison Benschop"
}
],
"lineups": [
{
"playerNumber": "1",
"playerName": "Ron-Robert Zieler"
},
{
"playerNumber": "29",
"playerName": "Oliver Sorg"
},
{
"playerNumber": "3",
"playerName": "Miiko Albornoz"
},
{
"playerNumber": "8",
"playerName": "Manuel Schmiedebach"
},
{
"playerNumber": "25",
"playerName": "Marcelo"
},
{
"playerNumber": "19",
"playerName": "Christian Schulz"
},
{
"playerNumber": "2",
"playerName": "Leon Andreasen"
},
{
"playerNumber": "5",
"playerName": "Salif Sané"
},
{
"playerNumber": "9",
"playerName": "Artur Sobiech"
},
{
"playerNumber": "6",
"playerName": "Ceyhun Gülselam"
},
{
"playerNumber": "26",
"playerName": "Kenan Karaman"
}
]
},
"coach": "Michael Frontzeck"
}
}
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.
League Table
Using the endpoint API <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#league-table”>/api/bundesliga/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 season; for now you can query for league table from the 2008-09 season (default value for season is 2016-17).
Match scorers
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/bundesliga-live-scores#match-scorers”>/api/bundesliga/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/bundesliga-live-scores#match-scorers-live”>/api/live/bundesliga/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
(always the ones returned by the <b>season results</b> API).
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=Schalke+04&team2=Hannover+96</code>
{"team1":{
"teamName":"Schalke 04",
"goals":[
{"isRightFoot":true,"isPenalty":true,"player":"Johannes Geis","minute":"51'"},
{"isRightFoot":true,"player":"Klaas-Jan Huntelaar","minute":"72'"},
{"isHead":true,"player":"Franco Di Santo","minute":"81'"}
]},
"team2":{
"teamName":"Hannover 96",
"goals":[
{"isRightFoot":true,"player":"Allan Saint-Maximin","minute":"81'"}
]}}
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.
Top Scorers
The <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#top-scorers”>/api/bundesliga/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=Anthony+Ujah</code>
{"scorers":[{"playerName":"Anthony Ujah","goals":7","penalties":0}]}
or for for example with
<code>mode=away&to=15</code>
{"scorers":[
{"playerName":"Yunus Malli","goals":5","penalties":0},
{"playerName":"Anthony Ujah","goals":5","penalties":0},
{"playerName":"Salomon Kalou","goals":5","penalties":1},
{"playerName":"Paul Verhaegh","goals":4","penalties":1},
{"playerName":"Kevin Volland","goals":4","penalties":0}
]}
or maybe simply without any parameter
{"scorers":[
{"playerName":"Robert Lewandowski","goals":25","penalties":1},
{"playerName":"Pierre-Emerick Aubameyang","goals":19","penalties":0},
{"playerName":"Thomas Müller","goals":15","penalties":1},
{"playerName":"Javier Hernández","goals":13","penalties":1},
{"playerName":"Sandro Wagner","goals":13","penalties":1}
]}
For now the API returns results for the current season only.
Match events
The Bundesliga 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":"Kenan Karaman"}],"eventName":"Shot-On-Post","minute":"80'"}
....
There are two API version to get the data events, that is, with (<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-events-live”>/api/live/bundesliga/match/events</a>) or without live updates (<a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-events”>/api/bundesliga/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
<code>team1=Schalke+04&team2=Hannover+96</code>
you will get
{"team1":
{"teamName":"Schalke 04","events":[
{"eventName":"Module-Start","value":"4231","minute":"0'"},
{"players":[{"playerName":"Klaas-Jan Huntelaar"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Franco Di Santo"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Pierre-Emile Højbjerg"}],"eventName":"In","minute":"78'"},
{"players":[{"playerName":"Max Meyer"}],"eventName":"Out","minute":"78'"},
{"players":[{"playerName":"Johannes Geis"}],"eventName":"Out","minute":"87'"},
{"players":[{"playerName":"Sead Kolasinac"}],"eventName":"In","minute":"87'"},
{"players":[{"playerName":"Sascha Riether"}],"eventName":"Yellow-Card","minute":"9'"}
]},
"team2":{
"teamName":"Hannover 96","events":[
{"eventName":"Module-Start","value":"4231","minute":"0'"},
{"players":[{"playerName":"Artur Sobiech"}],"eventName":"Out","minute":"16'"},
{"players":[{"playerName":"Charleston Benschop"}],"eventName":"In","minute":"16'"},
{"players":[{"playerName":"Marcelo"}],"eventName":"Yellow-Card","minute":"50'"},
{"players":[{"playerName":"Manuel Schmiedebach"}],"eventName":"Out","minute":"62'"},
{"players":[{"playerName":"Allan Saint-Maximin"}],"eventName":"In","minute":"62'"},
{"players":[{"playerName":"Leon Andreasen"}],"eventName":"Out","minute":"77'"},
{"players":[{"playerName":"Edgar Prib"}],"eventName":"In","minute":"77'"},
{"players":[{"playerName":"Kenan Karaman"}],"eventName":"Shot-On-Post","minute":"80'"}
]}}
For now the API returns results for the current season only.
Match statistics
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=Schalke+04&team2=Hannover+96</code>
{"team1":{
"teamName":"Schalke 04",
"teamStats":{
"cornersTotal":10,"dribbledPast":8,"tackleSuccessful":12,"throwInsTotal":31,"aerialsTotal":43,
"offensiveAerials":24,"dispossessed":11,"foulsCommited":8,"passesTotal":443,"offsidesCaught":3,"shotsOnTarget":8,
"tackleUnsuccesful":8,"defensiveAerials":19,"interceptions":19,"touches":617,"shotsOffTarget":10,"tacklesTotal":20,
"dribblesWon":14,"dribblesLost":11,"shotsTotal":26,"shotsBlocked":8,"aerialsWon":18,"clearances":16,"dribblesAttempted":25}},
"team2":{
"teamName":"Hannover 96",
"teamStats":{
"cornersTotal":10,"dribbledPast":14,"tackleSuccessful":22,"throwInsTotal":26,"aerialsTotal":43,"offensiveAerials":19,
"dispossessed":5,"foulsCommited":13,"passesTotal":351,"offsidesCaught":2,"shotsOnTarget":1,"tackleUnsuccesful":14,
"defensiveAerials":24,"interceptions":15,"touches":514,"shotsOffTarget":3,"tacklesTotal":36,"dribblesWon":8,"dribblesLost":7,
"shotsTotal":7,"shotsBlocked":3,"aerialsWon":25,"clearances":30,"dribblesAttempted":15}}}
Take in mind that this API exists in two version, the one without live update <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-statistics”>/api/bundesliga/match/stats</a> and the one with live update <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#match-statistics-live”>/api/live/bundesliga/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.
Player statistics for a match
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/bundesliga-live-scores#player-stats-for-a-match”>no live</a> and the <a href=“https://market.mashape.com/heisenbug/bundesliga-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=Klaas-Jan+Huntelaar&team1=Schalke+04&team2=Hannover+96</code>
{"isFirstEleven":true,"isManOfTheMatch":true,"stats":
{"throwInsTotal":1,"aerialsTotal":2,"offensiveAerials":2,"foulsCommited":1,"passesTotal":19,
"offsidesCaught":1,"shotsOnTarget":1,"interceptions":1,"touches":27,"shotsOffTarget":1,
"dribblesLost":1,"shotsTotal":3,"shotsBlocked":1,"aerialsWon":1,"dribblesAttempted":1},
"shirtNo":"25","name":"Klaas-Jan Huntelaar","weight":83,"position":"FW","age":32,"height":186}
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.
Missing player for a match
The API <a href=“https://market.mashape.com/heisenbug/bundesliga-live-scores#missing-players-for-a-match”>Missing players for a match</a> requires two parameters
<code>team1</code> and <code>team2</code>,
and returns a response a few days before a match with continue updates till the match starts.
Even after a match is played, the API continue to give you the last answer.
The response returns for each team the player name who will miss with the reason.
If there is any doubt about the player will play the match the reason will be inside a square bracket, otherwise the reason will be with no bracket.
Typical reasons are Injured, Suspended, Unfit, Other.
For example calling the API with
<code>team1=Hertha+Berlin&team2=Hannover+96</code>
you will have the following response
{ "team1" : { "players" : { "missing" : [ { "playerName" : "Sami Allagui",
"reason" : "Injured"
},
{ "playerName" : "Sinan Kurt",
"reason" : "Injured"
},
{ "playerName" : "John Brooks",
"reason" : "Injured"
},
{ "playerName" : "Per Skjelbred",
"reason" : "[Injured]"
}
] },
"teamName" : "Hertha Berlin"
},
"team2" : { "players" : { "missing" : [ { "playerName" : "Leon Andreasen",
"reason" : "Injured"
},
{ "playerName" : "Charlison Benschop",
"reason" : "Injured"
},
{ "playerName" : "Felipe",
"reason" : "Injured"
},
{ "playerName" : "Hotaru Yamaguchi",
"reason" : "Injured"
}
] },
"teamName" : "Hannover 96"
}
}
For now the API returns results for the current season only.