Overview

The Match Summary Basic API returns a compact team-level summary for one match. It combines match metadata, competition context, venue and officials, the current or final score, and a focused collection of performance statistics for the home and away teams. The statistics include passing, possession, goals and expected goals, corners, offsides, fouls, cards, attempts, and final-third penetration by attacking channel. Both teams use the same statistics schema, which makes the response suitable for direct comparison in dashboards, broadcast graphics, match centers, and post-match reports. The endpoint returns the latest stored snapshot when the request is made. For a live match, values may change as new events and scores are processed. The lastUpdateDateTime field identifies when the match record was most recently updated.

Typical Use Cases

  • Build a basic match statistics dashboard.
  • Display a home-versus-away comparison.
  • Populate broadcast or second-screen match graphics.
  • Show live or post-match scores and key team statistics.
  • Create match-center summary cards.
  • Feed reporting systems without retrieving the full detailed event dataset.
  • Visualize final-third entry distribution across five attacking zones.

Parameters

module
string
required
The API module. This value is fixed and must always be api.
api
string
required
The endpoint name. This value is fixed and must always be MatchSummaryBasic.
version
string
required
The API version. Use V3.
match_id
integer
required
The unique KoraStats match identifier. In this example, 79356 identifies Morocco vs Nigeria in the AFCON Women final.
lang
string
required
The response language code. Use en for English.
response
string
required
The response format. Use json.
key
string
required
Your KoraStats API key. Keep this value secure and do not expose it in public or client-side applications.

Endpoint

GET https://premium.korastats.pro/api.php
https://premium.korastats.pro/api.php?module=api&api=MatchSummaryBasic&version=V3&match_id=79356&lang=en&response=json&key=YOUR_API_KEY

Code Examples

curl --get "https://premium.korastats.pro/api.php" \
  --data-urlencode "module=api" \
  --data-urlencode "api=MatchSummaryBasic" \
  --data-urlencode "version=V3" \
  --data-urlencode "match_id=79356" \
  --data-urlencode "lang=en" \
  --data-urlencode "response=json" \
  --data-urlencode "key=YOUR_API_KEY"

Response Example

{
  "result": true,
  "title": "Success",
  "message": "Match summary retrieved successfully in 1.5539 seconds.",
  "object": {
    "_type": "MATCH_SUMMARY",
    "matchId": 79356,
    "tournament": {
      "id": 582,
      "name": "AFCON Women"
    },
    "season": {
      "id": 1356,
      "name": "Morocco 2025"
    },
    "stage": {
      "id": 2349,
      "name": "Final"
    },
    "group": {
      "id": 3224,
      "name": "Main"
    },
    "round": 1,
    "dateTime": "2025-07-26 23:00:00",
    "lastUpdateDateTime": "2025-07-27 16:11:22",
    "stadium": {
      "id": 4058,
      "name": "Rabat Olympic Stadium"
    },
    "referee": {
      "id": 11085,
      "name": "Antsino Twanyanyukwa"
    },
    "assistant1": {
      "id": 5257,
      "name": "Alice Umutesi"
    },
    "assistant2": {
      "id": 5568,
      "name": "Tabara Mbodji"
    },
    "score": {
      "home": 2,
      "away": 3
    },
    "stats": {
      "home": {
        "Pass": {
          "Total": 315,
          "Success": 216,
          "Accuracy": 0.6857
        },
        "Possession": {
          "Touches": {
            "Average": 0.49
          },
          "Time": {
            "Average": 780.3239999999998
          }
        },
        "GoalsScored": {
          "Total": 2,
          "XG": 1.3
        },
        "Admin": {
          "Corners": 3,
          "Offside": 0
        },
        "Fouls": {
          "Committed": 12
        },
        "Cards": {
          "Yellow": 0,
          "Red": 0
        },
        "Attempts": {
          "Total": 10,
          "Success": 3,
          "Accuracy": 0.3
        },
        "PenetrationFinalThird": {
          "Total": 13,
          "LeftFlank": 3,
          "LeftChannel": 1,
          "Center": 1,
          "RightChannel": 6,
          "RightFlank": 2
        }
      },
      "away": {
        "Pass": {
          "Total": 328,
          "Success": 219,
          "Accuracy": 0.6677
        },
        "Possession": {
          "Touches": {
            "Average": 0.51
          },
          "Time": {
            "Average": 876.0630000000009
          }
        },
        "GoalsScored": {
          "Total": 3,
          "XG": 3
        },
        "Admin": {
          "Corners": 5,
          "Offside": 2
        },
        "Fouls": {
          "Committed": 7
        },
        "Cards": {
          "Yellow": 0,
          "Red": 0
        },
        "Attempts": {
          "Total": 15,
          "Success": 5,
          "Accuracy": 0.3333
        },
        "PenetrationFinalThird": {
          "Total": 32,
          "LeftFlank": 8,
          "LeftChannel": 3,
          "Center": 8,
          "RightChannel": 5,
          "RightFlank": 8
        }
      }
    }
  }
}

Response Fields

Response Envelope

FieldTypeDescription
resultbooleanIndicates whether the request completed successfully.
titlestringShort response status title.
messagestringHuman-readable result message. The execution time included in this string varies per request.
objectobjectMatch metadata, score, and team statistics.

Match Summary

FieldTypeDescription
object._typestringObject discriminator. The value is MATCH_SUMMARY.
object.matchIdintegerUnique match identifier.
object.tournamentobjectTournament summary.
object.seasonobjectSeason summary.
object.stageobject | nullCompetition stage containing the match.
object.groupobject | nullGroup or structural stage container containing the match.
object.roundinteger | nullMatch round within the stage.
object.dateTimestring | nullScheduled match date and time in YYYY-MM-DD HH:mm:ss format.
object.lastUpdateDateTimestring | nullDate and time when the match record was last updated.
object.stadiumobject | nullStadium assigned to the match.
object.refereeobject | nullMain referee.
object.assistant1object | nullFirst assistant referee.
object.assistant2object | nullSecond assistant referee.
object.scoreobjectCurrent or final match score.
object.statsobjectTeam statistics divided into home and away.

Reference Objects

Tournament, season, stage, group, stadium, referee, and assistant-referee values use compact reference objects.
FieldTypeDescription
{reference}.idintegerUnique identifier for the referenced record.
{reference}.namestringDisplay name of the referenced record.

Score

FieldTypeDescription
object.score.homeinteger | nullCurrent or final home-team score. May be null before the match starts.
object.score.awayinteger | nullCurrent or final away-team score. May be null before the match starts.

Team Statistics

The same structure appears under object.stats.home and object.stats.away. Paths below use {side} to represent either team.

Passing

FieldTypeDescription
stats.{side}.Pass.TotalintegerTotal pass attempts.
stats.{side}.Pass.SuccessintegerSuccessful passes.
stats.{side}.Pass.AccuracynumberSuccessful passes divided by total passes. Returned as a ratio from 0 to 1; multiply by 100 for a percentage.

Possession

FieldTypeDescription
stats.{side}.Possession.Touches.AveragenumberTeam possession share calculated from touches. Returned as a ratio from 0 to 1; for example, 0.49 represents 49%.
stats.{side}.Possession.Time.AveragenumberPossession-time value returned by the statistics engine, in seconds. The field is exposed under Average in the current schema.

Goals and Expected Goals

FieldTypeDescription
stats.{side}.GoalsScored.TotalintegerGoals scored by the team.
stats.{side}.GoalsScored.XGnumberTotal expected-goals value generated from the team’s attempts.

Administrative Statistics

FieldTypeDescription
stats.{side}.Admin.CornersintegerCorners awarded to the team.
stats.{side}.Admin.OffsideintegerOffside decisions against the team.

Fouls and Cards

FieldTypeDescription
stats.{side}.Fouls.CommittedintegerFouls committed by the team.
stats.{side}.Cards.YellowintegerYellow cards received.
stats.{side}.Cards.RedintegerRed cards received.

Attempts

FieldTypeDescription
stats.{side}.Attempts.TotalintegerTotal scoring attempts.
stats.{side}.Attempts.SuccessintegerSuccessful attempts according to the KoraStats event classification.
stats.{side}.Attempts.AccuracynumberSuccessful attempts divided by total attempts. Returned as a ratio from 0 to 1.

Final-Third Penetration

FieldTypeDescription
stats.{side}.PenetrationFinalThird.TotalintegerTotal recorded entries into the final third.
stats.{side}.PenetrationFinalThird.LeftFlankintegerFinal-third entries through the left flank.
stats.{side}.PenetrationFinalThird.LeftChannelintegerFinal-third entries through the left half-space or channel.
stats.{side}.PenetrationFinalThird.CenterintegerFinal-third entries through the central zone.
stats.{side}.PenetrationFinalThird.RightChannelintegerFinal-third entries through the right half-space or channel.
stats.{side}.PenetrationFinalThird.RightFlankintegerFinal-third entries through the right flank.
Pass.Accuracy, Possession.Touches.Average, and Attempts.Accuracy are ratios, not percentage values. For display, convert 0.6857 to 68.57%, 0.49 to 49%, and 0.3 to 30%.
PenetrationFinalThird.Total is the sum of the five zone values: LeftFlank, LeftChannel, Center, RightChannel, and RightFlank.
For matches that have not started or have incomplete analysis, scores, metadata, or individual statistics may be null, zero, or unavailable.

Error Response

If match_id is missing, the API returns a bad-request response using the standard KoraStats error envelope.
{
  "result": false,
  "title": "Bad Request",
  "message": "Match id not sent."
}