Simple REST API. Pass your API key as a query parameter — no headers required.
https://live-football-api.com/api/v1
composer require forcescripts/live-football-api-php
View the package on Packagist →
npm install live-football-api
View the package on npm →
Add api_key to every request URL. You can get a key by creating a free account.
https://live-football-api.com/api/v1/matches?api_key=YOUR_KEY&date=2026-07-03
Each API call consumes credits from your balance. Credits never expire. New accounts get 500 free credits.
| Endpoint | Cost |
|---|---|
| GET /matches | 1 credit per call |
| GET /live_match_details | 1 credit per call |
| GET /lineups | 1 credit per call |
| GET /h2h | 1 credit per call |
| GET /injuries | 1 credit per call |
| GET /officials | 1 credit per call |
| GET /referee | 1 credit per call |
| GET /leagues | 1 credit per call |
| GET /league_standings | 1 credit per call |
| GET /league_fixtures | 1 credit per call |
| GET /team_matches | 1 credit per call |
| GET /team_squad | 1 credit per call |
| GET /team_standings | 1 credit per call |
| GET /player | 1 credit per call |
| GET /player_matches | 1 credit per call |
| GET /team_search | 1 credit per call |
| GET /player_search | 1 credit per call |
| POST /webhook/register | Free |
| GET /webhook/register | Free |
| PATCH /webhook/register | Free |
| DELETE /webhook/register | Free |
| Webhook notification (any event) | 1 credit / delivered notification |
All errors return JSON with a code and message:
| Code | Meaning |
|---|---|
| 400 | Invalid parameter (e.g. bad date format) |
| 401 | Missing or invalid api_key |
| 403 | Access denied — insufficient credits, daily limit exceeded, or inactive account |
| 429 | Rate limit exceeded — not a credits problem. You are sending requests faster than your plan's requests/second limit (see plans for your req/s and burst allowance). Wait the number of seconds given in the Retry-After response header, then retry. |
| 500 | Database error |
| 503 | Upstream data source unavailable |
{
"success": false,
"message": "Access denied. Possible reasons: Invalid key, insufficient credits, daily limit exceeded, or inactive account.",
"timestamp": "2026-07-03 14:22:01"
}
Returns football matches for a given date. Optionally translate team and competition names.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| date | string | No | Match date in YYYY-MM-DD format |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/matches?api_key=YOUR_KEY&date=2026-07-03&lang=en
{
"success": true,
"credits_remaining": 4999,
"data": {
"date": "2026-07-03",
"language": "en",
"timezone": "UTC",
"matches": [
{
"id": "lfa4phmwb3bhclg7aqht1ajcwk",
"league": {
"id": "lfa-premier-league",
"name": "Premier League",
"country": "England"
},
"week": "3",
"kickoff": "14:00",
"status": {
"status": "live",
"display": "73'",
"is_live": true,
"state": "inPlay"
},
"home": {
"id": "lfa-man-city",
"name": "Manchester City",
"logo": "https://live-football-api.com/teams/lfa-man-city.png",
"score": "2"
},
"away": {
"id": "lfa-arsenal",
"name": "Arsenal",
"logo": "https://live-football-api.com/teams/lfa-arsenal.png",
"score": "1"
},
"halftime": { "home": 1, "away": 0 },
"tv_broadcast": true,
"penalty": { "home": null, "away": null }
}
]
},
"timestamp": "2026-07-03 14:22:01"
}
true if the match is scheduled for TV broadcast (no channel names yet). penalty — penalty shoot-out score, null unless the match went to penalties. week — the gameweek/round name the match belongs to (e.g. "3" or "Quarter-final"); null when unknown.Returns real-time match data: event timeline (goals, cards, substitutions) and match statistics (possession, shots, corners, etc.).
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| match_id | string | Yes | Match ID from /matches |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/live_match_details?api_key=YOUR_KEY&match_id=lfa4phmwb3bhclg7aqht1ajcwk&lang=en
{
"success": true,
"credits_remaining": 4998,
"data": {
"match_id": "lfa4phmwb3bhclg7aqht1ajcwk",
"match_date": "2026-07-03T14:00:00Z",
"last_updated": "2026-07-03 14:22:01 UTC",
"stale": false,
"header": {
"home": {
"name": "Manchester City",
"id": "lfa-man-city",
"logo": "https://live-football-api.com/teams/lfa-man-city.png",
"score": "2"
},
"away": {
"name": "Arsenal",
"id": "lfa-arsenal",
"logo": "https://live-football-api.com/teams/lfa-arsenal.png",
"score": "1"
},
"status": { "display": "", "is_live": true, "is_postponed": 0, "minute": "73", "state": "inPlay", "extra_time": null }
},
"events": [
{
"time": "23",
"type": "goal",
"side": "home",
"detail": {
"player": { "name": "Haaland", "id": "lfa-haaland", "image": "https://live-football-api.com/people/lfa-haaland.png" },
"score": "1-0",
"assist": { "name": "De Bruyne", "id": "lfa-de-bruyne", "image": "https://live-football-api.com/people/lfa-de-bruyne.png" }
}
},
{
"time": "65",
"type": "yellow_card",
"side": "away",
"detail": {
"player": { "name": "Rice", "id": "lfa-rice", "image": "https://live-football-api.com/people/lfa-rice.png" }
}
}
],
"stats": [
{ "type": "possession", "label": "Possession", "home": "49", "away": "51" },
{ "type": "shots", "label": "Total Shots", "home": "18", "away": "4" },
{ "type": "shots_on_target", "label": "Shots on Target", "home": "7", "away": "1" },
{ "type": "corners", "label": "Corners", "home": "8", "away": "3" }
],
"csb_url": "https://csb.live-football-api.com/csb?token=eyJhbGci...&teamA=Manchester%20City&teamB=Arsenal&lang=en&rbId=2412981",
"venue": { "name": "Etihad Stadium", "capacity": 53400 },
"referee": "M. Oliver",
"tv_channels": ["beIN SPORTS 1"],
"player_of_the_match": { "name": "Haaland", "id": "lfa-haaland", "image": "https://live-football-api.com/people/lfa-haaland.png", "rating": 8.7 }
},
"timestamp": "2026-07-03 14:22:01"
}
goal, own_goal, yellow_card, red_card, substitution. A goal's detail includes an assist object when one is recorded (omitted otherwise).is_penalty / is_second_yellow flags inside detail when relevant.<iframe src="csb_url" width="636" height="400" frameborder="0"></iframe>null if the match has no active CSB feed (e.g. pre-match or unsupported competition).Returns a live match Centre Stage Board (CSB) visualization as an HTML page — designed to be embedded in an <iframe>. The csb_url field in the /live_match_details response already contains a ready-to-use URL with a pre-fetched token; you do not need to call this endpoint manually in most cases.
| Parameter | Type | Required | Description |
|---|---|---|---|
| token | string | Yes | JWT visualization token (provided ready-to-use inside csb_url from the live_match_details response). |
| matchid | string | Yes | Match ID in lfa format (same as the id field from /matches). |
| lang | string | No | Response language: en tr de ru |
<iframe
src="https://live-football-api.com/api/v1/csb?token=TOKEN&matchid=lfa4phmwb3bhclg7aqht1ajcwk&lang=en"
width="636"
height="400"
frameborder="0"
allowtransparency="true"
></iframe>
csb_url from a fresh /live_match_details call to always get a valid token. Do not cache or hardcode tokens.Returns starting XI, substitutes and coach for both teams. Available approximately 1 hour before kickoff.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| match_id | string | Yes | Match ID from /matches |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/lineups?api_key=YOUR_KEY&match_id=lfa4phmwb3bhclg7aqht1ajcwk&lang=en
{
"success": true,
"credits_remaining": 4997,
"data": {
"match_id": "lfa4phmwb3bhclg7aqht1ajcwk",
"home": {
"starting": [
{ "id": "lfa-ederson", "name": "Ederson", "image": "https://live-football-api.com/people/lfa-ederson.png", "number": "31", "position": "Goalkeeper", "rating": 6.8 },
{ "id": "lfa-haaland", "name": "Haaland", "image": "https://live-football-api.com/people/lfa-haaland.png", "number": "9", "position": "Forward", "rating": 8.7 }
],
"subs": [
{ "id": "lfa-bernardo", "name": "Bernardo Silva", "image": "https://live-football-api.com/people/lfa-bernardo.png", "number": "20", "position": "Midfielder", "rating": null }
],
"coach": { "id": "lfa-guardiola", "name": "Pep Guardiola", "image": "https://live-football-api.com/people/lfa-guardiola.png" }
},
"away": {
"starting": [
{ "id": "lfa-raya", "name": "Raya", "image": "https://live-football-api.com/people/lfa-raya.png", "number": "1", "position": "Goalkeeper", "rating": 6.5 }
],
"subs": [],
"coach": { "id": "lfa-arteta", "name": "Mikel Arteta", "image": "https://live-football-api.com/people/lfa-arteta.png" }
},
"formation": { "home": 433, "away": 442 },
"is_projected": false
},
"timestamp": "2026-07-03 14:22:01"
}
Returns head-to-head historical results between the two teams in a given match.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| match_id | string | Yes | Match ID from /matches |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/h2h?api_key=YOUR_KEY&match_id=lfa4phmwb3bhclg7aqht1ajcwk&lang=en
{
"success": true,
"credits_remaining": 4996,
"data": {
"match_id": "lfa4phmwb3bhclg7aqht1ajcwk",
"home_form": [
{
"date": "2026-06-14",
"home": { "id": "lfa-man-city", "name": "Manchester City", "logo": "https://live-football-api.com/teams/lfa-man-city.png" },
"away": { "id": "lfa-chelsea", "name": "Chelsea", "logo": "https://live-football-api.com/teams/lfa-chelsea.png" },
"score": "3-1"
}
],
"away_form": [ ],
"h2h": [
{
"date": "2025-09-22",
"home": { "id": "lfa-man-city", "name": "Manchester City", "logo": "https://live-football-api.com/teams/lfa-man-city.png" },
"away": { "id": "lfa-arsenal", "name": "Arsenal", "logo": "https://live-football-api.com/teams/lfa-arsenal.png" },
"score": "2-1"
}
],
"h2h_summary": { "home_wins": 8, "away_wins": 6, "draws": 4 }
},
"timestamp": "2026-07-03 14:22:01"
}
Returns confirmed injuries and suspensions for both squads ahead of a match.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| match_id | string | Yes | Match ID from /matches |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/injuries?api_key=YOUR_KEY&match_id=lfa4phmwb3bhclg7aqht1ajcwk&lang=en
{
"success": true,
"credits_remaining": 4995,
"data": {
"match_id": "lfa4phmwb3bhclg7aqht1ajcwk",
"injuries": {
"home": [
{
"id": "lfa-de-bruyne",
"name": "Kevin De Bruyne",
"image": "https://live-football-api.com/people/lfa-de-bruyne.png",
"position": "Midfielder",
"status": "Hamstring Injury",
"stats": { "appearence": 12, "assists": 6, "goals": 2, "redCards": 0, "yellowCards": 1 }
}
],
"away": [
{ "id": "lfa-zinchenko", "name": "Oleksandr Zinchenko", "image": "https://live-football-api.com/people/lfa-zinchenko.png", "position": "Defender", "status": "Suspended", "stats": null }
]
}
},
"timestamp": "2026-07-03 14:22:01"
}
null otherwise.Returns the referee and assistant officials assigned to a match. The main referee also includes avg_yellow_cards and avg_red_cards (average cards shown per match, based on recent history); these are null for assistants, the fourth official, and VAR.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| match_id | string | Yes | Match ID from /matches |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/officials?api_key=YOUR_KEY&match_id=lfa4phmwb3bhclg7aqht1ajcwk
{
"success": true,
"credits_remaining": 4994,
"data": {
"match_id": "lfa4phmwb3bhclg7aqht1ajcwk",
"officials": [
{ "id": "8d319822-2432-4da3-7bcb-ca5c11421394", "name": "Michael Oliver", "role": "Main", "avg_yellow_cards": 5.05, "avg_red_cards": 0.26 },
{ "id": "6c998fdc-ca49-69c3-2488-347671830e3a", "name": "Stuart Burt", "role": "Lineman 1", "avg_yellow_cards": null, "avg_red_cards": null },
{ "id": "6a528c78-5157-c275-9d86-ca7ed7ff21ac", "name": "Simon Long", "role": "Lineman 2", "avg_yellow_cards": null, "avg_red_cards": null },
{ "id": "e6e57850-918d-c5ef-9bc0-e8b43c2b8e88", "name": "Anthony Taylor","role": "Fourth official", "avg_yellow_cards": null, "avg_red_cards": null },
{ "id": "4748a374-2d55-ae66-642e-8e9e05fb566c", "name": "Graham Scott", "role": "VAR", "avg_yellow_cards": null, "avg_red_cards": null }
]
},
"timestamp": "2026-07-03 14:22:01"
}
Returns a referee's profile and career card statistics — total and per-match average yellow/red cards, fouls and penalties awarded, plus a match-by-match history with the cards shown to each team.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| referee_id | string | Yes | Referee ID — get it from the id field of a /officials response |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/referee?api_key=YOUR_KEY&referee_id=318b2878-3b27-6877-7197-955dbe48cbd5
{
"success": true,
"credits_remaining": 4993,
"data": {
"referee_id": "318b2878-3b27-6877-7197-955dbe48cbd5",
"name": "Fernando Alexis Portillo Botello",
"nationality": "Mexico",
"birthdate": "1997-08-07",
"career": {
"matches_in_history": 5,
"total_yellow_cards": 22,
"total_red_cards": 4,
"total_fouls": 19,
"total_penalties_awarded": 1,
"avg_yellow_cards_per_match": 4.4,
"avg_red_cards_per_match": 0.8
},
"recent_matches": [
{
"match_id": "cnkinja3gq8ukagjx5vuxj4es",
"date": "2026-09-22 00:00:00",
"area": "Mexico",
"competition": "Liga MX Femenil",
"season": "2026/2027",
"round": "Apertura",
"score": { "home": 2, "away": 7 },
"home_team": { "yellow_cards": 1, "red_cards": 1, "fouls": 0, "penalties": 0 },
"away_team": { "yellow_cards": 2, "red_cards": 1, "fouls": 0, "penalties": 0 }
}
]
},
"timestamp": "2026-09-22 15:36:47"
}
Returns all available leagues grouped by country, sorted alphabetically.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/leagues?api_key=YOUR_KEY&lang=en
{
"success": true,
"credits_remaining": 4993,
"data": {
"language": "en",
"total_countries": 45,
"data": [
{
"country": "England",
"leagues": [
{ "id": "lfa-premier-league", "name": "Premier League", "logo": "https://live-football-api.com/leagues/lfa-premier-league.png" },
{ "id": "lfa-championship", "name": "Championship", "logo": "https://live-football-api.com/leagues/lfa-championship.png" },
{ "id": "lfa-league-one", "name": "League One", "logo": "https://live-football-api.com/leagues/lfa-league-one.png" }
]
},
{
"country": "Spain",
"leagues": [
{ "id": "lfa-la-liga", "name": "La Liga", "logo": "https://live-football-api.com/leagues/lfa-la-liga.png" },
{ "id": "lfa-segunda", "name": "Segunda División", "logo": "https://live-football-api.com/leagues/lfa-segunda.png" }
]
}
]
},
"timestamp": "2026-07-03 14:22:01"
}
Returns the current standings table for a league. Supports multiple groups (e.g. Champions League group stage).
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| league_id | string | Yes | League ID from /leagues |
| season | string | No | Season identifier e.g. 2025 or 2025-2026. Omit for current season. |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/league_standings?api_key=YOUR_KEY&league_id=lfa-premier-league&season=2024/2025&lang=en
{
"success": true,
"credits_remaining": 4992,
"data": {
"league_id": "lfa-premier-league",
"season": "2024/2025",
"available_seasons": ["2024/2025", "2023/2024", "2022/2023"],
"timezone": "UTC",
"stale": false,
"standings": [
{
"title": "Premier League",
"table": [
{
"rank": "1",
"team": {
"id": "lfa-liverpool",
"name": "Liverpool",
"logo": "https://live-football-api.com/teams/lfa-liverpool.png"
},
"played": "38", "won": "28", "drawn": "6", "lost": "4",
"goals_for": "86", "goals_against": "41",
"goal_diff": "45", "points": "90",
"form": "WWDWL",
"zone": { "name": "Champions League", "color": "#02206B" }
},
{
"rank": "2",
"team": {
"id": "lfa-man-city",
"name": "Manchester City",
"logo": "https://live-football-api.com/teams/lfa-man-city.png"
},
"played": "38", "won": "24", "drawn": "7", "lost": "7",
"goals_for": "78", "goals_against": "52",
"goal_diff": "26", "points": "79",
"form": "WDWWW",
"zone": { "name": "Champions League", "color": "#02206B" }
}
]
}
],
"live_standings": [
{
"title": "Premier League",
"table": [
{
"rank": "1",
"team": {
"id": "lfa-liverpool",
"name": "Liverpool",
"logo": "https://live-football-api.com/teams/lfa-liverpool.png"
},
"played": "29", "won": "21", "drawn": "6", "lost": "2",
"goals_for": "68", "goals_against": "28",
"goal_diff": "40", "points": "69",
"form": "WWWDW",
"zone": { "name": "Champions League", "color": "#02206B" }
}
]
}
],
"home_standings": [ { "title": "Premier League", "table": [ ] } ],
"away_standings": [ { "title": "Premier League", "table": [ ] } ]
},
"timestamp": "2026-07-03 14:22:01"
}
Returns the full match schedule for a league, grouped week by week, with scores for played matches and kickoff times for upcoming ones.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| league_id | string | Yes | League ID from /leagues |
| season | string | No | Season identifier e.g. 2025 or 2025-2026. Omit for current season. |
| week | string | No | Filter to a single gameweek/round name, e.g. 1. Omit to get all weeks. |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/league_fixtures?api_key=YOUR_KEY&league_id=lfa-super-lig&season=2025/2026&week=1&lang=tr
{
"success": true,
"credits_remaining": 4991,
"data": {
"league_id": "lfa-super-lig",
"league_name": "Trendyol Süper Lig",
"season": "2025/2026",
"available_seasons": ["2025/2026", "2024/2025", "2023/2024"],
"timezone": "UTC",
"weeks": [
{
"week": "1",
"matches": [
{
"id": "lfa-c5b95lue06z36lha2ueniwsgk",
"league": { "id": "lfa-super-lig", "name": "Trendyol Süper Lig" },
"round": "Adnan Süvari Sezonu",
"date": "2026-08-14",
"kickoff": "18:30",
"status": { "status": "finished", "display": "MS", "is_live": false, "state": "postGame" },
"home": {
"id": "lfa-esa748l653sss1wurz5ps3228",
"name": "Galatasaray",
"logo": "https://live-football-api.com/teams/lfa-esa748l653sss1wurz5ps3228.png",
"score": "2"
},
"away": {
"id": "lfa-eg0cqg1u8zz85ma9nzk0cijv",
"name": "Çorum FK",
"logo": "https://live-football-api.com/teams/lfa-eg0cqg1u8zz85ma9nzk0cijv.png",
"score": "2"
},
"halftime": { "home": 0, "away": 0 },
"penalty": { "home": null, "away": null }
}
]
}
],
"stale": false
},
"timestamp": "2026-08-31 12:00:00"
}
Returns a team's fixtures and results for a season — both past results and upcoming matches.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| team_id | string | Yes | Team ID from match data |
| season | string | No | Season identifier e.g. 2025 or 2025-2026. Omit for current season. |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/team_matches?api_key=YOUR_KEY&team_id=lfa-man-city&season=2024/2025&lang=en
{
"success": true,
"credits_remaining": 4991,
"data": {
"team_id": "lfa-man-city",
"team_logo": "https://live-football-api.com/teams/lfa-man-city.png",
"season": "2024/2025",
"available_seasons": ["2024/2025", "2023/2024", "2022/2023"],
"timezone": "UTC",
"matches": [
{
"id": "lfa4phmwb3bhclg7aqht1ajcwk",
"date": "2025-08-17 14:00:00",
"timestamp": 1755439200,
"league": { "id": "lfa-premier-league", "name": "Premier League", "country": "England" },
"status": "FT",
"home": { "id": "lfa-man-city", "name": "Manchester City", "logo": "https://live-football-api.com/teams/lfa-man-city.png", "score": 2 },
"away": { "id": "lfa-chelsea", "name": "Chelsea", "logo": "https://live-football-api.com/teams/lfa-chelsea.png", "score": 0 }
}
]
},
"timestamp": "2026-07-03 14:22:01"
}
Returns the full squad list for a team with player positions and shirt numbers.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| team_id | string | Yes | Team ID from match data |
| season | string | No | Season identifier e.g. 2025 or 2025-2026. Omit for current season. |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/team_squad?api_key=YOUR_KEY&team_id=lfa-man-city&season=2024/2025
{
"success": true,
"credits_remaining": 4990,
"data": {
"team_id": "lfa-man-city",
"team_logo": "https://live-football-api.com/teams/lfa-man-city.png",
"season": "2024/2025",
"available_seasons": ["2024/2025", "2023/2024", "2022/2023"],
"timezone": "UTC",
"squad": [
{
"id": "lfa-haaland",
"name": "Erling Haaland",
"image": "https://live-football-api.com/people/lfa-haaland.png",
"number": "9",
"position": "Forward",
"age": 25,
"country": "Norway",
"stats": { "matches": 34, "goals": 27, "assists": 5 },
"yellow_cards": 2,
"red_cards": 0
}
],
"coaches": [
{ "id": "lfa-guardiola", "name": "Pep Guardiola", "image": "https://live-football-api.com/people/lfa-guardiola.png" }
]
},
"timestamp": "2026-07-03 14:22:01"
}
Returns a team's current position in its league(s) for the season.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| team_id | string | Yes | Team ID from match data |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/team_standings?api_key=YOUR_KEY&team_id=lfa-man-city&lang=en
{
"success": true,
"credits_remaining": 4989,
"data": {
"team_id": "lfa-man-city",
"season": "2024/2025",
"available_seasons": ["2024/2025", "2023/2024"],
"timezone": "UTC",
"standings": [
{
"league": "Premier League",
"table": [
{
"rank": "2",
"team": { "id": "lfa-man-city", "name": "Manchester City", "logo": "https://live-football-api.com/teams/lfa-man-city.png" },
"played": "38", "won": "24", "drawn": "7", "lost": "7",
"goals_for": "78", "goals_against": "52", "goal_diff": "26", "points": "79",
"form": "WDWWW",
"zone": { "name": "Champions League", "color": "#02206B" }
}
]
}
]
},
"timestamp": "2026-07-03 14:22:01"
}
Searches for teams by name. Returns matching teams with their IDs and logos.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| q | string | Yes | Search keywords (team or player name) |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/team_search?api_key=YOUR_KEY&q=galatasaray
{
"success": true,
"credits_remaining": 4990,
"data": {
"keywords": "galatasaray",
"total": 3,
"teams": [
{
"id": "lfa-galatasaray",
"name": "Galatasaray",
"logo": "https://live-football-api.com/teams/lfa-galatasaray.png",
"country": "Turkey"
},
{
"id": "lfa-galatasaray-u19",
"name": "Galatasaray U19",
"logo": "https://live-football-api.com/teams/lfa-galatasaray-u19.png",
"country": "Turkey"
}
]
},
"timestamp": "2026-07-03 14:22:01"
}
Returns a player's profile (bio, position, market value) plus their full club and international career history.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| player_id | string | Yes | Player ID, as returned by /player_search |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/player?api_key=YOUR_KEY&player_id=lfa-haaland&lang=en
{
"success": true,
"credits_remaining": 4988,
"data": {
"player_id": "lfa-haaland",
"name": "E. Haaland",
"first_name": "Erling",
"last_name": "Haaland",
"photo": "https://live-football-api.com/people/lfa-haaland.png",
"position": "Forward",
"nationality": "Norway",
"birthdate": "2000-07-21",
"height": "195 cm",
"weight": "88 kg",
"foot": "Left",
"shirt_number": 9,
"market_value": "180.000.000€",
"current_team": { "id": "lfa-man-city", "name": "Manchester City", "logo": "https://live-football-api.com/teams/lfa-man-city.png" },
"clubs_career": [
{
"team": { "id": "lfa-man-city", "name": "Manchester City", "logo": "https://live-football-api.com/teams/lfa-man-city.png" },
"date_start": "2022-07-01",
"is_loaned": false,
"seasons": [
{
"name": "2024/2025",
"competitions": [
{ "league": { "id": "lfa-premier-league", "name": "Premier League" }, "appearances": 34, "goals": 27, "assists": 5, "yellow_cards": 2, "red_cards": 0 }
]
}
]
}
],
"internationals_career": [
{
"team": { "id": "lfa-norway", "name": "Norway", "logo": "https://live-football-api.com/teams/lfa-norway.png" },
"date_start": "2019-09-05",
"is_loaned": false,
"seasons": []
}
]
},
"timestamp": "2026-07-03 14:22:01"
}
Returns a player's match-by-match log (goals, assists, cards, starts) for one team and season.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| player_id | string | Yes | Player ID, as returned by /player_search |
| team_id | string | No | Team ID the player represented, as returned in current_team.id / clubs_career[].team.id from /player. Defaults to their current team. |
| season | string | No | Season label (e.g. "2024/2025"), as returned in clubs_career[].seasons[].name from /player. Defaults to the most recent season with actual appearances for that team. |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/player_matches?api_key=YOUR_KEY&player_id=lfa-haaland&lang=en
{
"success": true,
"credits_remaining": 4987,
"data": {
"player_id": "lfa-haaland",
"team_id": "lfa-man-city",
"team_name": "Manchester City",
"season": "2024/2025",
"competitions": [
{
"league": { "id": "lfa-premier-league", "name": "Premier League" },
"matches": [
{
"id": "lfa4phmwb3bhclg7aqht1ajcwk",
"date": "2025-08-17 14:00:00",
"is_home": true,
"opponent": { "id": "lfa-chelsea", "name": "Chelsea", "logo": "https://live-football-api.com/teams/lfa-chelsea.png" },
"score": "2-0",
"goals": 1,
"assists": 0,
"yellow_card": false,
"second_yellow_card": false,
"red_card": false,
"started": true
}
]
}
]
},
"timestamp": "2026-07-03 14:22:01"
}
Searches for players by name. Returns matching players with their IDs and photos.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| q | string | Yes | Search keywords (team or player name) |
| lang | string | No | Response language: en tr de ru |
GET https://live-football-api.com/api/v1/player_search?api_key=YOUR_KEY&q=mbappe
{
"success": true,
"credits_remaining": 4989,
"data": {
"keywords": "mbappe",
"total": 2,
"players": [
{
"id": "lfa-k-mbappe",
"name": "K. Mbappe",
"photo": "https://live-football-api.com/people/lfa-k-mbappe.png",
"country": "France"
},
{
"id": "lfa-e-mbappe",
"name": "E. Mbappe",
"photo": "https://live-football-api.com/people/lfa-e-mbappe.png",
"country": "France"
}
]
},
"timestamp": "2026-07-03 14:22:01"
}
Register a URL to receive real-time push notifications for live-match events: goals, cards, substitutions and live statistics such as corners, shots, offsides and fouls. Choose which events each webhook receives with the events parameter. Registering is free. Each delivered notification costs 1 credit (on a monthly plan it uses 1 request from your daily limit instead; unlimited plans are not charged). Up to 10 active webhooks per account.
2xx response within 5 seconds. A failed delivery is retried every few seconds until the match ends, and you are only charged once it succeeds.| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| webhook_url | string | Yes | Your callback URL (HTTPS recommended) |
| label | string | No | Optional label to identify this webhook |
| events | array | string | No | Events to receive — see the Event types table. JSON array or comma-separated string. Default: goal only. |
| event | Description | Cost |
|---|---|---|
| goal | A goal is scored (includes penalties) | 1 credit / delivered notification |
| yellow_card | A player receives a yellow card | 1 credit / delivered notification |
| red_card | A player is sent off (direct red or second yellow) | 1 credit / delivered notification |
| substitution | A player is substituted (player in / player out) | 1 credit / delivered notification |
| Match statistics — one notification each time the team counter goes up | ||
| corner | A corner kick is awarded | 1 credit / delivered notification |
| shot_on_target | A shot on target | 1 credit / delivered notification |
| shot_off_target | A shot off target | 1 credit / delivered notification |
| blocked_shot | A shot is blocked | 1 credit / delivered notification |
| hit_woodwork | A shot hits the post or crossbar | 1 credit / delivered notification |
| big_chance_missed | A big chance is missed | 1 credit / delivered notification |
| offside | An offside is called | 1 credit / delivered notification |
| foul | A foul is committed | 1 credit / delivered notification |
stats, so they carry the team (side), the new team total and the match minute, but no player. They usually arrive within about a minute of the action, and only for matches that have live statistics (most top and second-tier leagues). If a counter jumps by several at once, you get one notification per step.POST https://live-football-api.com/api/v1/webhook/register?api_key=YOUR_KEY
Content-Type: application/json
{
"webhook_url": "https://yourapp.com/webhooks/football",
"label": "my server",
"events": ["goal", "yellow_card", "red_card", "substitution", "corner"]
}
{
"success": true,
"data": {
"id": 1,
"webhook_url": "https://yourapp.com/webhooks/football",
"label": "my server",
"events": ["goal", "yellow_card", "red_card", "substitution", "corner"],
"is_active": true,
"message": "Webhook registered. You will be charged 1 credit per delivered notification."
}
}
Returns all webhook subscriptions registered to your account. This call is free.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
GET https://live-football-api.com/api/v1/webhook/register?api_key=YOUR_KEY
{
"success": true,
"data": {
"webhooks": [
{
"id": 1,
"webhook_url": "https://yourapp.com/webhooks/football",
"label": "my server",
"events": ["goal", "red_card"],
"is_active": true,
"created_at": "2026-07-04 12:00:00"
}
],
"total": 1,
"available_events": ["goal", "yellow_card", "red_card", "substitution", "corner", "shot_on_target", "shot_off_target", "blocked_shot", "hit_woodwork", "big_chance_missed", "offside", "foul"]
}
}
Changes which events a webhook receives, pauses or resumes it (is_active), or renames it. Send only the fields you want to change. This call is free.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| id | integer | Yes | Webhook ID to update (from the list response) |
| events | array | string | No | New event list — replaces the current one. Same format as on registration. |
| is_active | boolean | No | false pauses the webhook (no notifications, no credits), true resumes it |
| label | string | No | Optional label to identify this webhook |
PATCH https://live-football-api.com/api/v1/webhook/register?api_key=YOUR_KEY&id=1
Content-Type: application/json
{
"events": ["goal", "red_card"]
}
{
"success": true,
"data": {
"id": 1,
"webhook_url": "https://yourapp.com/webhooks/football",
"label": "my server",
"events": ["goal", "red_card"],
"is_active": true,
"created_at": "2026-07-04 12:00:00",
"message": "Webhook updated."
}
}
Permanently removes a webhook subscription. This call is free.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key |
| id | integer | Yes | Webhook ID to delete (from the list response) |
DELETE https://live-football-api.com/api/v1/webhook/register?api_key=YOUR_KEY&id=1
{
"success": true,
"data": {
"message": "Webhook deleted successfully."
}
}
Your registered URL receives a POST request with a JSON body for every event it is subscribed to. The event field and the X-Event-Type header tell you which event it is.
{
"event": "goal",
"timestamp": "2026-10-09T16:53:48+00:00",
"match": {
"id": "85ref49m3hsk1btro0as6raxg",
"minute": "60",
"home": {
"id": "aekjg4wbxaixtwu4aicmiju92",
"name": "Al Fateh",
"score": "0",
"logo": "https://live-football-api.com/teams/aekjg4wbxaixtwu4aicmiju92.png"
},
"away": {
"id": "aj1bdyuwq8pdwycaa9kba8uni",
"name": "Al Ahli",
"score": "3",
"logo": "https://live-football-api.com/teams/aj1bdyuwq8pdwycaa9kba8uni.png"
}
},
"goal": {
"minute": "60",
"side": "away",
"score": "0-3",
"player": {
"id": "b36foqukxn8obd969q6sea7yt",
"name": "I. Toney",
"image": "https://live-football-api.com/people/b36foqukxn8obd969q6sea7yt.png"
},
"assist": {
"id": "aqfio6cy6zj8yi19spuzob52i",
"name": "E. Spertsyan",
"image": "https://live-football-api.com/people/aqfio6cy6zj8yi19spuzob52i.png"
}
}
}
{
"event": "yellow_card",
"timestamp": "2026-10-09T16:53:48+00:00",
"match": {
"id": "85ref49m3hsk1btro0as6raxg",
"minute": "55",
"home": {
"id": "aekjg4wbxaixtwu4aicmiju92",
"name": "Al Fateh",
"score": "0",
"logo": "https://live-football-api.com/teams/aekjg4wbxaixtwu4aicmiju92.png"
},
"away": {
"id": "aj1bdyuwq8pdwycaa9kba8uni",
"name": "Al Ahli",
"score": "2",
"logo": "https://live-football-api.com/teams/aj1bdyuwq8pdwycaa9kba8uni.png"
}
},
"card": {
"minute": "55",
"side": "home",
"color": "yellow",
"is_second_yellow": false,
"player": {
"id": "aw1gqkqpznn5ku7ca9hy2skix",
"name": "K. Boateng",
"image": "https://live-football-api.com/people/aw1gqkqpznn5ku7ca9hy2skix.png"
}
}
}
{
"event": "red_card",
"timestamp": "2026-10-09T16:53:48+00:00",
"match": {
"id": "6rqwlp42vesyxur92v7lh7n6c",
"minute": "88",
"home": {
"id": "263edk7xyjafv0cfktqymjcmn",
"name": "Fortaleza",
"score": "0",
"logo": "https://live-football-api.com/teams/263edk7xyjafv0cfktqymjcmn.png"
},
"away": {
"id": "eqbww924pupg9vspauc0h7bt6",
"name": "Millonarios",
"score": "0",
"logo": "https://live-football-api.com/teams/eqbww924pupg9vspauc0h7bt6.png"
}
},
"card": {
"minute": "88",
"side": "away",
"color": "red",
"is_second_yellow": false,
"player": {
"id": "7ol7qi7c7xtae3mf33bkr4oyy",
"name": "F. Chaverra",
"image": "https://live-football-api.com/people/7ol7qi7c7xtae3mf33bkr4oyy.png"
}
}
}
{
"event": "substitution",
"timestamp": "2026-10-09T16:53:48+00:00",
"match": {
"id": "85ref49m3hsk1btro0as6raxg",
"minute": "46",
"home": {
"id": "aekjg4wbxaixtwu4aicmiju92",
"name": "Al Fateh",
"score": "0",
"logo": "https://live-football-api.com/teams/aekjg4wbxaixtwu4aicmiju92.png"
},
"away": {
"id": "aj1bdyuwq8pdwycaa9kba8uni",
"name": "Al Ahli",
"score": "1",
"logo": "https://live-football-api.com/teams/aj1bdyuwq8pdwycaa9kba8uni.png"
}
},
"substitution": {
"minute": "46",
"side": "home",
"player_in": {
"id": "o1goc30w677ib2h6wcnauwic",
"name": "S. Al Tumbukti",
"image": "https://live-football-api.com/people/o1goc30w677ib2h6wcnauwic.png"
},
"player_out": {
"id": "3l4mhxzh7xvubhzx1nsxxptec",
"name": "A. Al Khaibari",
"image": "https://live-football-api.com/people/3l4mhxzh7xvubhzx1nsxxptec.png"
}
}
}
corner, shot_on_target, foul ...){
"event": "corner",
"timestamp": "2026-10-09T17:57:43+00:00",
"match": {
"id": "f287tju4ue83bnemqpl08328k",
"minute": "26",
"home": {
"id": "1vgws1udwanpz7n6x1ymhlj9c",
"name": "Kriens",
"score": "0",
"logo": "https://live-football-api.com/teams/1vgws1udwanpz7n6x1ymhlj9c.png"
},
"away": {
"id": "988hdd0jedgyvm4978w95vma9",
"name": "Wil 1900",
"score": "0",
"logo": "https://live-football-api.com/teams/988hdd0jedgyvm4978w95vma9.png"
}
},
"stat": {
"minute": "26",
"side": "home",
"total": 1,
"home": 1,
"away": 3
}
}
event, timestamp and match blocks; the event details are in goal, card, substitution or stat. A second yellow card is sent as red_card with "is_second_yellow": true. Fields the data source has not provided are null — for example player on some second-yellow red cards in lower leagues, or assist on a goal without one.Show a live matches list, a single match scoreboard, league standings, a team squad, or a player profile on your site with one line of code — credits and limits run through your own API key, no coding required. Create widgets from the dashboard.
<script src="https://live-football-api.com/widget/widget.js"
data-token="SESSION_TOKEN" async></script>
data-token value is NOT the permanent widget token — it's an hourly-expiring session token obtained from the /widget/session endpoint below.To create a widget, choose which features (events, lineups, H2H, standings, etc.) are enabled, and set allowed domain(s): Dashboard → Widgets →
The same widget can be embedded in different shapes via the data-type/data-id attributes on the script tag:
| Parameter | Description |
|---|---|
| (none) | Today's matches list — with a live/upcoming/finished filter and a date picker. |
| data-type="match" data-id="MATCH_ID" | A single match scoreboard + events/lineups/H2H/pitch-view tabs. |
| data-type="league" data-id="LEAGUE_ID" | League standings and fixtures. |
| data-type="team" data-id="TEAM_ID" | Team squad, match history, standings. |
| data-type="player" data-id="PLAYER_ID" | Player profile. |
Optional attributes on the same <script> tag:
| Parameter | Description |
|---|---|
| data-lang="tr|en|de|ru" | Force a specific display language, overriding the visitor's browser language. |
| data-max-width="480px|100%|900px" | Widget defaults to a 480px-wide card. Set to "100%" (or any CSS width) to fill a wider container. |
| data-height="480px|80vh|none" | Caps the scrollable match list at 480px by default. Set to "none" or a larger value (e.g. "90vh") for a taller or full-screen embed. |
Sizing is controlled entirely by these two attributes and the size of the container you place the widget in — no custom CSS needed.
<script src="https://live-football-api.com/widget/widget.js"
data-token="SESSION_TOKEN"
data-max-width="100%"
data-height="90vh" async></script>
Before a widget can fetch data, you first need a signed, 1-hour session token, exchanged using your real API key. The permanent widget token (shown in the dashboard) cannot fetch data on its own — it only exists to exchange for one of these via this endpoint.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | The API key this widget belongs to (secret — server-side only) |
| token | string | Yes | The permanent widget token shown in the dashboard |
curl "https://live-football-api.com/widget/session.php?api_key=YOUR_KEY&token=YOUR_WIDGET_TOKEN"
{
"success": true,
"data": {
"session_token": "eyJ3aWQiOjExLCJleHAiOjE3ODkxNjM4MTR9.0lRDtD...",
"expires_at": "2026-09-12T21:56:54+00:00",
"expires_in": 3600
}
}
The token expires after 1 hour. For a static page, run a cron/scheduled job on your server roughly every 30 minutes that fetches a new session token and updates the data-token value on your page. For a dynamic page (server-rendered on each request), fetch a fresh token at render time instead.
#!/bin/bash
# Cron entry — every 30 minutes, well inside the 1-hour expiry:
# */30 * * * * /path/to/refresh_widget_session.sh
SESSION=$(curl -s "https://live-football-api.com/widget/session.php?api_key=YOUR_KEY&token=YOUR_WIDGET_TOKEN" | jq -r '.data.session_token')
sed -i "s/data-token=\"[^\"]*\"/data-token=\"$SESSION\"/" /var/www/yoursite/page-with-widget.html
data-token will always be visible in page source / the network tab — that's inherent to any client-side credential. An expiring token, once copied and reused elsewhere, stops working within the hour on its own — nobody has to notice or act for the exposure to close.Live Football API has a Model Context Protocol (MCP) server, so AI assistants such as Claude, ChatGPT, Cursor and VS Code can answer football questions with live data: scores, fixtures, standings, lineups, squads, players and more. Access is read-only and each tool call uses 1 credit from your API key, exactly like a normal API request.
https://www.live-football-api.com/mcp
OAuth (recommended): add the URL to your AI app and connect. You sign in to your Live Football API account and choose which of your API keys the app may use. Your key itself is never shared with the app.
API key: clients that let you set custom headers can send your API key directly in one of these headers:
Authorization: Bearer YOUR_KEY
# or
x-api-key: YOUR_KEY
Go to Settings → Connectors → Add custom connector, enter the MCP server URL and click Connect. Sign in, choose an API key and click Allow.
Add a custom MCP server / app (developer mode may need to be enabled in Settings), enter the MCP server URL and choose OAuth as the authentication method. Sign in, choose an API key and click Allow.
claude mcp add --transport http live-football-api https://www.live-football-api.com/mcp
Add the server to ~/.cursor/mcp.json (or .cursor/mcp.json in your project). Cursor opens the sign-in page on first use.
{
"mcpServers": {
"live-football-api": {
"url": "https://www.live-football-api.com/mcp"
}
}
}
Add the server to .vscode/mcp.json in your workspace. VS Code opens the sign-in page on first use.
{
"servers": {
"live-football-api": {
"type": "http",
"url": "https://www.live-football-api.com/mcp"
}
}
}
Any other client that supports remote MCP servers over Streamable HTTP can connect with the same URL, using OAuth or an API key header.
Every connected app is listed in your dashboard under API Keys → Connected apps, with the key it uses and when it was last used. Click Disconnect to revoke access immediately. Deactivating the key also stops every app that uses it. Connected apps →
Each tool maps to one API endpoint and accepts the same parameters, so the endpoint documentation above also describes what the tool returns.
| Tool | Endpoint |
|---|---|
get_matches | GET /matches |
get_live_match_details | GET /live_match_details |
get_lineups | GET /lineups |
get_h2h | GET /h2h |
get_injuries | GET /injuries |
get_officials | GET /officials |
get_referee | GET /referee |
list_leagues | GET /leagues |
get_league_standings | GET /league_standings |
get_league_fixtures | GET /league_fixtures |
search_teams | GET /team_search |
get_team_matches | GET /team_matches |
get_team_squad | GET /team_squad |
get_team_standings | GET /team_standings |
search_players | GET /player_search |
get_player | GET /player |
get_player_matches | GET /player_matches |