feat: migrate from RapidAPI to TheSportsDB with SvelteKit dashboard
All checks were successful
CVE Scan & Docker Build / security-scan (push) Successful in 42s
CVE Scan & Docker Build / build-and-push (push) Successful in 1m20s

- Replace free-api-live-football-data (RapidAPI) backend with TheSportsDB
- Add PostgreSQL cache layer for permanent data (teams, players, leagues, events)
- Replace Bootstrap dashboard with SvelteKit-based interactive dashboard
- Restructure MCP tools around TheSportsDB capabilities (get_team_info, get_roster, get_fixtures, get_standings, etc.)
- Expose tool registry via GET /api/tools so dashboard stays in sync
- Remove legacy modules and references (api_football, sync, RapidAPI env vars)
This commit is contained in:
2026-06-11 10:22:24 -04:00
parent cbfa4b1a47
commit 62af6727e6
54 changed files with 549 additions and 37158 deletions

View File

@@ -1,77 +0,0 @@
{
"status": "success",
"response": {
"popular": [
{
"id": 47,
"name": "Premier League",
"localizedName": "Premier League",
"ccode": "ENG",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/47.png"
},
{
"id": 42,
"name": "Champions League",
"localizedName": "Champions League",
"ccode": "INT",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/42.png"
},
{
"id": 87,
"name": "LaLiga",
"localizedName": "LaLiga",
"ccode": "ESP",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/87.png"
},
{
"id": 77,
"name": "World Cup",
"localizedName": "FIFA World Cup",
"ccode": "INT",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/77.png"
},
{
"id": 54,
"name": "Bundesliga",
"localizedName": "Bundesliga",
"ccode": "GER",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/54.png"
},
{
"id": 73,
"name": "Europa League",
"localizedName": "Europa League",
"ccode": "INT",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/73.png"
},
{
"id": 53,
"name": "Ligue 1",
"localizedName": "Ligue 1",
"ccode": "FRA",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/53.png"
},
{
"id": 55,
"name": "Serie A",
"localizedName": "Serie A",
"ccode": "ITA",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/55.png"
},
{
"id": 138,
"name": "Copa del Rey",
"localizedName": "Copa del Rey",
"ccode": "ESP",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/138.png"
},
{
"id": 132,
"name": "FA Cup",
"localizedName": "FA Cup",
"ccode": "ENG",
"logo": "https://images.fotmob.com/image_resources/logo/leaguelogo/dark/132.png"
}
]
}
}

View File

@@ -1,175 +0,0 @@
{
"status": "success",
"response": {
"suggestions": [
{
"type": "league",
"id": "47",
"score": 301131,
"name": "Premier League",
"ccode": "ENG"
},
{
"type": "league",
"id": "519",
"score": 300091,
"name": "Premier League",
"ccode": "EGY"
},
{
"type": "league",
"id": "9066",
"score": 300073,
"name": "Premier League",
"ccode": "TAN"
},
{
"type": "league",
"id": "63",
"score": 300071,
"name": "Premier League",
"ccode": "RUS"
},
{
"type": "league",
"id": "10028",
"score": 300058,
"name": "Premier League Qualification",
"ccode": "TAN"
},
{
"type": "league",
"id": "441",
"score": 300054,
"name": "Premier League",
"ccode": "UKR"
},
{
"type": "league",
"id": "522",
"score": 300054,
"name": "Premier League",
"ccode": "GHA"
},
{
"type": "league",
"id": "9084",
"score": 300050,
"name": "Premier League 2",
"ccode": "ENG"
},
{
"type": "league",
"id": "10176",
"score": 300041,
"name": "Premier League 2 Div 2",
"ccode": "ENG"
},
{
"type": "league",
"id": "10068",
"score": 300036,
"name": "Premier League U18",
"ccode": "ENG"
},
{
"type": "league",
"id": "263",
"score": 300024,
"name": "Premier League",
"ccode": "BLR"
},
{
"type": "league",
"id": "225",
"score": 300023,
"name": "Premier League",
"ccode": "KAZ"
},
{
"type": "league",
"id": "461",
"score": 300021,
"name": "Premier League",
"ccode": "SIN"
},
{
"type": "league",
"id": "9986",
"score": 300021,
"name": "Premier League",
"ccode": "CAN"
},
{
"type": "league",
"id": "262",
"score": 300020,
"name": "Premier League",
"ccode": "AZE"
},
{
"type": "league",
"id": "10443",
"score": 300019,
"name": "Premier League",
"ccode": "BAN"
},
{
"type": "league",
"id": "9829",
"score": 300018,
"name": "Premier League Qualification",
"ccode": "UKR"
},
{
"type": "league",
"id": "9333",
"score": 300017,
"name": "Premier League Qualification",
"ccode": "RUS"
},
{
"type": "league",
"id": "118",
"score": 300014,
"name": "Premier League",
"ccode": "ARM"
},
{
"type": "league",
"id": "267",
"score": 300013,
"name": "Premier League",
"ccode": "BIH"
},
{
"type": "league",
"id": "10783",
"score": 300011,
"name": "Women's Premier League",
"ccode": "KSA"
},
{
"type": "league",
"id": "9255",
"score": 300010,
"name": "Premier League qualification",
"ccode": "BLR"
},
{
"type": "league",
"id": "250",
"score": 300008,
"name": "Premier League",
"ccode": "FRO"
},
{
"type": "league",
"id": "529",
"score": 300008,
"name": "Premier League",
"ccode": "KUW"
}
]
}
}

View File

@@ -1,21 +0,0 @@
{
"status": "success",
"response": {
"suggestions": [
{
"type": "league",
"id": "130",
"score": 300491,
"name": "MLS",
"ccode": "USA"
},
{
"type": "league",
"id": "10282",
"score": 300014,
"name": "MLS Next Pro",
"ccode": "USA"
}
]
}
}

View File

@@ -1,79 +0,0 @@
{
"status": "success",
"response": {
"suggestions": [
{
"type": "team",
"id": "9825",
"score": 300993,
"name": "Arsenal",
"leagueId": 47,
"leagueName": "Premier League"
},
{
"type": "team",
"id": "258657",
"score": 300043,
"name": "Arsenal (W)",
"leagueId": 9227,
"leagueName": "WSL"
},
{
"type": "team",
"id": "950214",
"score": 300010,
"name": "Arsenal U21",
"leagueId": 9084,
"leagueName": "Premier League 2"
},
{
"type": "team",
"id": "1113566",
"score": 300008,
"name": "Arsenal U18",
"leagueId": 10068,
"leagueName": "Premier League U18"
},
{
"type": "team",
"id": "10098",
"score": 300001,
"name": "Arsenal Sarandi",
"leagueId": 9213,
"leagueName": "Primera B Metropolitana"
},
{
"type": "team",
"id": "1677",
"score": 300001,
"name": "Arsenal Tula",
"leagueId": 338,
"leagueName": "First League"
},
{
"type": "team",
"id": "1142489",
"score": 300000,
"name": "Arsenal Dzerzhinsk",
"leagueId": 263,
"leagueName": "Premier League"
},
{
"type": "team",
"id": "324771",
"score": 300000,
"name": "FK Arsenal Tivat",
"leagueId": 232,
"leagueName": "1. CFL"
},
{
"type": "team",
"id": "553807",
"score": 300000,
"name": "Arsenal Tula II",
"leagueId": 9123,
"leagueName": "Second League Division B Group 3"
}
]
}
}

View File

@@ -1,31 +0,0 @@
{
"status": "success",
"response": {
"suggestions": [
{
"type": "team",
"id": "56453",
"score": 300012,
"name": "Toronto FC",
"leagueId": 130,
"leagueName": "Major League Soccer"
},
{
"type": "team",
"id": "1022954",
"score": 300001,
"name": "Inter Toronto FC",
"leagueId": 9986,
"leagueName": "Premier League"
},
{
"type": "team",
"id": "614319",
"score": 300000,
"name": "Toronto FC II",
"leagueId": 10282,
"leagueName": "MLS Next Pro"
}
]
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +0,0 @@
{
"status": "success",
"response": {
"matches": []
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,3 +0,0 @@
{
"message": "You have exceeded the MONTHLY quota for Requests on your current plan, BASIC. Upgrade your plan at https://rapidapi.com/Creativesdev/api/free-api-live-football-data"
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,827 +0,0 @@
{
"status": "success",
"response": {
"list": {
"squad": [
{
"title": "coach",
"members": [
{
"id": 308837,
"height": null,
"age": 59,
"dateOfBirth": "1966-12-17",
"name": "Robin Fraser",
"ccode": "USA",
"cname": "USA",
"role": {
"key": "coach",
"fallback": "Coach"
},
"excludeFromRanking": true
}
]
},
{
"title": "keepers",
"members": [
{
"id": 1715087,
"name": "Adisa De Rosario",
"shirtNumber": null,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "keeper_long",
"fallback": "Keeper"
},
"positionId": 0,
"injured": true,
"injury": {
"id": "35",
"expectedReturn": "Early April 2026"
},
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "11",
"positionIdsDesc": "GK",
"height": 185,
"age": 21,
"dateOfBirth": "2004-10-27",
"transferValue": 100000
},
{
"id": 1338704,
"name": "Luka Gavran",
"shirtNumber": 1,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "keeper_long",
"fallback": "Keeper"
},
"positionId": 0,
"injury": null,
"rating": 4.87,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "11",
"positionIdsDesc": "GK",
"height": 198,
"age": 25,
"dateOfBirth": "2000-05-09",
"transferValue": 242993
},
{
"id": 342699,
"name": "William Yarbrough",
"shirtNumber": 23,
"ccode": "USA",
"cname": "USA",
"role": {
"key": "keeper_long",
"fallback": "Keeper"
},
"positionId": 0,
"injury": null,
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "11",
"positionIdsDesc": "GK",
"height": 187,
"age": 36,
"dateOfBirth": "1989-03-20",
"transferValue": 50000
}
]
},
{
"title": "defenders",
"members": [
{
"id": 574923,
"name": "Benjam\u00edn Kuscevic",
"shirtNumber": null,
"ccode": "CHI",
"cname": "Chile",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "34",
"positionIdsDesc": "CB",
"height": 186,
"age": 29,
"dateOfBirth": "1996-05-02",
"transferValue": 1483178
},
{
"id": 825691,
"name": "Henry Wingo",
"shirtNumber": 2,
"ccode": "USA",
"cname": "USA",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injured": true,
"injury": {
"id": "42",
"expectedReturn": "Early April 2026"
},
"rating": 6.14,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "71",
"positionIdsDesc": "RM",
"height": 183,
"age": 30,
"dateOfBirth": "1995-10-04",
"transferValue": 130182
},
{
"id": 1130753,
"name": "Zane Monlouis",
"shirtNumber": 12,
"ccode": "JAM",
"cname": "Jamaica",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": 6.44,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "34",
"positionIdsDesc": "CB",
"height": 185,
"age": 22,
"dateOfBirth": "2003-10-16",
"transferValue": 502064
},
{
"id": 1346549,
"name": "Nicksoen Gomis",
"shirtNumber": 15,
"ccode": "FRA",
"cname": "France",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injured": true,
"injury": {
"id": "73",
"expectedReturn": "Late March 2026"
},
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "36,38",
"positionIdsDesc": "CB,LB",
"height": 185,
"age": 23,
"dateOfBirth": "2002-03-15",
"transferValue": 238195
},
{
"id": 1106934,
"name": "Kobe Franklin",
"shirtNumber": 19,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": 5.44,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "32,38",
"positionIdsDesc": "RB,LB",
"height": 168,
"age": 22,
"dateOfBirth": "2003-05-10",
"transferValue": 240778
},
{
"id": 729506,
"name": "Richie Laryea",
"shirtNumber": 22,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": 6.19,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "38,32,66,34",
"positionIdsDesc": "LB,RB,CDM,CB",
"height": 175,
"age": 31,
"dateOfBirth": "1995-01-07",
"transferValue": 470837
},
{
"id": 431956,
"name": "Walker Zimmerman",
"shirtNumber": 25,
"ccode": "USA",
"cname": "USA",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": 5.51,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "34",
"positionIdsDesc": "CB",
"height": 191,
"age": 32,
"dateOfBirth": "1993-05-19",
"transferValue": 1163870
},
{
"id": 664764,
"name": "Raheem Edwards",
"shirtNumber": 44,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": 6.88,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 1,
"excludeFromRanking": false,
"positionIds": "38,68",
"positionIdsDesc": "LB,LWB",
"height": 173,
"age": 30,
"dateOfBirth": "1995-07-17",
"transferValue": 246577
},
{
"id": 1261310,
"name": "Kosi Thompson",
"shirtNumber": 47,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": 6.16,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "32,36,62",
"positionIdsDesc": "RB,CB,RWB",
"height": 178,
"age": 23,
"dateOfBirth": "2003-01-27",
"transferValue": 726678
},
{
"id": 1357562,
"name": "Adam Pearlman",
"shirtNumber": 51,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "32,72,33",
"positionIdsDesc": "RB,RM,CB",
"height": 183,
"age": 20,
"dateOfBirth": "2005-04-05",
"transferValue": 571247
},
{
"id": 1504606,
"name": "Lazar Stefanovic",
"shirtNumber": 76,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "37",
"positionIdsDesc": "CB",
"height": 187,
"age": 19,
"dateOfBirth": "2006-08-10",
"transferValue": 874785
},
{
"id": 1780464,
"name": "Stefan Kapor",
"shirtNumber": 98,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "defender_long",
"fallback": "Defender"
},
"positionId": 1,
"injury": null,
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": null,
"positionIdsDesc": null,
"height": null,
"age": 16,
"dateOfBirth": "2009-04-04",
"transferValue": null
}
]
},
{
"title": "midfielders",
"members": [
{
"id": 1187623,
"name": "Matheus Pereira",
"shirtNumber": 3,
"ccode": "BRA",
"cname": "Brazil",
"role": {
"key": "midfielder_long",
"fallback": "Midfielder"
},
"positionId": 2,
"injured": true,
"injury": {
"id": "47",
"expectedReturn": "Early April 2026"
},
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "78,107,59",
"positionIdsDesc": "LM,LW,LWB",
"height": 172,
"age": 25,
"dateOfBirth": "2000-12-21",
"transferValue": 1867261
},
{
"id": 1053698,
"name": "Jos\u00e9 Cifuentes",
"shirtNumber": 8,
"ccode": "ECU",
"cname": "Ecuador",
"role": {
"key": "midfielder_long",
"fallback": "Midfielder"
},
"positionId": 2,
"injury": null,
"rating": 6.83,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "64,76,86",
"positionIdsDesc": "CDM,CM,CAM",
"height": 178,
"age": 26,
"dateOfBirth": "1999-03-12",
"transferValue": 1895906
},
{
"id": 830601,
"name": "Djordje Mihailovic",
"shirtNumber": 10,
"ccode": "USA",
"cname": "USA",
"role": {
"key": "midfielder_long",
"fallback": "Midfielder"
},
"positionId": 2,
"injury": null,
"rating": 7.14,
"goals": 1,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "85,107,78,115",
"positionIdsDesc": "CAM,LW,LM,ST",
"height": 177,
"age": 27,
"dateOfBirth": "1998-11-10",
"transferValue": 6067551
},
{
"id": 1364471,
"name": "Alonso Coello",
"shirtNumber": 14,
"ccode": "ESP",
"cname": "Spain",
"role": {
"key": "midfielder_long",
"fallback": "Midfielder"
},
"positionId": 2,
"injury": null,
"rating": 6.23,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "73,66",
"positionIdsDesc": "CM,CDM",
"height": 185,
"age": 26,
"dateOfBirth": "1999-10-12",
"transferValue": 623924
},
{
"id": 432605,
"name": "Jonathan Osorio",
"shirtNumber": 21,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "midfielder_long",
"fallback": "Midfielder"
},
"positionId": 2,
"injury": null,
"rating": 7.07,
"goals": 0,
"penalties": 0,
"assists": 1,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "66,77,86,78",
"positionIdsDesc": "CDM,CM,CAM,LM",
"height": 175,
"age": 33,
"dateOfBirth": "1992-06-12",
"transferValue": 676957
},
{
"id": 1455365,
"name": "Markus Cimermancic",
"shirtNumber": 71,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "midfielder_long",
"fallback": "Midfielder"
},
"positionId": 2,
"injury": null,
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "76",
"positionIdsDesc": "CM",
"height": 175,
"age": 21,
"dateOfBirth": "2004-10-01",
"transferValue": 255919
},
{
"id": 1778338,
"name": "Malik Henry",
"shirtNumber": 78,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "midfielder_long",
"fallback": "Midfielder"
},
"positionId": 2,
"injury": null,
"rating": 6.44,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 1,
"excludeFromRanking": false,
"positionIds": "72,83",
"positionIdsDesc": "RM,RW",
"height": 163,
"age": 23,
"dateOfBirth": "2002-07-23",
"transferValue": 193874
}
]
},
{
"title": "attackers",
"members": [
{
"id": 1113737,
"name": "Theo Corbeanu",
"shirtNumber": 7,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "attacker_long",
"fallback": "Attacker"
},
"positionId": 3,
"injured": true,
"injury": {
"id": "14",
"expectedReturn": "Late April 2026"
},
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "87,83,104,72,84",
"positionIdsDesc": "LW,RW,ST,RM,CAM",
"height": 190,
"age": 23,
"dateOfBirth": "2002-05-17",
"transferValue": 1258500
},
{
"id": 848011,
"name": "Josh Sargent",
"shirtNumber": 9,
"ccode": "USA",
"cname": "USA",
"role": {
"key": "attacker_long",
"fallback": "Attacker"
},
"positionId": 3,
"injury": null,
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "115",
"positionIdsDesc": "ST",
"height": 185,
"age": 26,
"dateOfBirth": "2000-02-20",
"transferValue": 22347702
},
{
"id": 643482,
"name": "Derrick Etienne Jr.",
"shirtNumber": 11,
"ccode": "HAI",
"cname": "Haiti",
"role": {
"key": "attacker_long",
"fallback": "Attacker"
},
"positionId": 3,
"injury": null,
"rating": 6.71,
"goals": 1,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "115,87,79",
"positionIdsDesc": "ST,LW,LM",
"height": 178,
"age": 29,
"dateOfBirth": "1996-11-25",
"transferValue": 495791
},
{
"id": 1579304,
"name": "Emilio Aristiz\u00e1bal",
"shirtNumber": 17,
"ccode": "COL",
"cname": "Colombia",
"role": {
"key": "attacker_long",
"fallback": "Attacker"
},
"positionId": 3,
"injury": null,
"rating": 5.67,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "106",
"positionIdsDesc": "ST",
"height": 187,
"age": 20,
"dateOfBirth": "2005-08-05",
"transferValue": 1020000
},
{
"id": 655524,
"name": "D\u00e1niel Sall\u00f3i",
"shirtNumber": 20,
"ccode": "HUN",
"cname": "Hungary",
"role": {
"key": "attacker_long",
"fallback": "Attacker"
},
"positionId": 3,
"injury": null,
"rating": 6.1,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": false,
"positionIds": "107,78,83",
"positionIdsDesc": "LW,LM,RW",
"height": 185,
"age": 29,
"dateOfBirth": "1996-07-19",
"transferValue": 1598605
},
{
"id": 1338703,
"name": "Deandre Kerr",
"shirtNumber": 29,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "attacker_long",
"fallback": "Attacker"
},
"positionId": 3,
"injured": true,
"injury": {
"id": "87",
"expectedReturn": "Late March 2026"
},
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "115",
"positionIdsDesc": "ST",
"height": 180,
"age": 23,
"dateOfBirth": "2002-11-29",
"transferValue": 1095554
},
{
"id": 1276785,
"name": "Jules-Anthony Vilsaint",
"shirtNumber": 99,
"ccode": "CAN",
"cname": "Canada",
"role": {
"key": "attacker_long",
"fallback": "Attacker"
},
"positionId": 3,
"injury": null,
"rating": null,
"goals": 0,
"penalties": 0,
"assists": 0,
"rcards": 0,
"ycards": 0,
"excludeFromRanking": true,
"positionIds": "106",
"positionIdsDesc": "ST",
"height": 193,
"age": 23,
"dateOfBirth": "2003-01-06",
"transferValue": 286274
}
]
}
],
"isNationalTeam": false
}
}
}

View File

@@ -1,4 +0,0 @@
{
"status": "failed",
"message": "Request Failed Please try Again"
}

View File

@@ -1,3 +0,0 @@
{
"message": "You have exceeded the MONTHLY quota for Requests on your current plan, BASIC. Upgrade your plan at https://rapidapi.com/Creativesdev/api/free-api-live-football-data"
}

View File

@@ -1,347 +0,0 @@
{
"status": "success",
"response": {
"standing": [
{
"name": "Arsenal",
"shortName": "Arsenal",
"id": 9825,
"pageUrl": "/teams/9825/overview/arsenal",
"deduction": null,
"ongoing": null,
"played": 30,
"wins": 20,
"draws": 7,
"losses": 3,
"scoresStr": "59-22",
"goalConDiff": 37,
"pts": 67,
"idx": 1,
"qualColor": "#2AD572"
},
{
"name": "Manchester City",
"shortName": "Man City",
"id": 8456,
"pageUrl": "/teams/8456/overview/manchester-city",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 18,
"draws": 6,
"losses": 5,
"scoresStr": "59-27",
"goalConDiff": 32,
"pts": 60,
"idx": 2,
"qualColor": "#2AD572"
},
{
"name": "Manchester United",
"shortName": "Man United",
"id": 10260,
"pageUrl": "/teams/10260/overview/manchester-united",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 14,
"draws": 9,
"losses": 6,
"scoresStr": "51-40",
"goalConDiff": 11,
"pts": 51,
"idx": 3,
"qualColor": "#2AD572"
},
{
"name": "Aston Villa",
"shortName": "Aston Villa",
"id": 10252,
"pageUrl": "/teams/10252/overview/aston-villa",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 15,
"draws": 6,
"losses": 8,
"scoresStr": "39-34",
"goalConDiff": 5,
"pts": 51,
"idx": 4,
"qualColor": "#2AD572"
},
{
"name": "Chelsea",
"shortName": "Chelsea",
"id": 8455,
"pageUrl": "/teams/8455/overview/chelsea",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 13,
"draws": 9,
"losses": 7,
"scoresStr": "53-34",
"goalConDiff": 19,
"pts": 48,
"idx": 5,
"qualColor": "#0046A7"
},
{
"name": "Liverpool",
"shortName": "Liverpool",
"id": 8650,
"pageUrl": "/teams/8650/overview/liverpool",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 14,
"draws": 6,
"losses": 9,
"scoresStr": "48-39",
"goalConDiff": 9,
"pts": 48,
"idx": 6,
"qualColor": null
},
{
"name": "Brentford",
"shortName": "Brentford",
"id": 9937,
"pageUrl": "/teams/9937/overview/brentford",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 13,
"draws": 5,
"losses": 11,
"scoresStr": "44-40",
"goalConDiff": 4,
"pts": 44,
"idx": 7,
"qualColor": null
},
{
"name": "Everton",
"shortName": "Everton",
"id": 8668,
"pageUrl": "/teams/8668/overview/everton",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 12,
"draws": 7,
"losses": 10,
"scoresStr": "34-33",
"goalConDiff": 1,
"pts": 43,
"idx": 8,
"qualColor": null
},
{
"name": "AFC Bournemouth",
"shortName": "Bournemouth",
"id": 8678,
"pageUrl": "/teams/8678/overview/afc-bournemouth",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 9,
"draws": 13,
"losses": 7,
"scoresStr": "44-46",
"goalConDiff": -2,
"pts": 40,
"idx": 9,
"qualColor": null
},
{
"name": "Fulham",
"shortName": "Fulham",
"id": 9879,
"pageUrl": "/teams/9879/overview/fulham",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 12,
"draws": 4,
"losses": 13,
"scoresStr": "40-43",
"goalConDiff": -3,
"pts": 40,
"idx": 10,
"qualColor": null
},
{
"name": "Sunderland",
"shortName": "Sunderland",
"id": 8472,
"pageUrl": "/teams/8472/overview/sunderland",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 10,
"draws": 10,
"losses": 9,
"scoresStr": "30-34",
"goalConDiff": -4,
"pts": 40,
"idx": 11,
"qualColor": null
},
{
"name": "Newcastle United",
"shortName": "Newcastle",
"id": 10261,
"pageUrl": "/teams/10261/overview/newcastle-united",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 11,
"draws": 6,
"losses": 12,
"scoresStr": "42-43",
"goalConDiff": -1,
"pts": 39,
"idx": 12,
"qualColor": null
},
{
"name": "Crystal Palace",
"shortName": "Crystal Palace",
"id": 9826,
"pageUrl": "/teams/9826/overview/crystal-palace",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 10,
"draws": 8,
"losses": 11,
"scoresStr": "33-35",
"goalConDiff": -2,
"pts": 38,
"idx": 13,
"qualColor": null
},
{
"name": "Brighton & Hove Albion",
"shortName": "Brighton",
"id": 10204,
"pageUrl": "/teams/10204/overview/brighton-hove-albion",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 9,
"draws": 10,
"losses": 10,
"scoresStr": "38-36",
"goalConDiff": 2,
"pts": 37,
"idx": 14,
"qualColor": null
},
{
"name": "Leeds United",
"shortName": "Leeds",
"id": 8463,
"pageUrl": "/teams/8463/overview/leeds-united",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 7,
"draws": 10,
"losses": 12,
"scoresStr": "37-48",
"goalConDiff": -11,
"pts": 31,
"idx": 15,
"qualColor": null
},
{
"name": "Tottenham Hotspur",
"shortName": "Tottenham",
"id": 8586,
"pageUrl": "/teams/8586/overview/tottenham-hotspur",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 7,
"draws": 8,
"losses": 14,
"scoresStr": "39-46",
"goalConDiff": -7,
"pts": 29,
"idx": 16,
"qualColor": null
},
{
"name": "Nottingham Forest",
"shortName": "Nottm Forest",
"id": 10203,
"pageUrl": "/teams/10203/overview/nottingham-forest",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 7,
"draws": 7,
"losses": 15,
"scoresStr": "28-43",
"goalConDiff": -15,
"pts": 28,
"idx": 17,
"qualColor": null
},
{
"name": "West Ham United",
"shortName": "West Ham",
"id": 8654,
"pageUrl": "/teams/8654/overview/west-ham-united",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 7,
"draws": 7,
"losses": 15,
"scoresStr": "35-54",
"goalConDiff": -19,
"pts": 28,
"idx": 18,
"qualColor": "#FF4646"
},
{
"name": "Burnley",
"shortName": "Burnley",
"id": 8191,
"pageUrl": "/teams/8191/overview/burnley",
"deduction": null,
"ongoing": null,
"played": 29,
"wins": 4,
"draws": 7,
"losses": 18,
"scoresStr": "32-58",
"goalConDiff": -26,
"pts": 19,
"idx": 19,
"qualColor": "#FF4646"
},
{
"name": "Wolverhampton Wanderers",
"shortName": "Wolves",
"id": 8602,
"pageUrl": "/teams/8602/overview/wolverhampton-wanderers",
"deduction": null,
"ongoing": null,
"played": 30,
"wins": 3,
"draws": 7,
"losses": 20,
"scoresStr": "22-52",
"goalConDiff": -30,
"pts": 16,
"idx": 20,
"qualColor": "#FF4646"
}
]
}
}

View File

@@ -1,67 +0,0 @@
{
"status": "success",
"response": {
"players": [
{
"id": 737066,
"name": "Erling Haaland",
"teamId": 8456,
"teamName": "Manchester City",
"goals": 22,
"value": 22,
"stat": {
"name": "goals",
"value": 22,
"format": "number",
"fractions": 0
},
"teamColors": {
"darkMode": "#76b4e5",
"lightMode": "#69A8D8",
"fontDarkMode": "rgba(29, 29, 29, 1.0)",
"fontLightMode": "rgba(255, 255, 255, 1.0)"
}
},
{
"id": 1302005,
"name": "Igor Thiago",
"teamId": 9937,
"teamName": "Brentford",
"goals": 18,
"value": 18,
"stat": {
"name": "goals",
"value": 18,
"format": "number",
"fractions": 0
},
"teamColors": {
"darkMode": "#C00808",
"lightMode": "#C00808",
"fontDarkMode": "rgba(255, 255, 255, 1.0)",
"fontLightMode": "rgba(255, 255, 255, 1.0)"
}
},
{
"id": 933576,
"name": "Antoine Semenyo",
"teamId": 8456,
"teamName": "Manchester City",
"goals": 15,
"value": 15,
"stat": {
"name": "goals",
"value": 15,
"format": "number",
"fractions": 0
},
"teamColors": {
"darkMode": "#76b4e5",
"lightMode": "#69A8D8",
"fontDarkMode": "rgba(29, 29, 29, 1.0)",
"fontLightMode": "rgba(255, 255, 255, 1.0)"
}
}
]
}
}

View File

@@ -1,62 +0,0 @@
{
"status": "success",
"response": {
"news": [
{
"id": "ftbpro_01kk79jmekr0",
"imageUrl": "https://images2.minutemediacdn.com/image/upload/c_crop,w_1024,h_576,x_0,y_8/c_fill,w_912,h_516,f_auto,q_auto,g_auto/images/voltaxMediaLibrary/mmsport/si/01kk7af3bceybg72beqv.jpg",
"title": "Arsenal Need To Sell a Superstar: Four Players To Consider\u2014Ranked",
"gmtTime": "2026-03-08T23:00:00.000Z",
"sourceStr": "SI",
"sourceIconUrl": "https://images.fotmob.com/image_resources/news/si.png",
"page": {
"url": "/embed/news/01kk79jmekr0/arsenal-need-sell-superstar-four-players-considerranked"
}
},
{
"id": "ftbpro_01kk77nh7348",
"imageUrl": "https://images2.minutemediacdn.com/image/upload/c_crop,w_1919,h_1079,x_0,y_0/c_fill,w_912,h_516,f_auto,q_auto,g_auto/images/voltaxMediaLibrary/mmsport/si/01kk7b4hp7157m0sbm2f.jpg",
"title": "Transfer News, Rumors: Shock Zubimendi U-Turn Stings Man Utd; Real Madrid\u2019s Rodri Twist",
"gmtTime": "2026-03-09T00:05:00.000Z",
"sourceStr": "SI",
"sourceIconUrl": "https://images.fotmob.com/image_resources/news/si.png",
"page": {
"url": "/embed/news/01kk77nh7348/transfer-news-rumors-shock-zubimendi-u-turn-stings-man-utd-real-madrids-rodri-twist"
}
},
{
"id": "ftbpro_01khv73gpnbm",
"imageUrl": "https://images2.minutemediacdn.com/image/upload/c_crop,w_2141,h_1204,x_0,y_107/c_fill,w_912,h_516,f_auto,q_auto,g_auto/images/voltaxMediaLibrary/mmsport/si/01kj7qd6q1tmdh64dpn7.jpg",
"title": "Real Madrid\u2019s 10 Best Kits of All Time\u2014Ranked",
"gmtTime": "2026-03-08T22:00:00.000Z",
"sourceStr": "SI",
"sourceIconUrl": "https://images.fotmob.com/image_resources/news/si.png",
"page": {
"url": "/embed/news/01khv73gpnbm/real-madrids-10-best-kits-all-timeranked"
}
},
{
"id": "90hptfhwzvo61817ve6yo5cwr",
"imageUrl": "https://images.performgroup.com/di/library/omnisport/de/3d/pervis-estupinan_1vh3xc9744gyb15kz1mabotx3x.png?t=-741518868&w=520&h=300",
"title": "AC Milan 1-0 Inter: Estupinan strike settles Derby della Madonnina",
"gmtTime": "2026-03-08T22:55:22.000Z",
"sourceStr": "FotMob",
"sourceIconUrl": "https://images.fotmob.com/image_resources/news/fotmob.png",
"page": {
"url": "/news/90hptfhwzvo61817ve6yo5cwr-ac-milan-1-0-inter-estupinan-strike-settles-derby-della-madonnina"
}
},
{
"id": "ftbpro_01kk714gxhgj",
"imageUrl": "https://images2.minutemediacdn.com/image/upload/c_crop,w_1024,h_576,x_0,y_0/c_fill,w_912,h_516,f_auto,q_auto,g_auto/images/voltaxMediaLibrary/mmsport/si/01kk76ca6tg3gfyxsk6a.jpg",
"title": "'They Should Have Took Me'\u2014Tottenham Jibed By Record-Breaking English Manager",
"gmtTime": "2026-03-08T20:00:01.000Z",
"sourceStr": "SI",
"sourceIconUrl": "https://images.fotmob.com/image_resources/news/si.png",
"page": {
"url": "/embed/news/01kk714gxhgj/they-should-have-took-metottenham-jibed-record-breaking-english-manager"
}
}
]
}
}