Documentación de la API de fútbol
Todo lo que necesitas para integrar datos de fútbol en tu aplicación: una guía de inicio rápido, cada endpoint con código en cURL, Python, JavaScript y PHP, una especificación OpenAPI 3.1 y una colección para Postman.
Inicio rápido
De cero a datos de fútbol en vivo en tres pasos. El plan Free te da 2.000 peticiones diarias (14.000 al mes) sin necesidad de tarjeta.
- Crea una cuenta en sportapi.ai (correo electrónico o Google).
- Copia tu clave API desde la página de claves API. Las claves comienzan con
sk_live_. - Haz tu primera petición. El siguiente programa imprime los partidos de hoy con marcadores en vivo. Reemplaza
YOUR_API_KEYy ejecútalo.
curl "https://sportapi.ai/api/fixtures/date/2026-10-20" \
-H "X-Api-Key: YOUR_API_KEY"Salida esperada: una línea por partido, por ejemplo Premier League: Arsenal 2-1 Leeds United (FT). A continuación: consulta los eventos, alineaciones y estadísticas de un partido, una tabla de clasificación o recibe resultados empujados a través del WebSocket.
Autenticación
Cada endpoint de datos (calendario, equipos, clasificaciones, ligas, jugadores) requiere tu clave API en la cabecera X-Api-Key. Crea una clave en tu panel.
X-Api-Key: your_api_keycurl -H "X-Api-Key: your_api_key" https://sportapi.ai/api/fixtures/date/2026-10-10Los endpoints de cuenta (/api/auth/me, /api/profile) usan el token de inicio de sesión en su lugar: Authorization: Bearer your_token. Obtén uno desde /api/auth/login o con el inicio de sesión de Google.
Sin una clave, "Probar" en los endpoints de datos usa el acceso con límite de peticiones del sitio web, así que puedes explorar antes de registrarte.
URL base
https://sportapi.ai/apiTodos los endpoints son relativos a esta URL base. Una especificación OpenAPI 3.1 legible por máquina está disponible para generadores de código y herramientas como Postman.
Respuestas y límites
Las respuestas son JSON con un indicador success. Los errores incluyen un estado HTTP y un mensaje error: 401 clave faltante o inválida, 404 no encontrado, 429 límite diario o mensual alcanzado.
Límites de peticiones
Cada plan tiene un límite diario de peticiones que se restablece a las 00:00 UTC. El plan Free también tiene un límite mensual de 14.000 peticiones por mes calendario (UTC), desde el 1 de noviembre de 2026; los planes de pago no tienen tope mensual. Cada respuesta te indica tu situación:
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9876
X-RateLimit-Reset: 1791763200 (Unix time of the next reset)
# Free plan, from 1 November 2026:
X-RateLimit-Month-Limit: 14000
X-RateLimit-Month-Remaining: 9120
X-RateLimit-Month-Reset: 1793491200 (00:00 UTC on the 1st of next month)Si superas el límite, obtienes 429 con una cabecera Retry-After (segundos hasta el restablecimiento). El cuerpo JSON tiene scope: day o month, para que sepas qué límite alcanzaste.
Caché con ETag
Las respuestas GET exitosas incluyen un ETag. Envíalo de nuevo en If-None-Match y, si los datos no han cambiado, obtienes un 304 Not Modified vacío en lugar del cuerpo completo, ideal para polling de calendarios y clasificaciones.
curl -H "X-Api-Key: your_api_key" -H 'If-None-Match: "d1c0f0ad5808c8d8a0f13108edd63278"' https://sportapi.ai/api/leagues/24Fechas y horas
kickoff_utc y updated_at están en UTC (ISO 8601). date y datetime están en hora de Europa Central (CET/CEST), la zona horaria en la que se mantiene el calendario de partidos.
Especificación OpenAPI y colección Postman
Ambos archivos describen cada endpoint de datos con parámetros, esquemas de respuesta y ejemplos reales, y se generan desde la misma fuente, por lo que siempre coinciden con esta página.
apiKey en la colección. Cada petición tiene una respuesta de ejemplo.pip install openapi-python-client
openapi-python-client generate --url https://sportapi.ai/api/openapi.jsonPartidos (fixtures)
Recupera datos de partidos, incluyendo marcadores en vivo, eventos y resultados históricos.
status es uno de Scheduled, LIVE, FT, AET, PENS, Postponed, Cancelled, Suspended; mientras un partido está en vivo, minute contiene el reloj ("HT" en el descanso). result es 1 victoria local, 0 empate, -1 victoria visitante (null hasta que se juegue), y winner dice lo mismo en palabras, teniendo en cuenta una tanda de penaltis (penalty_home/penalty_away).
Obtener todos los partidos para una fecha específica.
datestringFecha en formato YYYY-MM-DDcurl "https://sportapi.ai/api/fixtures/date/2026-10-20" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"date": "2026-10-10",
"data": [
{
"id": 13596176,
"home_id": 311,
"away_id": 352,
"date": "2026-10-10",
"datetime": "2026-10-10 13:30:00",
"kickoff_utc": "2026-10-10T11:30:00Z",
"updated_at": "2026-10-11T01:43:09Z",
"home_score": 2,
"away_score": 1,
"result": 1,
"status": "FT",
"minute": null,
"stage": "",
"league_id": 24,
"league_name": "Premier League",
"league_geo": "GB-ENG",
"league_zone": "England",
"home_team": "Arsenal",
"home_short": "Arsenal",
"home_logo": "espn-359.png",
"home_geo": "",
"away_team": "Leeds United",
"away_short": "Leeds",
"away_logo": "espn-357.png",
"away_geo": "",
"penalty_home": null,
"penalty_away": null,
"winner": "home"
}
]
}Obtener información detallada sobre un partido específico, incluidos los eventos del partido.
idintegerID del partidocurl "https://sportapi.ai/api/fixtures/13596176" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"fixture": {
"id": 13596176,
"home_id": 311,
"away_id": 352,
"date": "2026-10-10",
"datetime": "2026-10-10 13:30:00",
"kickoff_utc": "2026-10-10T11:30:00Z",
"updated_at": "2026-10-11T01:43:09Z",
"home_score": 2,
"away_score": 1,
"ht_home": 0,
"ht_away": 0,
"result": 1,
"status": "FT",
"minute": null,
"stage": "",
"league_id": 24,
"league_name": "Premier League",
"league_geo": "GB-ENG",
"league_zone": "England",
"home_team": "Arsenal",
"home_short": "Arsenal",
"home_logo": "espn-359.png",
"home_geo": "",
"home_stadium": "Emirates Stadium",
"home_city": "London",
"home_coach": "Mikel Arteta",
"home_founded": 1886,
"away_team": "Leeds United",
"away_short": "Leeds",
"away_logo": "espn-357.png",
"away_geo": "",
"away_stadium": "Elland Road",
"away_city": "Leeds",
"away_coach": "Daniel Farke",
"away_founded": 1919,
"penalty_home": null,
"penalty_away": null,
"winner": "home",
"events": [
{
"event_type": "goal",
"team_side": "away",
"player_name": "J. Justin",
"minute": "55'",
"extra_info": "Goal"
},
{
"event_type": "yellow_card",
"team_side": "away",
"player_name": "A. Tanaka",
"minute": "36'",
"extra_info": null
}
]
}
}Obtener solo los eventos de un partido específico (goles, tarjetas, sustituciones).
idintegerID del partidocurl "https://sportapi.ai/api/fixtures/13596176/events" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"fixture_id": 13596176,
"data": [
{
"id": 19194470,
"event_type": "goal",
"team_side": "away",
"player_name": "J. Justin",
"player_urn": "urn:bbc:sportsdata:football:player:s-6icypdqtfk2k81ax0i49j5xpl",
"minute": "55'",
"extra_info": "Goal"
},
{
"id": 18933975,
"event_type": "yellow_card",
"team_side": "away",
"player_name": "A. Tanaka",
"player_urn": "urn:bbc:sportsdata:football:player:s-28ucbvor6b0yxreoieehudfc9",
"minute": "36'",
"extra_info": null
}
]
}Obtener estadísticas del partido para un partido: tiros, pases, faltas, entradas, paradas y tarjetas amarillas por equipo.
idintegerID del partidocurl "https://sportapi.ai/api/fixtures/13596176/stats" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"fixture_id": 13596176,
"available": true,
"data": {
"home": {
"shots": 13,
"shots_on_target": 6,
"shots_off_target": 7,
"fouls": 12,
"total_passes": 512,
"pass_accuracy": 85.3,
"tackles": 12,
"tackle_success": 66.7,
"saves": 4,
"yellow_cards": 1
},
"away": {
"shots": 11,
"shots_on_target": 5,
"shots_off_target": 6,
"fouls": 20,
"total_passes": 356,
"pass_accuracy": 78.9,
"tackles": 10,
"tackle_success": 60,
"saves": 4,
"yellow_cards": 4
}
}
}Obtener las alineaciones del partido, incluyendo el once inicial y los suplentes de ambos equipos.
idintegerID del partidocurl "https://sportapi.ai/api/fixtures/13596176/lineups" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"fixture_id": 13596176,
"available": true,
"data": {
"home": {
"starters": [
{
"name": "David Raya",
"position": "Goalkeeper",
"shirt": 1,
"is_captain": false,
"mins_played": 90
},
{
"name": "B. White",
"position": "Defender",
"shirt": 4,
"is_captain": false,
"mins_played": 63
}
],
"subs": [
{
"name": "P. Hincapié",
"position": "Substitute",
"shirt": 5,
"is_captain": false,
"mins_played": 8
}
]
},
"away": {
"starters": [
{
"name": "J. Trafford",
"position": "Goalkeeper",
"shirt": 1,
"is_captain": false,
"mins_played": 90
},
{
"name": "J. Bogle",
"position": "Midfielder",
"shirt": 2,
"is_captain": false,
"mins_played": 86
}
],
"subs": [
{
"name": "S. Longstaff",
"position": "Substitute",
"shirt": 8,
"is_captain": false,
"mins_played": 0
}
]
}
}
}Equipos
Accede a la información del equipo, incluyendo detalles, plantilla, partidos e historial de trofeos.
Obtener información del equipo con partidos recientes y ligas.
idintegerID del equipocurl "https://sportapi.ai/api/teams/311" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"team": {
"id": 311,
"name": "Arsenal",
"short_name": "Arsenal",
"league_id": 24,
"geo": "GB-ENG",
"country": "England",
"city": "London",
"coach_name": "Mikel Arteta",
"stadium_name": "Emirates Stadium",
"founded_year": 1886,
"logo_file": "espn-359.png"
},
"matches": [
{
"id": 16096707,
"home_id": 311,
"away_id": 10165,
"date": "2026-11-07",
"home_score": null,
"away_score": null,
"result": null,
"status": "Scheduled",
"league_id": 24,
"league_name": "Premier League",
"home_team": "Arsenal",
"away_team": "Hull City"
},
{
"id": 15868670,
"home_id": 162,
"away_id": 311,
"date": "2026-11-04",
"home_score": null,
"away_score": null,
"result": null,
"status": "Scheduled",
"league_id": 18,
"league_name": "UEFA Champions League",
"home_team": "Slavia Prague",
"away_team": "Arsenal"
}
],
"leagues": [
{
"id": 24,
"name": "Premier League"
},
{
"id": 18,
"name": "UEFA Champions League"
}
]
}Obtener la imagen del logotipo del equipo. Devuelve PNG/SVG o un escudo de marcador de posición.
idintegerID del equipocurl "https://sportapi.ai/api/teams/311/logo" \
-H "X-Api-Key: YOUR_API_KEY" \
-o logo.pngContent-Type: image/png
Binary image dataObtener un equipo por su slug de URL, con su liga, últimos resultados, próximos partidos y plantilla.
slugstringSlug del equipocurl "https://sportapi.ai/api/teams/slug/arsenal" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"team": {
"id": 311,
"name": "Arsenal",
"short_name": "Arsenal",
"slug": "arsenal",
"country": "England",
"city": "London",
"geo": "GB-ENG",
"founded_year": 1886,
"coach_name": "Mikel Arteta",
"stadium_name": "Emirates Stadium",
"logo_file": "espn-359.png",
"league": {
"id": 24,
"name": "Premier League",
"slug": "premier-league"
}
},
"results": [
{
"id": 13596176,
"date": "2026-10-10",
"home_score": 2,
"away_score": 1,
"status": "FT",
"result": 1,
"home_team": "Arsenal",
"home_slug": "arsenal",
"away_team": "Leeds United",
"away_slug": "leeds-united",
"league_name": "Premier League",
"league_slug": "premier-league"
}
],
"upcoming": [
{
"id": 13596702,
"date": "2026-10-13",
"datetime": "2026-10-13 21:00:00",
"status": "Scheduled",
"home_team": "Arsenal",
"home_slug": "arsenal",
"away_team": "Lille",
"away_slug": "lille",
"league_name": "UEFA Champions League"
}
],
"squad": [
{
"full_name": "David Raya",
"position": "Goalkeeper",
"jersey_number": 1,
"nationality": "ES",
"slug": "david-raya"
},
{
"full_name": "Kepa Arrizabalaga",
"position": "Goalkeeper",
"jersey_number": 13,
"nationality": "ES",
"slug": "kepa-arrizabalaga"
}
]
}Obtener la lista de jugadores del equipo organizada por posición.
idintegerID del equipocurl "https://sportapi.ai/api/teams/311/squad" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"squad": [
{
"id": 4904,
"full_name": "David Raya",
"position": "Goalkeeper",
"jersey_number": 1,
"nationality": "ES",
"date_of_birth": "1995-09-15",
"height": null,
"weight": null
},
{
"id": 4903,
"full_name": "Kepa Arrizabalaga",
"position": "Goalkeeper",
"jersey_number": 13,
"nationality": "ES",
"date_of_birth": "1994-10-03",
"height": null,
"weight": null
}
]
}Obtener el historial de trofeos y campeonatos del equipo.
idintegerID del equipocurl "https://sportapi.ai/api/teams/311/trophies" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"trophies": [
{
"year": 1994,
"position": 1,
"tournament_id": 26,
"name": "1994 UEFA Cup Winners' Cup Final",
"short_name": null,
"type": "domestic_league",
"country": null
},
{
"year": 1993,
"position": 1,
"tournament_id": 24,
"name": "1987 Football League Cup Final",
"short_name": null,
"type": "domestic_league",
"country": null
}
]
}Clasificaciones
Obtén tablas de clasificación y datos de forma de los equipos.
Obtener la lista de todas las ligas disponibles con datos de clasificación.
curl "https://sportapi.ai/api/standings/leagues" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"data": [
{
"id": 24,
"name": "Premier League",
"slug": "premier-league",
"zone": "England",
"geo": "GB-ENG"
},
{
"id": 1,
"name": "Spanish La Liga",
"slug": "spanish-la-liga",
"zone": "Spain",
"geo": "ES"
}
]
}Obtener la tabla actual de la liga. La forma lista los últimos 6 partidos, del más antiguo al más reciente. También puedes pasar el slug de la liga (por ejemplo, /api/standings/premier-league); la respuesta incluye entonces la liga.
leagueIdintegerID de la liga (o slug)curl "https://sportapi.ai/api/standings/24" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"data": [
{
"position": 1,
"team": {
"id": 324,
"name": "Manchester City",
"short_name": "Man City",
"slug": "manchester-city",
"logo": "espn-382.png"
},
"played": 5,
"won": 5,
"draw": 0,
"lost": 0,
"goals_for": 13,
"goals_against": 5,
"goal_difference": 8,
"points": 15,
"form": [
{
"result": "W",
"date": "2026-09-13",
"home_team": "Manchester United",
"away_team": "Manchester City",
"home_score": 0,
"away_score": 1,
"is_home": false
},
{
"result": "W",
"date": "2026-09-20",
"home_team": "Manchester City",
"away_team": "Sunderland",
"home_score": 5,
"away_score": 3,
"is_home": true
}
]
},
{
"position": 2,
"team": {
"id": 311,
"name": "Arsenal",
"short_name": "Arsenal",
"slug": "arsenal",
"logo": "espn-359.png"
},
"played": 6,
"won": 5,
"draw": 0,
"lost": 1,
"goals_for": 10,
"goals_against": 5,
"goal_difference": 5,
"points": 15,
"form": [
{
"result": "L",
"date": "2026-09-19",
"home_team": "Brighton & Hove Albion",
"away_team": "Arsenal",
"home_score": 3,
"away_score": 0,
"is_home": false
},
{
"result": "W",
"date": "2026-10-10",
"home_team": "Arsenal",
"away_team": "Leeds United",
"home_score": 2,
"away_score": 1,
"is_home": true
}
]
}
]
}Ligas
Accede a la información de la liga, incluyendo máximos goleadores, asistencias, tarjetas e historial de enfrentamientos directos.
Obtener todas las ligas agrupadas por país con información de cobertura de datos.
curl "https://sportapi.ai/api/leagues" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"data": [
{
"country": "England",
"geo": "GB-ENG",
"leagues": [
{
"id": 53,
"name": "Championship",
"geo": "GB-ENG",
"domestic": 1,
"has_standings": true,
"has_fixtures": true,
"fixtures_count": 737,
"teams_count": 24
},
{
"id": 26,
"name": "English Community Shield",
"geo": "GB-ENG",
"domestic": 1,
"has_standings": true,
"has_fixtures": true,
"fixtures_count": 2,
"teams_count": 0
}
]
}
]
}Obtener los detalles de la liga con equipos, próximos partidos y resultados recientes.
idintegerID de la ligacurl "https://sportapi.ai/api/leagues/24" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"id": 24,
"name": "Premier League",
"geo": "GB-ENG",
"country": "England",
"domestic": 1,
"teams": [
{
"id": 370,
"name": "AFC Bournemouth",
"logo_file": "espn-349.png"
},
{
"id": 311,
"name": "Arsenal",
"logo_file": "espn-359.png"
}
],
"upcoming_fixtures": [
{
"id": 13596518,
"date": "2026-10-11",
"datetime": "2026-10-11 15:00:00",
"home_team": "Crystal Palace",
"away_team": "Nottingham Forest"
}
],
"recent_results": [
{
"id": 13596181,
"date": "2026-10-10",
"home_team": "Manchester United",
"away_team": "Tottenham Hotspur",
"home_score": 1,
"away_score": 1
}
]
}Obtener los máximos goleadores de una liga específica. Temporada actual por defecto.
idintegerID de la ligalimitintegerFilas a devolver, 1-100 (por defecto 20)seasonstringall = todas las temporadas en lugar de la actualcurl "https://sportapi.ai/api/leagues/24/topscorers?limit=20" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"season_from": "2026-08-21",
"data": [
{
"rank": 1,
"player_name": "E. Haaland",
"player_urn": "urn:bbc:sportsdata:football:player:s-atzboo800gv7gic2rgvgo0kq1",
"team_id": 324,
"team_name": "Manchester City",
"goals": 5,
"penalties": 0
},
{
"rank": 1,
"player_name": "João Pedro",
"player_urn": "urn:bbc:sportsdata:football:player:s-eaqqezw2ed1u0tt3zc128mr1m",
"team_id": 322,
"team_name": "Chelsea",
"goals": 5,
"penalties": 0
}
]
}Obtener los máximos asistentes de una liga específica. Temporada actual por defecto.
idintegerID de la ligalimitintegerFilas a devolver, 1-100 (por defecto 20)seasonstringall = todas las temporadas en lugar de la actualcurl "https://sportapi.ai/api/leagues/24/topassists?limit=20" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"season_from": "2026-08-21",
"data": [
{
"rank": 1,
"player_name": "A. Semenyo",
"player_urn": "",
"team_id": 324,
"team_name": "Manchester City",
"assists": 3
},
{
"rank": 1,
"player_name": "C. Palmer",
"player_urn": "",
"team_id": 322,
"team_name": "Chelsea",
"assists": 3
}
]
}Obtener jugadores con más tarjetas (amarillas/rojas) en una liga. Temporada actual por defecto.
idintegerID de la ligalimitintegerFilas a devolver, 1-100 (por defecto 20)seasonstringall = todas las temporadas en lugar de la actualcurl "https://sportapi.ai/api/leagues/24/topcards?limit=20" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"season_from": "2026-08-21",
"data": [
{
"rank": 1,
"player_name": "A. Fatawu",
"player_urn": "urn:bbc:sportsdata:football:player:s-6cx5c6bzp1hq6c1vui53mxzx0",
"team_id": 10158,
"team_name": "Ipswich Town",
"yellow_cards": 3,
"red_cards": 1,
"total_cards": 4
},
{
"rank": 1,
"player_name": "V. Janelt",
"player_urn": "urn:bbc:sportsdata:football:player:s-9k8gysrsy1a261nhcszo4aoyx",
"team_id": 366,
"team_name": "Brentford",
"yellow_cards": 4,
"red_cards": 0,
"total_cards": 4
}
]
}Obtener el historial de enfrentamientos directos entre dos equipos.
team1integerID del primer equipoteam2integerID del segundo equipocurl "https://sportapi.ai/api/fixtures/h2h/311/312" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"team1": 311,
"team2": 312,
"data": [
{
"id": 604,
"home_id": 311,
"away_id": 312,
"date": "2026-01-08",
"home_score": 0,
"away_score": 0,
"result": 0,
"status": "FT",
"home_team": "Arsenal",
"away_team": "Liverpool",
"league_name": "Premier League"
},
{
"id": 577,
"home_id": 312,
"away_id": 311,
"date": "2025-08-31",
"home_score": 1,
"away_score": 0,
"result": 1,
"status": "FT",
"home_team": "Liverpool",
"away_team": "Arsenal",
"league_name": "Premier League"
}
]
}Jugadores
Accede a las estadísticas de los jugadores y datos de rendimiento por partido.
Obtener el perfil de un jugador: biografía, equipo y liga actual, estadísticas de carrera y temporada actual, partidos recientes y el próximo partido.
slugstringSlug del jugadorcurl "https://sportapi.ai/api/players/bukayo-saka" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"player": {
"id": 4928,
"full_name": "Bukayo Saka",
"slug": "bukayo-saka",
"position": "Forward",
"nationality": "GB-ENG",
"date_of_birth": "2001-09-05",
"height": null,
"weight": null,
"photo_url": null,
"jersey_number": 7,
"team_id": 311
},
"team": {
"id": 311,
"full_name": "Arsenal",
"slug": "arsenal",
"country": "England",
"geo": "GB-ENG",
"league_id": 24
},
"league": {
"id": 24,
"name": "Premier League",
"slug": "premier-league"
},
"linked": false,
"career": null,
"season": null,
"rank": null,
"matches": [],
"recent": [],
"next_match": {
"date": "2026-10-13",
"datetime": "2026-10-13 21:00:00",
"home_team": "Arsenal",
"home_slug": "arsenal",
"away_team": "Lille",
"away_slug": "lille",
"league_name": "UEFA Champions League"
},
"squad": [
{
"full_name": "David Raya",
"slug": "david-raya",
"position": "Goalkeeper",
"jersey_number": 1
}
]
}Obtener estadísticas por partido y totales de carrera para un jugador. Búsqueda por nombre del jugador e ID del equipo.
namestringNombre completo del jugadorteam_idintegerID del equipo al que pertenece el jugadorshirt_numberintegerOpcional — ayuda a desambiguar jugadores con nombres similarescurl "https://sportapi.ai/api/players/stats?name=Bukayo%20Saka&team_id=311&shirt_number=7" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"player": {
"shirt_number": 7,
"position": "Forward",
"nationality": "GB-ENG",
"team": {
"id": 311,
"name": "Arsenal"
}
},
"totals": {
"appearances": 46,
"goals": 12,
"assists": 6,
"mins_played": 2775,
"shots_total": 96,
"total_passes": 957,
"tackles": 42,
"saves": 0
},
"matches": [
{
"goals": 0,
"assists": 0,
"mins_played": 90,
"shots_total": 2,
"total_passes": 34,
"tackles": 1,
"saves": 0,
"position": "Attacking Midfielder",
"shirt_number": 7,
"is_starter": 1,
"date": "2026-10-10",
"home_score": 2,
"away_score": 1,
"home_id": 311,
"away_id": 352,
"home_team": "Arsenal",
"away_team": "Leeds United",
"league_name": "Premier League"
}
]
}Endpoints de autenticación
Endpoints de registro y inicio de sesión de usuario.
Registrar una nueva cuenta de usuario.
emailstringCorreo electrónico del usuario (obligatorio)passwordstringContraseña del usuario (obligatorio)namestringNombre para mostrar (opcional)curl -X POST "https://sportapi.ai/api/auth/register" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"YOUR_PASSWORD","name":"John Doe"}'{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIs...",
"user": { "id": 1, "email": "[email protected]" }
}Iniciar sesión con correo electrónico y contraseña.
emailstringCorreo electrónico del usuario (obligatorio)passwordstringContraseña del usuario (obligatorio)curl -X POST "https://sportapi.ai/api/auth/login" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"YOUR_PASSWORD"}'{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIs...",
"user": { "id": 1, "email": "[email protected]" }
}Obtener el usuario autenticado actual.
curl "https://sportapi.ai/api/auth/me" \
-H "Authorization: Bearer YOUR_LOGIN_TOKEN"{
"success": true,
"user": { "id": 1, "email": "[email protected]", "name": "John" }
}Obtener la URL de autorización de Google OAuth.
curl "https://sportapi.ai/api/auth/google"{
"success": true,
"url": "https://accounts.google.com/o/oauth2/v2/auth?..."
}Endpoints de usuario
Endpoints de perfil de usuario y contacto.
Obtener el perfil del usuario actual.
curl "https://sportapi.ai/api/profile" \
-H "Authorization: Bearer YOUR_LOGIN_TOKEN"{
"success": true,
"user": { "id": 1, "email": "[email protected]", "name": "John" }
}Actualizar perfil de usuario.
namestringNuevo nombre para mostrarcurl -X POST "https://sportapi.ai/api/profile" \
-H "Authorization: Bearer YOUR_LOGIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"New Name"}'{
"success": true,
"message": "Profile updated successfully"
}Enviar una solicitud a través del formulario de contacto.
namestringTu nombre (obligatorio)emailstringTu correo electrónico (obligatorio)subjectstringAsunto (opcional)messagestringTu mensaje (obligatorio)curl -X POST "https://sportapi.ai/api/contact" \
-H "Content-Type: application/json" \
-d '{"name":"John Doe","email":"[email protected]","subject":"API Question","message":"Your message..."}'{
"success": true,
"message": "Contact request submitted successfully"
}WebSocket
Conéctate al servidor WebSocket de SportAPI para recibir actualizaciones de marcadores en vivo enviadas a tu cliente en tiempo real, sin necesidad de polling.
Conexión
wss://sportapi.ai/ws?key=YOUR_API_KEYAutentícate pasando tu clave API como parámetro de consulta. La conexión se rechazará con un mensaje de error si la clave falta o no es válida.
Latencia de actualización
Las actualizaciones de marcador se envían aproximadamente 30–60 segundos después de que se marca un gol. Esto refleja el intervalo de actualización de nuestra fuente de datos en vivo.
Mensajes del cliente
Después de conectarte, envía mensajes JSON para suscribirte a partidos:
{ "action": "subscribe_all" }{ "action": "subscribe", "fixture_id": 12345 }{ "action": "unsubscribe", "fixture_id": 12345 }{ "action": "ping" }Mensajes del servidor
{
"type": "score_update",
"fixture_id": 12345,
"home_score": 2,
"away_score": 1,
"home_pen": null,
"away_pen": null,
"status": "LIVE",
"minute": "67'"
}Valores de status: Scheduled, LIVE, FT, AET, PENS, Postponed, Cancelled, Suspended. Al medio tiempo, el estado permanece LIVE y minute es "HT". home_pen/away_pen contienen el marcador de penaltis cuando existe uno (los endpoints REST los llaman penalty_home/penalty_away).
Ejemplo en JavaScript
const ws = new WebSocket('wss://sportapi.ai/ws?key=YOUR_API_KEY')
ws.onopen = () => {
// Subscribe to all live matches
ws.send(JSON.stringify({ action: 'subscribe_all' }))
// Or subscribe to a specific fixture
ws.send(JSON.stringify({ action: 'subscribe', fixture_id: 12345 }))
}
ws.onmessage = (event) => {
const msg = JSON.parse(event.data)
if (msg.type === 'score_update') {
console.log(`Fixture ${msg.fixture_id}: ${msg.home_score}–${msg.away_score} (${msg.status})`)
}
}
ws.onclose = () => console.log('Disconnected')
ws.onerror = (err) => console.error('WebSocket error', err)