TR EN

health_public

A lightweight, public-facing health check endpoint used to monitor if the API database connection is alive. Recommended for UptimeRobot, Pingdom, or Load Balancers.

GET /api/health_public.php

Example Request

GET /api/health_public.php

Success Response (200 OK)

{
  "ok": true,
  "status": "healthy",
  "time": "2026-07-24T18:00:00+03:00"
}

LiveScoreJSON API Guide

RESTful JSON API for soccer data. Matches, live scores, statistics, squads, transfers and more.

39
Endpoints
4.4M+
Matches
776K+
Players/People
62K+
Teams

Overview

The API operates via HTTP GET requests. All responses are in JSON format and returned in a hierarchical structure.

Base URL
https://livescorejson.com/api/
Protocol
HTTPS GET — All parameters are sent via query string
Response Format
JSON (UTF-8), standard envelope structure (meta + data)
Authentication
Authorization: Bearer or X-API-Key is required in every request

Soccer data is organized in the following hierarchical structure:

Area (Region/Country)
 └─ Competition (League/Cup)
     └─ Season (Season)
         └─ Round (Round/Week)
             └─ Group (Subgroup — optional)
                 └─ Match (Match)
                     ├─ Events (Goals, Cards, Substitutions...)
                     ├─ Statistics (Possession, Shots...)
                     └─ Formations (Formation)

Match endpoints return this hierarchy as nested JSON: competition → season → round → match

GET /api/{endpoint}.php?param1=val1&param2=val2
Authorization: Bearer ljson_live_...

All endpoint parameters are sent via query string. Authentication is performed with the Authorization: Bearer or X-API-Key header.

Username/password flow via query string is not supported for commercial client integrations.
Commercial SaaS integrations use Authorization: Bearer ljson_live_... or X-API-Key headers.
Quota response headers: X-Plan-Code, X-RateLimit-Limit-Minute, X-RateLimit-Remaining-Minute, X-RateLimit-Reset, X-Usage-Unit-Cost, X-Usage-Units-Current-Period. 429 and Retry-After are returned on limit exceeded.

Authentication

A commercial API key must be sent as a header in every API request. Username/password flow via query string is not supported for external customer integrations.

HeaderExampleDescription
AuthorizationBearer ljson_live_...Recommended authentication method
X-API-Keyljson_live_...Alternative for clients where adding headers is easy
API key is a secret value; do not embed it in frontend code. If usage from the browser is required, use origin/IP allowlist and restricted scope.

Quick Start

Make your first call in any language. Replace ljson_live_... with your API key. The same pattern works for all endpoints — only the endpoint name and query parameters change.

cURL

curl -s "https://livescorejson.com/api/get_matches_live.php?lang=en" \
  -H "Authorization: Bearer ljson_live_..."

JavaScript (fetch)

const res = await fetch(
  "https://livescorejson.com/api/get_matches_live.php?lang=en",
  { headers: { Authorization: "Bearer ljson_live_..." } }
);
const json = await res.json();
console.log(json.data);

Python (requests)

import requests
r = requests.get(
    "https://livescorejson.com/api/get_matches_live.php",
    params={"lang": "en"},
    headers={"Authorization": "Bearer ljson_live_..."},
)
print(r.json()["data"])

PHP (cURL)

$ch = curl_init("https://livescorejson.com/api/get_matches_live.php?lang=en");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer ljson_live_..."]);
$data = json_decode(curl_exec($ch), true);
print_r($data["data"]);
Prefer our official SDKs and Postman collection (see SDKs & Tools) — they handle auth, the base URL and the WebSocket token flow for you.

Response Format

All responses are returned in the following envelope structure:

{
  "version": "3.0",
  "sport": "soccer",
  "lang": "en",
  "last_generated": "2026-04-16 12:34:56",
  "method": {
    "method_id": "2",
    "name": "get_matches",
    "parameter": [
      { "name": "type", "value": "season" },
      { "name": "id", "value": "24922" }
    ]
  },
  "data": {
    "competition": [ ... data ... ]
  }
}
FieldDescription
versionAPI version (3.0)
sportAlways soccer
last_generatedTime the response was generated (Europe/Istanbul, +03:00, YYYY-MM-DD HH:MM:SS)
methodCalled method info and sent parameters
dataData object changing according to the endpoint (competition, area, team etc.)
Measuring data freshness: live endpoints (get_matches_live, get_matches_live_updates) return an X-Data-Event-Time response header — the UTC time the underlying data was last updated at source. Measure true staleness as your current UTC time − X-Data-Event-Time. (last_generated is the response build time in Europe/Istanbul, +03:00.)

Error Codes

The API uses standard HTTP status codes.

CodeStatusDescription
200OKRequest successful, data returned
400Bad RequestMissing or invalid parameter
401UnauthorizedMissing or invalid API key
403ForbiddenAccount disabled or subscription expired
500Server ErrorServer-side error

Response in case of error:

{ "error": "Missing parameter: type" }

Entity ID Stability

Player, team, competition and season IDs are globally stable and persistent — they do not change across teams, seasons or competitions. You never have to build a mapping or normalization layer: one ID identifies the same entity everywhere in the API, so you can safely store it as a foreign key in your own database.

IDStable acrossUse it as
player_idevery club, season and competition the player appears ina single key for a player's full career, stats and transfers
team_idleague, cup and all seasonsa permanent key for a club in any context
competition_idall of its seasonsa permanent key for a league/cup
season_idmatches, tables, squads and every related endpointa permanent key for a single season

Proof: one player_id, the whole career

A single player_id passed to get_career returns every club, competition and season the player has played in — the same ID, never re-scoped per team or season:

GET /api/get_career.php?type=player&id={player_id}
→ data.person.career[] — many rows spanning multiple
  team_id / competition_id / season_id, all under the same player_id

The same player_id also works directly in get_player_statistics, get_transfers and get_squads — independently of any team or season filter.

IDs are persistent and safe to use as foreign keys. (Rare entity merges in deep historical data are handled on a best-effort basis.)

Asset URL Fields

Team, player, venue, and competition assets are added to supported canonical API objects as public HTTPS URLs.

FieldRelated IDContent
team_logo_urlteam_idTeam logo
player_photo_urlperson_id / player_idPlayer photo
venue_photo_urlvenue_idVenue photo
competition_logo_urlcompetition_idLeague or cup logo
Asset fields are string|null. The field is null when no related asset is available. Raw detail components and technical staff are excluded from player photo fields. Matches use team_A_logo_url/team_B_logo_url; transfers use from_team_logo_url/to_team_logo_url. The venue's legacy photo field contains source/credit text and is not an image URL.

SDKs & Tools

Official thin SDKs (zero dependencies) and a ready-to-import Postman collection covering every endpoint.

Postman Collection
Download .json — import into Postman, set baseUrl and bearerToken, call every endpoint.
JavaScript (ESM)
Browser: livescorejson.v3.0.5.js · Node: livescorejson.v3.0.5.mjs — REST calls work in modern browsers and Node 18+; the WebSocket helper needs a browser or Node 22+.
Python
livescorejson.py — Python 3.7+, standard library only (no pip install).
OpenAPI Spec
openapi.json — OpenAPI 3.0.3; generate a client in any language with openapi-generator.
Embeddable Widgets
Widget builder — drop-in live standings & scores via <iframe>, no API key in the page. Light/dark, multi-language.

JavaScript (ESM) SDK

import { LiveScoreJSON } from "./livescorejson.v3.0.2.mjs";
const api = new LiveScoreJSON({ apiKey: "ljson_live_..." });
const live = await api.getMatchesLive({ lang: "en" });
console.log(live.data);

Python SDK

from livescorejson import LiveScoreJSON
api = LiveScoreJSON(api_key="ljson_live_...")
print(api.get_matches_live(lang="en")["data"])

get_areas

Returns the list of regions and countries. Geographical regions that matches, teams, and leagues are connected to.

GET /api/get_areas.php

Parameters

ParameterTypeRequiredDescription
area_idintOptionalA specific region. If not provided, all regions are returned.
langstringOptionalLanguage code

Response Structure

data → area[]
FieldTypeDescription
area_idintRegion ID
namestringRegion/country name (English)
parent_area_idint|nullParent region/continent ID (e.g. Europe, Asia)
countrycodestringISO country code (2/3 letters)

Example Request

GET /api/get_areas.php?area_id=221

get_competitions

Returns the list of leagues and cups. Can be filtered by region or type.

GET /api/get_competitions.php

Parameters

ParameterTypeRequiredDescription
area_idintOptionalFilter by region
typestringOptionalType filter (e.g., league, cup)
langstringOptionalLanguage code

Response Structure

data → competition[]
FieldTypeDescription
competition_idintLeague/cup ID
competition_logo_urlstring|nullPublic HTTPS URL of the league/cup logo
namestringLeague name
soccertypestringSoccer type
teamtypestringTeam type (club/national)
display_orderintDisplay order
typestringType (league, cup, ...)
formatstringFormat
area_idintConnected region ID
area_namestringRegion name

Example Request

GET /api/get_competitions.php?area_id=221

get_seasons

Returns the seasons of a competition. Comes wrapped nested with competition info.

GET /api/get_seasons.php

Parameters

ParameterTypeRequiredDescription
competition_idintOptionalFilter by competition. If not provided, all seasons.
activestringOptionalyes = only active seasons (end_date ≥ today)

Response Structure

data → competition[] → season[]
FieldTypeDescription
season_idintSeason ID
namestringSeason name (e.g.: "2025/2026")
start_datedateStart date
end_datedateEnd date
service_levelstringData service level

Example Request

GET /api/get_seasons.php?competition_id=8&active=yes

get_rounds

Returns the rounds of a season (week, elimination round etc.).

GET /api/get_rounds.php

Parameters

ParameterTypeRequiredDescription
season_idintOptionalSeason ID
typestringOptionalFilter type
idintOptionalFilter ID
Send round_id or season_id. Alternatively, send type=round|season together with id.

Response Structure

data → competition[] → season[] → round[]
FieldTypeDescription
round_idintRound ID
namestringRound name
start_datedateStart date
end_datedateEnd date
typestringRound type
ordermethodstringRank method
groupsstringGroup info
has_outgroup_matchesbooleanAny non-group matches

Example Request

GET /api/get_rounds.php?season_id=24922

get_groups

Returns the subgroups in a round or season (like Champions League groups).

GET /api/get_groups.php

Parameters

ParameterTypeRequiredDescription
round_idintOptionalFilter by round
season_idintOptionalFilter by season (covers all rounds)
typestringOptionalFilter type
idintOptionalFilter ID

Response Structure

data → group[]
FieldTypeDescription
group_idintGroup ID
namestringGroup name (e.g.: "Group A")
round_idintConnected round ID

get_teams

Returns team information. Can be filtered by region, season, or competition.

GET /api/get_teams.php

Parameters

ParameterTypeRequiredDescription
typestringOptionalarea | season | competition
idintOptionalFilter ID according to type
team_idintOptionalGet a single team by ID
area_idintOptionalFilter teams directly by area/country ID
statusstringOptionalactive | inactive
soccertypestringOptionaldefault | women
teamtypestringOptionaldefault | u21 | u19
citystringOptionalFilter by city name

Response Structure

data → team[]
FieldTypeDescription
team_idintTeam ID
team_logo_urlstring|nullPublic HTTPS URL of the team badge/logo
club_namestringClub name
short_namestringShort name
countrystringCountry name
citystring|nullCity where the club is based
foundedstring|nullFoundation year
urlstring|nullOfficial website URL
telephonestring|nullPhone number
venue_idint|nullHome stadium venue ID
venue_namestring|nullHome stadium name
venue_citystring|nullHome stadium city
venue_capacitystring|nullHome stadium spectator capacity
venue_surfacestring|nullHome stadium pitch surface (grass, artificial, etc.)
venue_addressstring|nullHome stadium street address
venue_photo_urlstring|nullPublic HTTPS URL of the stadium photo
statusstringClub status (active, etc.)
soccertypestringSoccer type (default, women, etc.)
teamtypestringTeam type (default, u21, etc.)

Example Request

GET /api/get_teams.php?type=season&id=24922

get_venues

Returns stadium information.

GET /api/get_venues.php

Parameters

ParameterTypeRequiredDescription
typestringOptionalarea | season
idintOptionalFilter ID according to type
venue_idintOptionalSingle stadium by venue ID
team_idintOptionalHome stadium of a specific team
area_idintOptionalFilter stadiums by area/country ID
citystringOptionalFilter by city
surfacestringOptionalFilter by pitch surface (e.g. grass, artificial)

Response Structure

data → venue[]
FieldTypeDescription
venue_idintVenue ID
venue_photo_urlstring|nullPublic HTTPS URL of the venue photo
namestringVenue name
citystring|nullCity
capacityint|nullSpectator capacity
surfacestring|nullPitch surface (grass, artificial, etc.)
addressstring|nullStreet address
openedstring|nullYear opened
latitude / maps_geocode_latitudefloat|nullGeographic latitude
longitude / maps_geocode_longitudefloat|nullGeographic longitude
country_code / area_namestring|nullCountry code / region name

get_matches

Returns matches in a hierarchical structure. Most commonly used endpoint. Offers various filtering options.

GET /api/get_matches.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredarea | season | round | group | match | team
idintRequiredID based on selected type
start_datedateOptionalStart date (YYYY-MM-DD)
end_datedateOptionalEnd date (YYYY-MM-DD)
statusstringOptionalMatch status: Played | Playing | Fixture | Postponed | Cancelled
gameweekintOptionalGameweek / matchday number
round_idintOptionalFilter by round within season/team
group_idintOptionalFilter by group within tournament
winnerstringOptionalFilter by outcome: team_A | team_B | draw
detailedstringOptionalyes (default, includes events) | no
home_only / away_onlystringOptionalyes (when type=team)
iddaastringOptionalyes to attach betting odds

Response Structure

data → competition[] → season[] → round[] → match[]
FieldTypeDescription
match_idintMatch ID
date_utcdateMatch date (UTC)
time_utctimeMatch time (UTC)
statusstringFixture | Playing | Played | Postponed | Cancelled | Suspended
team_A_idintHome team ID
team_B_idintAway team ID
team_A_logo_url / team_B_logo_urlstring|nullHome and away team logo URLs
team_A_namestringHome team name
team_B_namestringAway team name
fs_A / fs_BintFull time score
hts_A / hts_BintHalf time score
ets_A / ets_BintExtra time score
ps_A / ps_BintPenalty score

There can be 6 event groups under each match:

GroupCodesDescription
lineupsLStarting 11 lineup
lineups_benchSUBSubstitute players
goalsG, PG, OGGoals (normal, penalty, own goal)
substitutionsSI, SOPlayer substitutions (in/out)
bookingsYC, Y2C, RCCards (yellow, double yellow, red)
penalty_shootoutPSG, PSMPenalty shootouts (goal/missed)

Each event: event_id, code, person, person_id, player_photo_url, team_id, team_logo_url, minute, minute_extra, shirtnumber

An iddaa object is added when odds are available. Odds are refreshed periodically.

FieldTypeDescription
iddaa.mbsintMinimum Bet Count (1–5)
iddaa.fetched_atdatetimeLast update time (UTC)
iddaa.markets[]arrayList of bet markets (~50 markets)

Each market object:

FieldTypeDescription
MarketType.IdintMarket type ID
MarketType.NamestringMarket name (e.g.: Match Result, Double Chance, 2.5 Goal Under/Over)
MBSintMBS for this market
Outcomes[]arrayOutcome options
Outcomes[].OutcomeNamestringOption name (e.g.: 1, X, 2, Under, Over)
Outcomes[].OddfloatOdd value

Common market types: Match Result, Double Chance, First Half/Match Result, 2.5 Goal Under/Over, Both Teams to Score, Handicap Match Result, Corner Under/Over, Card Under/Over, Odd/Even, 1st Half Result etc.

The iddaa field is not returned for matches without betting odds. Betting odds are only available for matches in the official betting program.

Example Requests

// All Premier League 2025/2026 matches
GET /api/get_matches.php?type=season&id=24922

// Manchester United home matches (January-March)
GET /api/get_matches.php?type=team&id=362&home_only=yes&start_date=2026-01-01&end_date=2026-03-31

// Single match (without events)
GET /api/get_matches.php?type=match&id=3456789&detailed=no

// Single match + Betting odds
GET /api/get_matches.php?type=match&id=4948913&iddaa=yes

get_matches_live  Live

Returns matches of a specific day with live scores. Updated at 30-second intervals.

GET /api/get_matches_live.php

Parameters

ParameterTypeRequiredDescription
dateyyyy-mm-ddOptionalDate. Default: today.
detailedstringOptionalyes (default) | no
now_playingstringOptionalyes = only currently playing
matchtypestringOptionallive | fixture | all
sortstringOptionalcustom = move leagues to the top in competition_order order
competition_orderstringOptionalComma-separated competition_id list. The first 50 valid unique IDs are used; unspecified leagues retain their existing order.
iddaastringOptionalyes = include available betting odds

Response Structure

data → competition[] → season[] → round[] → match[]

Response structure is the same as get_matches.

Live scores are updated at 30-second intervals. Be careful not to exceed this interval when polling.

For betting odds structure, see the Betting Odds Structure accordion in the get_matches section.

Example Requests

// All currently playing live matches for today
GET /api/get_matches_live.php?date=2026-04-16&now_playing=yes

// Today's matches + Betting odds
GET /api/get_matches_live.php?date=2026-04-16&iddaa=yes

// Move Süper Lig, Bundesliga and Premier League to the top in this order
GET /api/get_matches_live.php?sort=custom&competition_order=19,9,8

get_matches_live_updates  Delta

Returns matches updated after the specified time. Ideal for bandwidth saving.

GET /api/get_matches_live_updates.php

Parameters

ParameterTypeRequiredDescription
last_updatedyyyy-mm-dd hh:mm:ssRequiredLast update time. Matches that changed after this time are returned.

Response Structure

data → next_since  +  data → competition[] → season[] → round[] → match[]
FieldTypeDescription
data.next_sinceyyyy-mm-dd hh:mm:ssServer-authoritative cursor. Pass this exact value as last_updated on your next poll — no client-side clock math, no skipped or double-fetched updates. Also returned as the X-Next-Since header.

Polling Loop

First request: send the start of the day (or any past time). Then keep passing the next_since the server returns:

# 1) first poll
GET /api/get_matches_live_updates.php?last_updated=2026-04-16 00:00:00
→ data.next_since = "2026-04-16 15:30:12"

# 2) next poll — reuse next_since, no clock math on your side
GET /api/get_matches_live_updates.php?last_updated=2026-04-16 15:30:12

Bandwidth Saving (conditional requests)

Every response carries an ETag. Send it back as If-None-Match; when nothing changed since your last poll the API returns 304 Not Modified with an empty body — so idle polls cost almost nothing.

GET /api/get_matches_live_updates.php?last_updated=2026-04-16 15:30:12
If-None-Match: "<etag-from-previous-response>"

← 304 Not Modified   (no body)
Combine next_since + If-None-Match for the cheapest possible live polling. For true real-time push (no polling at all), use the WebSocket channel.

get_aggregates

Returns the verified winner of a knockout round or multi-match tie. This is separate from a single match's winner field.

GET /api/get_aggregates.php

Parameters

ParameterTypeRequiredDescription
idintRequiredMatch ID. The result contains at most one aggregate record.

Response Structure

data → aggregate[]
FieldTypeDescription
match_idstringThe match linked to the aggregate record.
round_idstring|nullThe match's round ID.
aggregate_winner_statusknown | draw | unknownknown is a verified team; draw is a tie; unknown is unresolved or unverifiable.
aggregate_winner_team_idstring|nullCanonical team ID only when the verified winner is one of the match participants.
aggregate_winner_team_namestring|nullCanonical team name only when status is known.
Raw winner text is never exposed. Invalid, orphaned or non-participant team IDs return unknown with both team fields set to null.

Example Request

GET /api/get_aggregates.php?id=5060309

get_runningball_matches  Live

Returns matches that are currently in Playing status.

GET /api/get_runningball_matches.php

Parameters

ParameterTypeRequiredDescription
dateyyyy-mm-ddOptionalDeprecated; accepted for backward compatibility but does not filter the result.

Response Structure

data → competition[] → season[] → round[] → match[]

The match structure is the same as get_matches_live; only matches currently being played are included.

Example Request

GET /api/get_runningball_matches.php

get_match_statistics

Returns detailed statistics of a match (possession, shots, corners etc.).

GET /api/get_match_statistics.php

Parameters

ParameterTypeRequiredDescription
idintRequiredMatch ID
detailedstringOptionalDetailed statistics (yes/no)
componentsstringOptionalComma separated components

Response Structure

data → competition[] → ... → match → data[]
FieldTypeDescription
typestringStatistic type (possession, shots_on_target, corners... Exact 36-key schema is guaranteed)
value_team_AstringHome value
value_team_BstringAway value

Example Request

GET /api/get_match_statistics.php?id=3456789

get_match_formations

Returns the formations and match info (referee, venue, manager).

GET /api/get_match_formations.php

Parameters

ParameterTypeRequiredDescription
idintRequiredMatch ID

Response Structure

data → competition[] → ... → match → formation[] + matchinfo[]
FieldTypeDescription
team_idintTeam ID
person_idstringPlayer ID
player_photo_urlstring|nullPublic HTTPS URL of the player photo
position_xintPitch X coordinate
position_yintPitch Y coordinate
position_namestringPosition name (GK, DF, MF, FW)

get_match_commentary

Returns the timeline commentary for a match.

GET /api/get_match_commentary.php

Parameters

ParameterTypeRequiredDescription
idintRequiredMatch ID

Response Structure

data → competition[] → season[] → round[] → match[] → commentary[]
FieldTypeDescription
minute / minute_extra / secondstring|nullMatch time of the commentary
periodstring|nullMatch period
commentstringCommentary text
typestring|nullCommentary type
goal / important / is_oldstring|nullCommentary flags
last_updatedstring|nullLast update time

Example Request

GET /api/get_match_commentary.php?id=4891367

get_match_extra

Returns extra info about the match: venue, attendance, weather, referee.

GET /api/get_match_extra.php

Parameters

ParameterTypeRequiredDescription
idintRequiredMatch ID
includestringOptionalInclude extra data (e.g. commentary)
componentsstringOptionalComma separated components

Response Structure

data → competition[] → ... → match → matchinfo
FieldTypeDescription
match_idintMatch ID
venue_idint|nullVenue ID
venue_namestring|nullVenue name
venue_citystring|nullVenue city
venue_capacitystring|nullVenue capacity
venue_addressstring|nullVenue street address
venue_surfacestring|nullVenue pitch surface (grass, artificial, etc.)
venue_openedstring|nullVenue opening year
venue_photostring|nullVenue photo asset / reference
referee_person_id / referee_nameint / stringMain referee info
coach_a_id / coach_a_nameint / stringTeam A coach info
coach_b_id / coach_b_nameint / stringTeam B coach info
attendanceint|nullOfficial spectator attendance
formation_a / formation_bstring|nullTactical formations (e.g. 4-2-3-1)

get_match_editorials

Returns available editorial content for a match.

GET /api/get_match_editorials.php

Parameters

ParameterTypeRequiredDescription
idintRequiredMatch ID
langstringOptionalLanguage code for the response envelope; default en

Response Structure

data → editorial[]

Records are returned as stored. The editorial list is empty when no content is available.

Example Request

GET /api/get_match_editorials.php?id=4891367&lang=en

get_tables

Returns the standings/league table. By season or round.

GET /api/get_tables.php

Parameters

ParameterTypeRequiredDescription
idintRequiredSeason ID or Round ID
typestringOptionalseason (default) | round
round_idintOptionalFilter by round within season
group_idintOptionalFilter by tournament group
team_idintOptionalFilter standing for a specific team

Response Structure

data → competition[] → season[] → round[] → resultstable → ranking[]
FieldTypeDescription
rankintRank
team_idintTeam ID
club_namestringTeam name
matches_totalintMatches played
matches_wonintWins
matches_drawintDraws
matches_lostintLosses
goals_prointGoals for
goals_againstintGoals against
pointsintPoints

Example Request

GET /api/get_tables.php?type=season&id=24922

get_tables_live  Live

Live standings. Takes ongoing matches into account to calculate how the table would look if matches ended with current scores.

GET /api/get_tables_live.php

Parameters

ParameterTypeRequiredDescription
typestringOptionalseason (default) | round
idintRequiredseason_id or round_id

Response Structure

The response structure is the same as get_tables.

Rankings are finalized automatically when matches finish. If no live matches, it returns the same result as get_tables.

get_tables_cumulative

Returns a season's accumulated standings across rounds.

GET /api/get_tables_cumulative.php

Parameters

ParameterTypeRequiredDescription
idintRequiredSeason ID
typestringOptionalDeprecated; accepted but does not change the result.

Response Structure

data → competition[] → season[] → round[] → resultstable[] → ranking[]

id is always treated as a season ID. Ranking fields are the same as get_tables.

Example Request

GET /api/get_tables_cumulative.php?id=27218

get_betting_statistics

Returns aggregate betting trends for a season or competition; this is not a match-odds endpoint.

GET /api/get_betting_statistics.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredseason | competition
idintRequiredSeason or competition ID
marketstringOptionalMarket-code filter

Response Structure

data → betting_statistic[]
FieldTypeDescription
season_idstringSeason ID
marketstringMarket code
category_code / subcategory_codestring|nullCategory codes
outcome_codestring|nullOutcome code
outcome_value / outcome_percentagestring|nullAggregate outcome value and percentage
last_updatedstring|nullLiveScoreJSON record-update time, not the source event time

Example Request

GET /api/get_betting_statistics.php?type=season&id=25828

get_player_statistics  Real-Time Calculation

Player statistics (goals, assists, cards). Calculated in real-time from match events, no caching.

GET /api/get_player_statistics.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredseason | round
idintRequiredseason_id or round_id
team_idintOptionalFilter by team
player_idintOptionalSingle player
limitintOptionalTop N players (e.g. 10)

Statistic Types

stat_typeScopeDescription
goalsG + PGNormal + penalty goals (excluding own goals)
assistsASAssists
yellow_cardsYC + Y2CYellow + double yellow cards
red_cardsRCRed cards

Response Structure

data → competition[] → season[] → player_statistic[]
FieldTypeDescription
person_idstringPlayer ID
player_photo_urlstring|nullPublic HTTPS URL of the player photo
personstringPlayer name
team_idintTeam ID
team_namestringTeam name
stat_typestringStatistic type
countintCount
rankintRank
In case of transfer, the player is assigned to the team where they have the most events.

Example Request

// Premier League top scorers (Top 10)
GET /api/get_player_statistics.php?type=season&id=24922&limit=10

get_team_statistics

Returns detailed season-based statistics of a team.

GET /api/get_team_statistics.php

Parameters

ParameterTypeRequiredDescription
team_idintRequiredTeam ID
season_idintOptionalFilter by season
formstringOptionalyes: only form-*; no: only regular types. Omit for all.

Response Structure

data → team → team_statistic[]
FieldTypeDescription
stat_typestringStatistic type (total_matches, home_won_percent, avg_goals...)
stat_valuestringValue
season_idstring|nullSeason ID

Example Request

GET /api/get_team_statistics.php?team_id=362&season_id=24922

get_head2head  Real-Time Calculation

Calculates head-to-head match statistics between two teams. Calculated in real-time from match data.

GET /api/get_head2head.php

Parameters

ParameterTypeRequiredDescription
team_A_idintConditionalCanonical parameter for the first team
team_B_idintConditionalCanonical parameter for the second team
team1_idintConditionalBackward-compatible alternative to team_A_id
team2_idintConditionalBackward-compatible alternative to team_B_id
competition_idintOptionalFilter by competition
start_dateyyyy-mm-ddOptionalStart date filter
end_dateyyyy-mm-ddOptionalEnd date filter
One parameter is required for each team: team_A_id or team1_id; team_B_id or team2_id. When both forms are sent, the canonical parameter wins.

Response Structure

data → head_2_head[]

Matches played, win/draw distribution, home/away performance, goal statistics.

Example Request

// Manchester United vs Liverpool
GET /api/get_head2head.php?team_A_id=362&team_B_id=364

get_predictions  Statistical Model

Match outcome probabilities (1X2), over/under 2.5, both-teams-to-score and the most likely scorelines, computed by our own statistical model (Poisson on recent team form + league home/away averages). An informational forecast, not betting advice.

This is a statistical model (recent form, Poisson) — not an xG/ML product and not sourced predictions. Backtested on 210K matches (51.7% 1X2 accuracy, beating the home-bias baseline). Use it as a probabilistic signal, not a guarantee.
GET /api/get_predictions.php

Parameters

ParameterTypeRequiredDescription
match_idintRequiredThe match to predict. Both teams need at least 6 prior played matches.

Response Structure

data → prediction
FieldTypeDescription
resultobjecthome_win / draw / away_win probabilities (sum to 1)
over_under_2_5objectover / under 2.5 goals probabilities
bttsobjectBoth teams to score yes / no probabilities
projected_goalsobjectModel goal expectation per side (Poisson λ — not xG)
likely_scoresarrayTop 5 most likely scorelines with probabilities
disclaimerstringModel + not-betting-advice note

Example Request

GET /api/get_predictions.php?match_id=4350869

get_rankings

Returns team rankings filtered by type and publication date.

GET /api/get_rankings.php

Parameters

ParameterTypeRequiredDescription
typestringOptionalranking_type filter; currently available type: fifa
yearintOptionalFilter by year
monthintOptionalFilter by month

Response Structure

data → ranking[]
FieldTypeDescription
rankstringRank
area_idstring|nullCountry ID
team_idstring|nullNational team ID
pointsstring|nullPoints
ranking_typestringRanking type
ranking_datestringRanking publication date

Example Request

GET /api/get_rankings.php?type=fifa&year=2026&month=1

get_squads

Returns team squads. Season-based player list.

GET /api/get_squads.php

Parameters

ParameterTypeRequiredDescription
idintOptionalSeason ID (e.g. 27549)
team_idintOptionalTeam ID (e.g. 10471)
positionstringOptionalGoalkeeper | Defender | Midfielder | Attacker
rolestringOptionalPlayer | Coach
typestringOptionalseason (default)

Response Structure

data → team[] → person[]
FieldTypeDescription
person_idintPlayer ID
player_photo_urlstring|nullPublic HTTPS URL of the player photo
namestringFull name
first_namestringFirst name
last_namestringLast name
nationality_idintNationality (area_id)
date_of_birthdateDate of birth
heightintHeight (cm)
weightintWeight (kg)
footstringFoot (left/right/both)
shirtnumberintShirt number
rolestringPosition (Goalkeeper, Defender, Midfielder, Attacker)
statusstringSquad status (active, on_loan...)
appearances / goals / assistsstring|nullSeason appearance, goal and assist totals
minutes_played / substituted_instring|nullMinutes played and substituted-in totals
yellow_cards / red_cardsstring|nullYellow- and red-card totals

Example Request

GET /api/get_squads.php?id=24922&team_id=362

get_squads_changes  Delta

Returns squad changes. Records updated after the specified time.

GET /api/get_squads_changes.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredmatch | season
idintRequiredmatch_id or season_id
last_updatedyyyy-mm-dd hh:mm:ssOptionalDelta time

Response Structure

The response structure is the same as get_squads. Only updated records are returned.

get_career

Returns player or team career statistics.

GET /api/get_career.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredplayer | team
idintRequiredperson_id or team_id

Response Structure

data → person|team → career[]
FieldTypeDescription
season_idintSeason ID
competition_idintCompetition ID
team_idintTeam ID
appearancesintAppearances
goalsintGoals
assistsintAssists

Example Request

// Career statistics of Mohamed Salah
GET /api/get_career.php?type=player&id=174352

get_transfers

Returns transfer records. Can be filtered by season, team, or player. Supports pagination.

GET /api/get_transfers.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredteam | player | season
idintRequiredID based on selected type
start_datedateOptionalFilter transfers after date (YYYY-MM-DD)
end_datedateOptionalFilter transfers before date (YYYY-MM-DD)
yearintOptionalFilter transfers by year (e.g. 2024)
transfer_typestringOptionalLoan | Transfer | Free transfer
limitintOptionalNumber of records (default 20, max 100)
offsetintOptionalStarting point (pagination)

Response Structure

data → transfer[]
FieldTypeDescription
idintTransfer record ID
person_idintPlayer ID
person_namestringPlayer name
from_team_idint|nullOld team ID
from_team_namestring|nullOld team name
to_team_idint|nullNew team ID
to_team_namestring|nullNew team name
transfer_datedateTransfer date
transfer_type / typestring|nullTransfer type (Loan, Free transfer, Transfer, etc.)
amountstring|nullTransfer fee / compensation amount
proceededstring|nullTransfer status / confirmation

get_players

Returns profiles whose type is exactly player. Staff and internal fields are not included in the response.

GET /api/get_players.php

Parameters

ParameterTypeRequiredDescription
idintOptionalSingle player ID
cursorintOptionalKeyset pagination cursor (last seen person_id)
limitintOptionalPage size (1-500, default 100)
area_id / country_idintOptionalFilter players by nationality/country ID
team_idintOptionalFilter players currently/historically at team

Response Structure

data → player[] + pagination
FieldTypeDescription
person_idintPlayer ID
typestringAlways player
first_namestring|nullFirst name
middle_namestring|nullMiddle name
last_namestring|nullLast name
namestring|nullDisplay name
nationality_area_idstring|nullNationality area ID
nationalitystring|nullNationality
date_of_birthdate|nullDate of birth
place_of_birthstring|nullPlace of birth
country_of_birth_idstring|nullBirth country ID
country_of_birthstring|nullBirth country
footstring|nullPreferred foot
statusstring|nullPlayer status
heightstring|nullHeight (cm)
weightstring|nullWeight (kg)
international_capsstring|nullInternational appearances
international_goalsstring|nullInternational goals
player_photo_urlstring|nullPlayer photo URL

Pagination

FieldTypeDescription
limitintApplied page limit
has_morebooltrue when another page is available
next_cursorstring|nullCursor for the next request

Example Requests

// Single player profile by ID
GET /api/get_players.php?id=119

// Next player catalog page using the cursor
GET /api/get_players.php?cursor=119&limit=100

get_injuries

Returns injury records. 6 different filter types.

GET /api/get_injuries.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredseason | round | competition | player | team | match
idintRequiredID based on selected type

Response Structure

data → injury[]
FieldTypeDescription
person_idintPlayer ID
person_full_namestringPlayer full name
team_idintTeam ID
expected_end_datedateExpected end date
statusstringStatus
injury_typestringInjury type

get_suspensions

Returns suspended players (red card or card accumulation).

GET /api/get_suspensions.php

Parameters

ParameterTypeRequiredDescription
idintRequiredFilter ID
typestringOptionalseason | team | match | player

Response Structure

data → suspension[]
FieldTypeDescription
idintSuspension record ID
person_id / person_name / person_full_nameint / stringSuspended player/coach info
team_id / team_name / team_full_nameint / stringAssociated team info
season_id / round_id / match_idint|nullAssociated season, round and match ID
suspended_matchesint|nullNumber of suspended matches
suspension_typestring|nullType of suspension (matches, period, etc.)
start_date / end_datedate|nullSuspension date range
descriptionstring|nullOfficial reason / description of suspension

get_players_abroad

Returns players from a country playing abroad.

GET /api/get_players_abroad.php

Parameters

ParameterTypeRequiredDescription
idintConditionalCountry/area ID; canonical parameter
area_idintConditionalBackward-compatible alternative to id
Send id or area_id. When both are sent, id wins.

Response Structure

data → player[]
FieldTypeDescription
person_idintPlayer ID
player_photo_urlstring|nullPublic HTTPS URL of the player photo
namestringPlayer name
nationality_area_idintNationality
team_idstringCurrent team ID
team_namestringCurrent team name
team_area_idintTeam country ID
team_area_namestringTeam country name

Example Request

// Turkish players abroad
GET /api/get_players_abroad.php?id=221

get_referees

Returns main-referee assignments by match, round, or season, with one row per match. This endpoint does not provide person profiles or nationality; assistant officials remain available from match-detail endpoints.

GET /api/get_referees.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredmatch | round | season
idintRequiredPositive ID for the selected type (maximum 2147483647)

Response Structure

data → referee[]
FieldTypeDescription
match_idstringMatch ID for this assignment
round_idstringRound ID
season_idstringSeason ID
referee_person_idstringMain-referee identifier
referee_namestring|nullMain-referee name; null when unknown

Each row is one match's main-referee assignment. When no assignment exists, referee is an empty array. The referee and area filters are not supported.

Example Request

GET /api/get_referees.php?type=match&id=4661321

get_trophies

Returns trophy and award records.

GET /api/get_trophies.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredcompetition | season | team | player
idintRequiredID based on selected type

Response Structure

data → trophy[]
FieldTypeDescription
idintTrophy record ID
competition_id / competition_nameint / stringCompetition / tournament details
season_id / season_nameint / stringSeason details
team_id / team_nameint / stringClub / team details
person_id / person_nameint / string|nullPlayer details (for individual awards)
trophy_typestring|nullTrophy / achievement category
positionint|nullRank / achievement position (1: Winner, 2: Runner-up)

get_season_coverage

Per-season coverage map: which data capabilities (live scores, lineups, cards, transfers, injuries…) are available for a given season, their timing (before/after the match, live) and update cadence. Check coverage before you integrate — no more guessing whether a long-tail season has lineups.

GET /api/get_season_coverage.php

Parameters

ParameterTypeRequiredDescription
season_idintRequiredThe season to inspect (from get_seasons).

Response Structure

data → season_coverage → capabilities[]
FieldTypeDescription
capabilitystringData type, e.g. live_scores, lineups, cards, transfers, injuries
availableboolWhether this capability is provided for the season
timingstringLive / Before the match / After the match / Not available
update_interval_minutesintRefresh cadence in minutes (where applicable)

Example Request

GET /api/get_season_coverage.php?season_id=27218

get_deleted

Returns records deleted after the specified time.

GET /api/get_deleted.php

Parameters

ParameterTypeRequiredDescription
start_datestringOptionalStart time; defaults to the previous 24 hours
typestringOptionalFilter on response item_type: area, competition, season, round, group, match, event, team, or person

Response Structure

data → deleted_item[]

Records deleted at or after start_date are returned newest first.

Example Request

GET /api/get_deleted.php?start_date=2026-08-12%2000:00:00&type=match

get_hashtags

Returns hashtags associated with a competition, team, or match.

GET /api/get_hashtags.php

Parameters

ParameterTypeRequiredDescription
typestringRequiredcompetition | team | match
idintRequiredID of the selected type

Response Structure

data → hashtag[]

Example Request

GET /api/get_hashtags.php?type=team&id=2212

get_ws_token

Issues a short-lived WebSocket connection token. It returns the JSON object below directly, not the standard API envelope.

GET /api/get_ws_token.php

Response Structure

direct JSON object
FieldTypeDescription
tokenstringShort-lived connection token
token_jtistringToken session identifier
expires_atdate-time stringUTC expiration time
ws_urlURI stringWebSocket connection address
Do not send API credentials over WebSocket. Use the short-lived token obtained over HTTPS when connecting to ws_url.

Example Request

GET /api/get_ws_token.php