Overview
The Season Group Rank API returns the current competitive progression of an entire season. It combines calculated league-stage tables with knockout-stage matches, winners, aggregate scores, and qualified teams in one response. League stages return groups and ordered rankings. Each ranking includes the team’s position, qualification status, points, match record, goals scored, goals conceded, and goal difference. The API calculates the order and thequalified value using the rule selected in the request, so clients should display these results directly instead of reimplementing tournament tiebreakers.
Knockout stages return their configured number of legs, matches, scores, penalty-shootout results, match winners, aggregate tie scores, and the team that qualified from each tie. The response can therefore drive standings pages, tournament brackets, broadcast graphics, and live qualification views from the same endpoint.
The hierarchy is polymorphic:
- A
LEAGUE_STAGEcontainsgroups, and each group containsrankings. - A
KNOCKOUT_STAGEcontainsmatchesandqualifiers.
Typical Use Cases
- Display live group tables during a competition.
- Show which teams are currently qualified from each group.
- Build a full season progression view covering groups and knockout rounds.
- Populate knockout brackets with scores, penalties, winners, and qualifiers.
- Feed broadcast graphics with calculated standings and advancement status.
- Synchronize competition progression without reproducing ranking rules client-side.
Parameters
The API module. This value is fixed and must always be
api.The endpoint name. This value is fixed and must always be
SeasonGroupRank.The API version. Use
V2.The unique KoraStats season identifier. In this example,
1356 identifies AFCON Women — Morocco 2025.An optional group identifier retained for request compatibility. The current season-wide response includes all stages and all league groups, even when this parameter is supplied. Filter the returned
groups array by its id if only one group is required by the client.The ranking and qualification ruleset to apply. Use
wafcon_2026 for the WAFCON 2026 rules. The applied value is echoed in object.rule, this is supplied per season based on the competition calculation.The response language code. Use
en for English.The response format. Use
json.Your KoraStats API key. Keep this value secure and do not expose it in public or client-side code.
Endpoint
GEThttps://premium.korastats.pro/api.php
Code Examples
Response Example
Response Fields
Response Envelope
| Field | Type | Description |
|---|---|---|
result | boolean | Indicates whether the request completed successfully. |
title | string | Short response status title. |
message | string | Human-readable summary, including the number of stages returned. |
object | object | Season ranking and progression payload. |
Season Ranking Object
| Field | Type | Description |
|---|---|---|
object._type | string | Object discriminator. The value is SEASON_GROUP_RANK. |
object.id | integer | Unique season identifier. |
object.tournament | string | Tournament name. |
object.season | string | Season name. |
object.rule | string | Ranking and qualification ruleset applied by the API. |
object.stages | array(object) | Ordered list of league and knockout stages. |
Common Stage Fields
| Field | Type | Description |
|---|---|---|
object.stages[].id | integer | Unique stage identifier. |
object.stages[].stage | string | Stage display name. |
object.stages[].nature | string | Competition behavior. Values in this response are LEAGUE and KNOCKOUT. |
object.stages[]._type | string | Stage discriminator. Use this field to select the correct schema: LEAGUE_STAGE or KNOCKOUT_STAGE. |
League Stage and Group Fields
These fields are present when_type is LEAGUE_STAGE.
| Field | Type | Description |
|---|---|---|
object.stages[].groups | array(object) | Groups belonging to the league stage. |
groups[]._type | string | Object discriminator. The value is GROUP_RANK. |
groups[].id | integer | Unique group identifier. |
groups[].group | string | Group display name. |
groups[].rankings | array(object) | Ordered ranking rows. The array order and each row’s rank are calculated using the requested ruleset. |
Ranking Row
| Field | Type | Description |
|---|---|---|
rankings[].team | object | Ranked team summary. |
rankings[].team.id | integer | Unique team identifier. |
rankings[].team.name | string | Team name. |
rankings[].rank | integer | Current position within the group, starting from 1. |
rankings[].qualified | boolean | Whether the team currently qualifies under the selected ruleset. |
rankings[].points | integer | Current points total. |
rankings[].played | integer | Matches played. |
rankings[].won | integer | Matches won. |
rankings[].draw | integer | Matches drawn. |
rankings[].lost | integer | Matches lost. |
rankings[].goalscored | integer | Goals scored. |
rankings[].goalconceded | integer | Goals conceded. |
rankings[].goaldifference | integer | Goals scored minus goals conceded. |
Knockout Stage Fields
These fields are present when_type is KNOCKOUT_STAGE.
| Field | Type | Description |
|---|---|---|
object.stages[].legs | integer | Number of legs configured for each knockout tie in the stage. |
object.stages[].matches | array(object) | Matches belonging to the knockout stage. |
object.stages[].qualifiers | array(object) | Tie-level aggregate results and qualified teams. |
Knockout Match
| Field | Type | Description |
|---|---|---|
matches[].id | integer | Unique match identifier. |
matches[].round | integer | Leg or round number within the tie. |
matches[].datetime | string | null | Scheduled date and time in YYYY-MM-DD HH:mm:ss format. |
matches[].homeTeam | object | Home-team summary. |
matches[].awayTeam | object | Away-team summary. |
matches[].homeTeam.id | integer | Unique home-team identifier. |
matches[].homeTeam.name | string | Home-team name. |
matches[].awayTeam.id | integer | Unique away-team identifier. |
matches[].awayTeam.name | string | Away-team name. |
matches[].score | object | Current or final match score, excluding the penalty shootout. |
matches[].score.home | integer | null | Home-team score. |
matches[].score.away | integer | null | Away-team score. |
matches[].penaltyShootout | object | null | Penalty-shootout score. Returns null when no shootout took place or no result is available. |
matches[].penaltyShootout.home | integer | Home-team penalties scored. |
matches[].penaltyShootout.away | integer | Away-team penalties scored. |
matches[].winner | object | null | Match winner after accounting for a penalty shootout when applicable. May be null before a winner is known. |
matches[].winner.id | integer | Unique winning-team identifier. |
matches[].winner.name | string | Winning-team name. |
Qualifier and Aggregate Fields
Each qualifier object represents one knockout tie.| Field | Type | Description |
|---|---|---|
qualifiers[].aggregate | array(object) | Aggregate score entries for the two teams in the tie. Penalty-shootout goals are not added to these scores. |
qualifiers[].aggregate[].team | object | Team represented by the aggregate entry. |
qualifiers[].aggregate[].team.id | integer | Unique team identifier. |
qualifiers[].aggregate[].team.name | string | Team name. |
qualifiers[].aggregate[].score | integer | null | Team’s aggregate score across the configured legs. |
qualifiers[].qualifiedTeam | object | null | Team that advances from the tie after aggregate and penalty-shootout resolution. May be null while the tie is unresolved. |
qualifiers[].qualifiedTeam.id | integer | Unique qualified-team identifier. |
qualifiers[].qualifiedTeam.name | string | Qualified-team name. |
Treat
object.stages[]._type as the schema discriminator. A league stage and a knockout stage intentionally expose different child arrays.The API already applies the requested tournament rules to
rank and qualified. Consumers should not independently reorder the returned rankings unless they are intentionally implementing a different ruleset.