Get match by ID
Retrieve detailed information for one match.
This is the detail view. Matches returns general information for a list of fixtures, and this route fills in everything that route leaves out.
Predictions
When present, predictions holds two lists, prematch and
live.
Each prediction carries its type, the modelType, when it was
generatedAt, a written description, and the
probabilities. Those always carry home and away,
and draw is optional.
Each prediction carries its own generatedAt timestamp, so read it to know
when a forecast was produced.
Event types
| Type | Meaning |
|---|---|
Goal |
A player strikes the ball into the opposing team's goal. |
Own Goal |
A player strikes or deflects the ball into their own team's goal. |
Penalty |
A goal scored from the penalty spot after a foul or handball by the defending team inside the area. |
Missed Penalty |
The penalty taker failed to score, either missing the target or being saved. |
Yellow Card |
A player is cautioned for unsporting behaviour or foul play. |
Red Card |
A player is sent off for serious foul play, violent conduct, or a second yellow. |
Substitution |
A player is replaced from the bench during a stoppage. |
VAR Goal Confirmed |
Video review confirms a goal is valid and stands. |
VAR Goal Cancelled |
Video review disallows a goal for an infringement. |
VAR Goal Cancelled - Offside |
Video review disallows a goal for offside. |
VAR Penalty |
Video review awards a penalty. |
VAR Penalty Cancelled |
Video review overturns a penalty already awarded. |
Parameters
| Parameter | Type | Description |
|---|---|---|
idrequired
|
numberpath | Requested match id. |
Request
curl --request GET \
--url 'https://soccer.highlightly.net/matches/{id}' \
--header 'x-rapidapi-key: YOUR_API_KEY'
const response = await fetch('https://soccer.highlightly.net/matches/{id}', {
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/matches/{id}',
headers={
'x-rapidapi-key': os.environ['HIGHLIGHTLY_API_KEY'],
},
timeout=10,
)
response.raise_for_status()
data = response.json()
Response
idnumberrequired
roundstringrequired
datestringrequired
countryCountryResponserequired3 fields
codestringrequiredCountry code specified by the ISO 3166 standard.
namestringrequired
logostringrequired
awayTeamDetailedTeamResponserequired14 fields
idnumberrequired
logostring
namestringrequired
shotsShots[]4 fields
playerNamestringrequired
timestringrequired
outcomestringrequired
goalTargetstringrequired
topPlayersTopPlayersResponse[]5 fields
positionstringrequired
namestringrequired
statisticsTopPlayerStatisticsResponse[]required2 fields
namestringrequired
valueobjectrequired
homeTeamDetailedTeamResponserequired14 fields
idnumberrequired
logostring
namestringrequired
shotsShots[]4 fields
playerNamestringrequired
timestringrequired
outcomestringrequired
goalTargetstringrequired
topPlayersTopPlayersResponse[]5 fields
positionstringrequired
namestringrequired
statisticsTopPlayerStatisticsResponse[]required2 fields
namestringrequired
valueobjectrequired
leagueMatchLeagueResponserequired4 fields
idnumberrequired
seasonnumberrequired
namestringrequired
logostring
stateMatchStateResponserequired5 fields
descriptionstringrequiredState of the match.To be announcedNot startedFirst halfHalf timeSecond halfExtra timeBreak timePenaltiesSuspendedInterruptedFinishedFinished after penaltiesFinished after extra timePostponedCancelledAbandonedAwardedIn progressUnknown
clocknumberCurrent minute of the match.
scoreMatchScoreResponserequired2 fields
currentstringHome - Away score up to penalties.
penaltiesstringHome - Away team score after the penalties phase.
eventsLiveEvent[]required11 fields
teamLiveEventTeamrequired3 fields
idnumberrequired
logostring
namestringrequired
timestringrequired
typestringrequiredGoalOwn GoalPenaltyMissed PenaltyYellow CardRed CardSubstitutionVAR Goal ConfirmedVAR Goal CancelledVAR PenaltyVAR Penalty CancelledVAR Goal Cancelled - Offside
playerIdnumber
playerstring
assistingPlayerIdnumber
assiststring
substitutedstring
statisticsMatchStatisticsResponse[]required8 fields
teamTeamResponserequired4 fields
idnumberrequired
logostring
namestringrequired
typestringclubnational
statisticsMatchStatisticsResponseItem[]required2 fields
valuenumberrequired
displayNamestringrequired
refereeDetailedMatchRefereeResponse2 fields
namestring
nationalitystring
venueDetailedMatchVenueResponse4 fields
citystring
namestring
countrystring
capacitystring
forecastDetailedMatchForecastResponse2 fields
statusstring
temperaturestring
predictionsPredictionResponse18 fields
prematchPrediction[]required8 fields
typestringrequired
modelTypestringrequired
generatedAtstringrequired
descriptionstringrequired
probabilitiesPredictionProbabilitiesrequired3 fields
homestringrequired
drawstring
awaystringrequired
livePrediction[]required8 fields
typestringrequired
modelTypestringrequired
generatedAtstringrequired
descriptionstringrequired
probabilitiesPredictionProbabilitiesrequired3 fields
homestringrequired
drawstring
awaystringrequired
newsNews[]4 fields
urlstringrequired
imagestringrequired
titlestringrequired
datePublishedstringrequired
Example response
[
{
"id": 1002433681,
"round": "Apertura - 9",
"date": "\"2024-03-31T20:30:00.000Z",
"country": {
"code": "FR",
"name": "France",
"logo": "https://example.com/logos/country/FR.png"
},
"awayTeam": {
"id": 553,
"logo": "https://example.com/logos/team/553.png",
"name": "Montpellier",
"shots": [
{
"playerName": "Cody Gakpo",
"time": "3'",
"outcome": "Missed",
"goalTarget": "High Right"
}
],
"topPlayers": [
{
"position": "Midfielder",
"name": "Carlos Augusto",
"statistics": [
{
"name": "Shots On Target",
"value": 2
}
]
}
]
},
"homeTeam": {
"id": 553,
"logo": "https://example.com/logos/team/553.png",
"name": "Montpellier",
"shots": [
{
"playerName": "Cody Gakpo",
"time": "3'",
"outcome": "Missed",
"goalTarget": "High Right"
}
],
"topPlayers": [
{
"position": "Midfielder",
"name": "Carlos Augusto",
"statistics": [
{
"name": "Shots On Target",
"value": 2
}
]
}
]
},
"league": {
"id": 133,
"season": 2023,
"name": "Ligue 1",
"logo": "https://example.com/logos/league/133.png"
},
"state": {
"description": "Second half",
"clock": 67,
"score": {
"current": "3 - 1",
"penalties": "6 - 4"
}
},
"events": [
{
"team": {
"id": 13394673,
"logo": "https://example.com/logo/preview/66311.13394673",
"name": "Tersana"
},
"time": "45+1",
"type": "Goal",
"playerId": 63606907,
"player": "M. Mamdouh",
"assistingPlayerId": 0,
"assist": "J. Johanson",
"substituted": ""
}
],
"statistics": [
{
"team": {
"id": 553,
"logo": "https://example.com/logos/team/553.png",
"name": "Montpellier",
"type": "club"
},
"statistics": [
{
"value": 0.62,
"displayName": "Shots accuracy"
}
]
}
],
"referee": {
"name": "Brace, Andrew",
"nationality": "Ireland"
},
"venue": {
"city": "Swansea",
"name": "Liberty Stadium",
"country": "Wales",
"capacity": "20827"
},
"forecast": {
"status": "cloudy",
"temperature": "11.97°C"
},
"predictions": {
"prematch": [
{
"type": "prematch",
"modelType": "three-way",
"generatedAt": "2025-03-12T19:00:20.000Z",
"description": "Team A is most likely to win the game against Team B.`",
"probabilities": {
"home": "30.22%",
"draw": "0.00%",
"away": "69.78%"
}
}
],
"live": [
{
"type": "prematch",
"modelType": "three-way",
"generatedAt": "2025-03-12T19:00:20.000Z",
"description": "Team A is most likely to win the game against Team B.`",
"probabilities": {
"home": "30.22%",
"draw": "0.00%",
"away": "69.78%"
}
}
]
},
"news": [
{
"url": "https://football-italia.net/watch-milan-reijnders-scores-16th-goal-2024-25/?utm_source=365Scores&utm_medium=link&utm_campaign=Contact%2bus%2bat%2b365scores%2bfor%2bmore%2btraffic",
"image": "https://icdn.football-italia.net/wp-content/uploads/2025/03/netherlands-v-spain-uefa-nations.jpg",
"title": "Celebrating Fernando Torres: A Spanish Football Icon",
"datePublished": "2025-03-20T19:29:02Z"
}
]
}
]
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. |