Referencia

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.

  1. Crea una cuenta en sportapi.ai (correo electrónico o Google).
  2. Copia tu clave API desde la página de claves API. Las claves comienzan con sk_live_.
  3. Haz tu primera petición. El siguiente programa imprime los partidos de hoy con marcadores en vivo. Reemplaza YOUR_API_KEY y 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.

Cabecera HTTP
X-Api-Key: your_api_key
curl
curl -H "X-Api-Key: your_api_key" https://sportapi.ai/api/fixtures/date/2026-10-10

Los 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/api

Todos 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:

Cabeceras de respuesta
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
curl -H "X-Api-Key: your_api_key" -H 'If-None-Match: "d1c0f0ad5808c8d8a0f13108edd63278"' https://sportapi.ai/api/leagues/24

Fechas 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.

Genera un cliente de Python desde la especificación
pip install openapi-python-client
openapi-python-client generate --url https://sportapi.ai/api/openapi.json

Partidos (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).

GET/api/fixtures/date/{date}

Obtener todos los partidos para una fecha específica.

ParámetroTipoDescripción
datestringFecha en formato YYYY-MM-DD
Probar+
curl "https://sportapi.ai/api/fixtures/date/2026-10-20" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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"
    }
  ]
}
GET/api/fixtures/{id}

Obtener información detallada sobre un partido específico, incluidos los eventos del partido.

ParámetroTipoDescripción
idintegerID del partido
Probar+
curl "https://sportapi.ai/api/fixtures/13596176" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
      }
    ]
  }
}
GET/api/fixtures/{id}/events

Obtener solo los eventos de un partido específico (goles, tarjetas, sustituciones).

ParámetroTipoDescripción
idintegerID del partido
Probar+
curl "https://sportapi.ai/api/fixtures/13596176/events" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
    }
  ]
}
GET/api/fixtures/{id}/stats

Obtener estadísticas del partido para un partido: tiros, pases, faltas, entradas, paradas y tarjetas amarillas por equipo.

ParámetroTipoDescripción
idintegerID del partido
Probar+
curl "https://sportapi.ai/api/fixtures/13596176/stats" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
    }
  }
}
GET/api/fixtures/{id}/lineups

Obtener las alineaciones del partido, incluyendo el once inicial y los suplentes de ambos equipos.

ParámetroTipoDescripción
idintegerID del partido
Probar+
curl "https://sportapi.ai/api/fixtures/13596176/lineups" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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.

GET/api/teams/{id}

Obtener información del equipo con partidos recientes y ligas.

ParámetroTipoDescripción
idintegerID del equipo
Probar+
curl "https://sportapi.ai/api/teams/311" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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"
    }
  ]
}
GET/api/teams/{id}/logo

Obtener la imagen del logotipo del equipo. Devuelve PNG/SVG o un escudo de marcador de posición.

ParámetroTipoDescripción
idintegerID del equipo
Probar+
curl "https://sportapi.ai/api/teams/311/logo" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -o logo.png
Ejemplo de respuesta
Content-Type: image/png
Binary image data
GET/api/teams/slug/{slug}

Obtener un equipo por su slug de URL, con su liga, últimos resultados, próximos partidos y plantilla.

ParámetroTipoDescripción
slugstringSlug del equipo
Probar+
curl "https://sportapi.ai/api/teams/slug/arsenal" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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"
    }
  ]
}
GET/api/teams/{id}/squad

Obtener la lista de jugadores del equipo organizada por posición.

ParámetroTipoDescripción
idintegerID del equipo
Probar+
curl "https://sportapi.ai/api/teams/311/squad" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
    }
  ]
}
GET/api/teams/{id}/trophies

Obtener el historial de trofeos y campeonatos del equipo.

ParámetroTipoDescripción
idintegerID del equipo
Probar+
curl "https://sportapi.ai/api/teams/311/trophies" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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.

GET/api/standings/leagues

Obtener la lista de todas las ligas disponibles con datos de clasificación.

Probar+
curl "https://sportapi.ai/api/standings/leagues" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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"
    }
  ]
}
GET/api/standings/{leagueId}

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.

ParámetroTipoDescripción
leagueIdintegerID de la liga (o slug)
Probar+
curl "https://sportapi.ai/api/standings/24" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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.

GET/api/leagues

Obtener todas las ligas agrupadas por país con información de cobertura de datos.

Probar+
curl "https://sportapi.ai/api/leagues" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
        }
      ]
    }
  ]
}
GET/api/leagues/{id}

Obtener los detalles de la liga con equipos, próximos partidos y resultados recientes.

ParámetroTipoDescripción
idintegerID de la liga
Probar+
curl "https://sportapi.ai/api/leagues/24" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
    }
  ]
}
GET/api/leagues/{id}/topscorers

Obtener los máximos goleadores de una liga específica. Temporada actual por defecto.

ParámetroTipoDescripción
idintegerID de la liga
limitintegerFilas a devolver, 1-100 (por defecto 20)
seasonstringall = todas las temporadas en lugar de la actual
Probar+
curl "https://sportapi.ai/api/leagues/24/topscorers?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
    }
  ]
}
GET/api/leagues/{id}/topassists

Obtener los máximos asistentes de una liga específica. Temporada actual por defecto.

ParámetroTipoDescripción
idintegerID de la liga
limitintegerFilas a devolver, 1-100 (por defecto 20)
seasonstringall = todas las temporadas en lugar de la actual
Probar+
curl "https://sportapi.ai/api/leagues/24/topassists?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
    }
  ]
}
GET/api/leagues/{id}/topcards

Obtener jugadores con más tarjetas (amarillas/rojas) en una liga. Temporada actual por defecto.

ParámetroTipoDescripción
idintegerID de la liga
limitintegerFilas a devolver, 1-100 (por defecto 20)
seasonstringall = todas las temporadas en lugar de la actual
Probar+
curl "https://sportapi.ai/api/leagues/24/topcards?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
    }
  ]
}
GET/api/fixtures/h2h/{team1}/{team2}

Obtener el historial de enfrentamientos directos entre dos equipos.

ParámetroTipoDescripción
team1integerID del primer equipo
team2integerID del segundo equipo
Probar+
curl "https://sportapi.ai/api/fixtures/h2h/311/312" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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.

GET/api/players/{slug}

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.

ParámetroTipoDescripción
slugstringSlug del jugador
Probar+
curl "https://sportapi.ai/api/players/bukayo-saka" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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
    }
  ]
}
GET/api/players/stats

Obtener estadísticas por partido y totales de carrera para un jugador. Búsqueda por nombre del jugador e ID del equipo.

ParámetroTipoDescripción
namestringNombre completo del jugador
team_idintegerID del equipo al que pertenece el jugador
shirt_numberintegerOpcional — ayuda a desambiguar jugadores con nombres similares
Probar+
curl "https://sportapi.ai/api/players/stats?name=Bukayo%20Saka&team_id=311&shirt_number=7" \
  -H "X-Api-Key: YOUR_API_KEY"
Ejemplo de respuesta
{
  "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.

POST/api/auth/register

Registrar una nueva cuenta de usuario.

ParámetroTipoDescripción
emailstringCorreo electrónico del usuario (obligatorio)
passwordstringContraseña del usuario (obligatorio)
namestringNombre para mostrar (opcional)
Probar+
curl -X POST "https://sportapi.ai/api/auth/register" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"YOUR_PASSWORD","name":"John Doe"}'
Ejemplo de respuesta
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": { "id": 1, "email": "[email protected]" }
}
POST/api/auth/login

Iniciar sesión con correo electrónico y contraseña.

ParámetroTipoDescripción
emailstringCorreo electrónico del usuario (obligatorio)
passwordstringContraseña del usuario (obligatorio)
Probar+
curl -X POST "https://sportapi.ai/api/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"YOUR_PASSWORD"}'
Ejemplo de respuesta
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": { "id": 1, "email": "[email protected]" }
}
GET/api/auth/me

Obtener el usuario autenticado actual.

Requiere autenticación
Probar+
curl "https://sportapi.ai/api/auth/me" \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN"
Ejemplo de respuesta
{
  "success": true,
  "user": { "id": 1, "email": "[email protected]", "name": "John" }
}
GET/api/auth/google

Obtener la URL de autorización de Google OAuth.

Probar+
curl "https://sportapi.ai/api/auth/google"
Ejemplo de respuesta
{
  "success": true,
  "url": "https://accounts.google.com/o/oauth2/v2/auth?..."
}

Endpoints de usuario

Endpoints de perfil de usuario y contacto.

GET/api/profile

Obtener el perfil del usuario actual.

Requiere autenticación
Probar+
curl "https://sportapi.ai/api/profile" \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN"
Ejemplo de respuesta
{
  "success": true,
  "user": { "id": 1, "email": "[email protected]", "name": "John" }
}
POST/api/profile

Actualizar perfil de usuario.

Requiere autenticación
ParámetroTipoDescripción
namestringNuevo nombre para mostrar
Probar+
curl -X POST "https://sportapi.ai/api/profile" \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"New Name"}'
Ejemplo de respuesta
{
  "success": true,
  "message": "Profile updated successfully"
}
POST/api/contact

Enviar una solicitud a través del formulario de contacto.

ParámetroTipoDescripción
namestringTu nombre (obligatorio)
emailstringTu correo electrónico (obligatorio)
subjectstringAsunto (opcional)
messagestringTu mensaje (obligatorio)
Probar+
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..."}'
Ejemplo de respuesta
{
  "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

URL de WebSocket
wss://sportapi.ai/ws?key=YOUR_API_KEY

Autentí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:

Suscribirse a todos los partidos en vivo
{ "action": "subscribe_all" }
Suscribirse a un partido específico
{ "action": "subscribe", "fixture_id": 12345 }
Cancelar la suscripción de un partido
{ "action": "unsubscribe", "fixture_id": 12345 }
Ping
{ "action": "ping" }

Mensajes del servidor

Actualización de marcador
{
  "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

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)