Box score

GET https://soccer.highlightly.net/box-score/{matchId} Football API
GET https://sports.highlightly.net/football/box-score/{matchId} All Sports API

Retrieve per player statistics for one match.

Refresh interval
Once every 5 minutes

The matchId comes from matches.

Where match statistics gives one set of numbers per team, this gives a set per player, grouped by team.

Player metadata

Alongside their statistics, each player carries the metadata below. Id, name, captain and substitute flags, minutes played and offsides are always present. The other fields are included where available.

Field Meaning
Id Unique identifier for the player.
Name The commonly known name of the player.
Full name The full registered name. Where available.
Match rating Performance rating for this match, as a string such as 6.90. Where available.
Position Playing position, one of Goalkeeper, Defender, Midfielder or Forward. Where available.
Shirt number Shirt number worn. Where available.
Is a captain Whether the player was the team captain.
Is a substitute Whether the player started as a substitute.
Minutes played Total minutes played in the match.
Offside Number of offsides committed.
Logo URL of the player's image. Where available.

Statistics

The per player measures group into six families. Rates and accuracies are strings with a percent sign, such as 66.67 %.

Attacking

Goals scored, assists, and key passes, which are the passes that directly created a chance.

Shots are reported as shots on target, off target and total, with an accuracy figure derived from them. Penalties follow the same shape, with scored, missed, total and accuracy.

Passing

Successful, failed and total passes, with a passing accuracy figure.

Dribbling and duels

Dribbles are reported as successful, failed and total, with a success rate. Duels follow the same pattern, counting the one against one challenges contested, won and lost, with a success rate.

Defending

Total tackles and total interceptions.

Discipline

Fouls committed and fouls received, plus yellow cards, second yellows and red cards.

Goalkeeping

Goals saved and goals conceded apply to whoever was in goal.

Expected goals

Five modelled measures sit alongside the counted ones. They estimate what should have happened given the quality of the chances, rather than what did.

Measure Estimates
Expected goals, xG Goals the player should have scored, based on chance quality.
Expected assists, xA Assists the player should have, based on chance quality.
Expected goals on target, xGOT Goals expected from the placement and quality of shots that were on target.
Expected goals on target conceded Goals a goalkeeper should have conceded, given the shots faced.
Expected goals prevented, xGP The difference between expected goals on target conceded and goals actually conceded.

Expected goals on target conceded and expected goals prevented apply to whoever was in goal, based on the shots they faced.

A player box score rendered in a client application

Parameters

Parameter Type Description
matchIdrequired numberpath Requested match id.

Request

curl --request GET \
  --url 'https://soccer.highlightly.net/box-score/{matchId}' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
const response = await fetch('https://soccer.highlightly.net/box-score/{matchId}', {
  headers: {
    'x-rapidapi-key': process.env.HIGHLIGHTLY_API_KEY
  }
})

if (!response.ok) {
  throw new Error(`Highlightly responded ${response.status}`)
}

const data = await response.json()
import os
import requests

response = requests.get(
    'https://soccer.highlightly.net/box-score/{matchId}',
    headers={
        'x-rapidapi-key': os.environ['HIGHLIGHTLY_API_KEY'],
    },
    timeout=10,
)

response.raise_for_status()
data = response.json()

Response

teamTeamBoxScoreResponserequired3 fields
idnumberrequired
logostringrequired
namestringrequired
playersPlayerBoxScore[]required49 fields
idnumberrequired
namestringrequired
fullNamestring
logostring
matchRatingstring
shirtNumbernumber
isCaptainbooleanrequired
positionstringGoalkeeperDefenderMidfielderForward
minutesPlayednumberrequired
isSubstitutebooleanrequired
offsidesnumberrequired
statisticsPlayerBoxScoreStatistics[]required37 fields
goalsScorednumberrequired
goalsSavednumberrequired
goalsConcedednumberrequired
assistsnumberrequired
dribblesTotalnumberrequired
dribblesSuccessfulnumberrequired
dribblesFailednumberrequired
dribbleSuccessRatestringrequired
fouledByOthersnumberrequired
fouledOthersnumberrequired
tacklesTotalnumberrequired
interceptionsTotalnumberrequired
duelsTotalnumberrequired
duelsWonnumberrequired
duelsLostnumberrequired
duelSuccessRatestringrequired
cardsRednumberrequired
cardsYellownumberrequired
cardsSecondYellownumberrequired
passesAccuracystringrequired
passesSuccessfulnumberrequired
passesFailednumberrequired
passesTotalnumberrequired
passesKeynumberrequired
penaltiesScorednumberrequired
penaltiesMissednumberrequired
penaltiesTotalnumberrequired
penaltiesAccuracystringrequired
shotsOnTargetnumberrequired
shotsOffTargetnumberrequired
shotsTotalnumberrequired
shotsAccuracystringrequired
expectedGoalsnumber
expectedAssistsnumber
expectedGoalsOnTargetnumber
expectedGoalsOnTargetConcedednumber
expectedGoalsPreventednumber

Example response

200 application/json
[
  {
    "team": {
      "id": 34824,
      "logo": "https://highlightly.net/soccer/images/teams/34824.png",
      "name": "Liverpool"
    },
    "players": [
      {
        "id": 0,
        "name": "",
        "fullName": "",
        "logo": "",
        "matchRating": "6.90",
        "shirtNumber": 2,
        "isCaptain": false,
        "position": "Defender",
        "minutesPlayed": 90,
        "isSubstitute": false,
        "offsides": 0,
        "statistics": [
          {
            "goalsScored": 0,
            "goalsSaved": 0,
            "goalsConceded": 0,
            "assists": 0,
            "dribblesTotal": 3,
            "dribblesSuccessful": 2,
            "dribblesFailed": 1,
            "dribbleSuccessRate": "66.67 %",
            "fouledByOthers": 0,
            "fouledOthers": 1,
            "tacklesTotal": 7,
            "interceptionsTotal": 1,
            "duelsTotal": 19,
            "duelsWon": 10,
            "duelsLost": 9,
            "duelSuccessRate": "52.63 %",
            "cardsRed": 0,
            "cardsYellow": 0,
            "cardsSecondYellow": 0,
            "passesAccuracy": "78.57 %",
            "passesSuccessful": 22,
            "passesFailed": 0,
            "passesTotal": 28,
            "passesKey": 3,
            "penaltiesScored": 0,
            "penaltiesMissed": 0,
            "penaltiesTotal": 0,
            "penaltiesAccuracy": "0.00 %",
            "shotsOnTarget": 1,
            "shotsOffTarget": 0,
            "shotsTotal": 1,
            "shotsAccuracy": "100.00 %",
            "expectedGoals": 0.12,
            "expectedAssists": 0.25,
            "expectedGoalsOnTarget": 0.16,
            "expectedGoalsOnTargetConceded": 0,
            "expectedGoalsPrevented": 0
          }
        ]
      }
    ]
  }
]

Values are the examples declared in the OpenAPI spec, not a captured live response.

Errors

Status Description
400 Bad request descriptive error.
500 Internal server error.