Necesitas detalles de la liga para una aplicación deportiva esta semana: IDs de liga, nombres de liga y cómo se conectan a equipos y jugadores. Al final de esta guía, podrás consultar la API de FotMob en Zyla API Hub para buscar ligas, obtener perfiles de equipos que incluyen contexto de liga y mapear zonas horarias de usuarios para una mejor experiencia de programación, todo con solicitudes que puedes copiar y pegar.
Qué hace esta API y cómo te ayuda a lanzar
La API de FotMob proporciona datos estructurados de fútbol que los desarrolladores en activo pueden implementar directamente en producción. En el contexto de "detalles de la liga", puedes:
- Descubrir ligas por nombre y recuperar sus IDs usando el endpoint de búsqueda (devuelve leagueId y leagueName en entidades coincidentes).
- Obtener detalles del equipo, que incluyen metadatos generales y contexto de liga (como se describe en el endpoint).
- Resolver y presentar zonas horarias para los usuarios al mostrar horarios de partidos o calendarios.
Los casos de uso típicos incluyen: construir seleccionadores de equipos y ligas, conectar plantillas a sus competiciones y normalizar los horarios de eventos en las localidades de los usuarios.
Comenzando en Zyla API Hub
Abre la página de la API de FotMob en Zyla API Hub, haz clic en Suscribirse o Comenzar Prueba Gratuita si está disponible, y genera una clave API. La autenticación es a través del encabezado HTTP Authorization: Bearer YOUR_API_KEY. La facturación es por suscripción + cuota (no por llamada). Para la primera API, puedes comenzar una prueba de 7 días en la página de listado; consulta la página de la API para las opciones de acceso y precios actuales.
Cada solicitud en este artículo utiliza la URL de ejecución de Zyla API Hub. No uses ningún host de origen; puedes llamar directamente desde tu backend con tu única clave API de Zyla.
Endpoints principales que utilizarás
A continuación se presentan los endpoints relevantes para construir características centradas en la liga. Cada uno es un GET y requiere el encabezado de autorización.
Buscar equipos, jugadores y ligas
Método: GET
URL: https://zylalabs.com/api/13505/fotmob-api/29856/search-teams-players-and-leagues
Propósito: Devuelve sugerencias de búsqueda para equipos, jugadores y ligas que coincidan con la consulta. Para flujos de trabajo impulsados por ligas, aquí es donde capturas leagueId y leagueName de los resultados asociados a equipos o partidos.
Parámetros requeridos:
- q (string): la consulta de búsqueda
Copia y pega cURL (buscando “arsenal”):
curl -s -X GET "https://zylalabs.com/api/13505/fotmob-api/29833/get-timezones" \
-H "Authorization: Bearer YOUR_API_KEY"
Utiliza esto para localizar rápidamente un leagueId y leagueName que almacenarás o usarás para filtrar datos posteriores. La respuesta de búsqueda incluye entradas como:
[
"Africa/Abidjan",
"Africa/Accra",
"Africa/Addis_Ababa",
"Africa/Algiers",
"Africa/Asmara",
"Africa/Bamako",
"Africa/Bangui",
"Africa/Banjul",
"Africa/Bissau",
"Africa/Blantyre",
"Africa/Brazzaville",
"Africa/Bujumbura",
"Africa/Cairo",
"Africa/Casablanca",
"Africa/Ceuta",
"Africa/Conakry",
"Africa/Dakar",
"Africa/Dar_es_Salaam",
"Africa/Djibouti",
"Africa/Douala",
"Africa/El_Aaiun",
"Africa/Freetown",
"Africa/Gaborone",
"Africa/Harare",
"Africa/Johannesburg",
"Africa/Juba",
"Africa/Kampala",
"Africa/Khartoum",
"Africa/Kigali",
"Africa/Kinshasa",
"Africa/Lagos",
"Africa/Libreville",
"Africa/Lome",
"Africa/Luanda",
"Africa/Lubumbashi",
"Africa/Lusaka",
"Africa/Malabo",
"Africa/Maputo",
"Africa/Maseru",
"Africa/Mbabane",
"Africa/Mogadishu",
"Africa/Monrovia",
"Africa/Nairobi",
"Africa/Ndjamena",
"Africa/Niamey",
"Africa/Nouakchott",
"Africa/Ouagadougou",
"Africa/Porto-Novo",
"Africa/Sao_Tome",
"Africa/Tripoli",
"Africa/Tunis",
"Africa/Windhoek",
"America/Adak",
"America/Anchorage",
"America/Anguilla",
"America/Antigua",
"America/Araguaina",
"America/Argentina/Buenos_Aires",
"America/Argentina/Catamarca",
"America/Argentina/Cordoba",
"America/Argentina/Jujuy",
"America/Argentina/La_Rioja",
"America/Argentina/Mendoza",
"America/Argentina/Rio_Gallegos",
"America/Argentina/Salta",
"America/Argentina/San_Juan",
"America/Argentina/San_Luis",
"America/Argentina/Tucuman",
"America/Argentina/Ushuaia",
"America/Aruba",
"America/Asuncion",
"America/Atikokan",
"America/Bahia",
"America/Bahia_Banderas",
"America/Barbados",
"America/Belem",
"America/Belize",
"America/Blanc-Sablon",
"America/Boa_Vista",
"America/Bogota",
"America/Boise",
"America/Cambridge_Bay",
"America/Campo_Grande",
"America/Cancun",
"America/Caracas",
"America/Cayenne",
"America/Cayman",
"America/Chicago",
"America/Chihuahua",
"America/Ciudad_Juarez",
"America/Costa_Rica",
"America/Coyhaique",
"America/Creston",
"America/Cuiaba",
"America/Curacao",
"America/Danmarkshavn",
"America/Dawson",
"America/Dawson_Creek",
"America/Denver",
"America/Detroit",
"America/Dominica",
"America/Edmonton",
"America…
De estas sugerencias, puedes extraer leagueId y leagueName para contextos de equipo o partido, que a menudo es todo lo que necesitas para filtrar o vincular contenido por competición.
Obtener detalles del equipo
Método: GET
URL: https://zylalabs.com/api/13505/fotmob-api/29857/get-team-details
Propósito: Devuelve los detalles generales (nombre, país, liga, enlaces) de un equipo. Úsalo para confirmar el contexto de liga de un equipo y mostrar nombres canónicos en tu interfaz de usuario.
Parámetros requeridos:
- team_id (string): el identificador del equipo
Ejemplo de solicitud (para team_id 8634):
La respuesta contiene metadatos generales del equipo. Úsalo para alinear los registros de equipos con la liga que descubriste en la búsqueda. Debido a que el ejemplo a continuación es autoritativo, mantén sus nombres de campo y tipos tal como están al modelar tu integración:
{
"id": 8634,
"type": "team",
"name": "Barcelona",
"latestSeason": "2026/2027",
"shortName": "Barcelona",
"country": "ESP",
"gender": "male",
"faqJSONLD": {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "When is Barcelona's next match?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Barcelona's next match is at 15:30 BST on Sun, 16 Aug 2026 against Basel."
}
},
{
"@type": "Question",
"name": "Where is Barcelona's stadium?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Barcelona stadium is located in Barcelona and is called Spotify Camp Nou."
}
},
{
"@type": "Question",
"name": "What is the capacity of Spotify Camp Nou?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The capacity for Spotify Camp Nou is 99787."
}
}…
Notas prácticas:
- Usa latestSeason para limitar tu interfaz de usuario por temporada (por ejemplo, filtra plantillas o partidos que tengas en otro lugar por esa cadena de temporada).
- Almacena país y género si permites que los usuarios filtren por región o tipo de competición.
Obtener detalles del jugador
Método: GET
URL: https://zylalabs.com/api/13505/fotmob-api/29855/get-player-details
Propósito: Devuelve el perfil del jugador (biografía, equipo actual, rasgos y datos de carrera). Al construir vistas de liga, vincula el primaryTeam de un jugador a un equipo, luego deriva su contexto de liga usando datos de equipo o de búsqueda.
Parámetros requeridos:
- player_id (string): el identificador del jugador
Ejemplo de solicitud (para player_id 961995):
Respuesta de muestra (truncada a campos clave que conectarás):
{
"id": 961995,
"name": "Bukayo Saka",
"birthDate": {
"utcTime": "2001-09-05T00:00:00.000Z",
"timezone": "UTC"
},
"contractEnd": {
"utcTime": "2030-06-30T00:00:00.000Z",
"timezone": "UTC"
},
"isCoach": false,
"isCaptain": false,
"gender": "male",
"primaryTeam": {
"teamId": 9825,
"teamName": "Arsenal",
"onLoan": false,
"teamColors": {
"color": "#bd0510",
"colorAlternate": "#bd0510",
"colorAway": "#101010",
"colorAwayAlternate": "#ffffff"
}
},
"positionDescription": {
"positions": [
{
"strPos": {
"label": "Right Winger",
"key": "rightwinger"
},
"strPosShort": {
"label": "RW",
"key": "rightwinger_short"
},
"occurences": 41,
"position": "82",
"isMainPosition": true,
"pitchPositionData": {
"right": 0.83,
"top": 0.26
}
},…
Notas prácticas:
- Usa primaryTeam.teamId para conectar jugadores al registro del equipo que obtuviste de los detalles del equipo o de las sugerencias de búsqueda.
- Los campos de tiempo utilizan UTC; convierte usando la preferencia de zona horaria de tu usuario.
Obtener zonas horarias (ejemplo oficial)
Método: GET
URL: https://zylalabs.com/api/13505/fotmob-api/29833/get-timezones
Propósito: Devuelve identificadores de zonas horarias soportadas. Usa esto para presentar una lista segura y en lista blanca para la configuración del usuario o para mapear horarios de partidos programados.
cURL oficial:
Respuesta JSON oficial:
[
"Africa/Abidjan",
"Africa/Accra",
"Africa/Addis_Ababa",
"Africa/Algiers",
"Africa/Asmara",
"Africa/Bamako",
"Africa/Bangui",
"Africa/Banjul",
"Africa/Bissau",
"Africa/Blantyre",
"Africa/Brazzaville",
"Africa/Bujumbura",
"Africa/Cairo",
"Africa/Casablanca",
"Africa/Ceuta",
"Africa/Conakry",
"Africa/Dakar",
"Africa/Dar_es_Salaam",
"Africa/Djibouti",
"Africa/Douala",
"Africa/El_Aaiun",
"Africa/Freetown",
"Africa/Gaborone",
"Africa/Harare",
"Africa/Johannesburg",
"Africa/Juba",
"Africa/Kampala",
"Africa/Khartoum",
"Africa/Kigali",
"Africa/Kinshasa",
"Africa/Lagos",
"Africa/Libreville",
"Africa/Lome",
"Africa/Luanda",
"Africa/Lubumbashi",
"Africa/Lusaka",
"Africa/Malabo",
"Africa/Maputo",
"Africa/Maseru",
"Africa/Mbabane",
"Africa/Mogadishu",
"Africa/Monrovia",
"Africa/Nairobi",
"Africa/Ndjamena",
"Africa/Niamey",
"Africa/Nouakchott",
"Africa/Ouagadougou",
"Africa/Porto-Novo",
"Africa/Sao_Tome",
"Africa/Tripoli",
"Africa/Tunis",
"Africa/Windhoek",
"America/Adak",
"America/Anchorage",
"America/Anguilla",
"America/Antigua",
"America/Araguaina",
"America/Argentina/Buenos_Aires",
"America/Argentina/Catamarca",
"America/Argentina/Cordoba",
"America/Argentina/Jujuy",
"America/Argentina/La_Rioja",
"America/Argentina/Mendoza",
"America/Argentina/Rio_Gallegos",
"America/Argentina/Salta",
"America/Argentina/San_Juan",
"America/Argentina/San_Luis",
"America/Argentina/Tucuman",
"America/Argentina/Ushuaia",
"America/Aruba",
"America/Asuncion",
"America/Atikokan",
"America/Bahia",
"America/Bahia_Banderas",
"America/Barbados",
"America/Belem",
"America/Belize",
"America/Blanc-Sablon",
"America/Boa_Vista",
"America/Bogota",
"America/Boise",
"America/Cambridge_Bay",
"America/Campo_Grande",
"America/Cancun",
"America/Caracas",
"America/Cayenne",
"America/Cayman",
"America/Chicago",
"America/Chihuahua",
"America/Ciudad_Juarez",
"America/Costa_Rica",
"America/Coyhaique",
"America/Creston",
"America/Cuiaba",
"America/Curacao",
"America/Danmarkshavn",
"America/Dawson",
"America/Dawson_Creek",
"America/Denver",
"America/Detroit",
"America/Dominica",
"America/Edmonton",
"America…
Usa estos identificadores con cualquier biblioteca de fecha y hora para convertir las marcas de tiempo UTC de partidos o contratos para su visualización.
Cómo ensamblar “detalles de la liga” con los endpoints disponibles
Aunque no hay un endpoint dedicado para “obtener detalles de la liga”, puedes derivar las piezas esenciales para la mayoría de las interfaces de producción:
- Buscar por equipo o palabra clave de liga con el endpoint de búsqueda y capturar leagueId y leagueName de las sugerencias.
- Enriquecer opcionalmente el contexto obteniendo detalles del equipo para los equipos relevantes; el perfil del equipo incluye detalles generales y contexto de liga.
- Vincular jugadores a equipos a través de primaryTeam.teamId (de los detalles del jugador) al construir listas de plantillas filtradas por liga.
- Localizar horarios usando el endpoint de zonas horarias más cualquier campo utcTime encontrado en los metadatos de partidos de jugadores o de búsqueda.
Ejemplo de código: buscar ligas por palabra clave (Python)
Este ejemplo llama al endpoint de búsqueda, luego extrae pares de leagueId/leagueName de las sugerencias. Refleja el cURL mostrado anteriormente.
import os
import requests
API_KEY = os.getenv("ZYLA_API_KEY", "YOUR_API_KEY")
q = "arsenal"
url = "https://zylalabs.com/api/13505/fotmob-api/29856/search-teams-players-and-leagues"
headers = {"Authorization": f"Bearer {API_KEY}"}
params = {"q": q}
resp = requests.get(url, headers=headers, params=params, timeout=30)
resp.raise_for_status()
data = resp.json()
league_refs = []
for block in data:
for s in block.get("suggestions", []):
# Las sugerencias pueden ser equipo, jugador, partido, liga (varía).
# Solo recopilamos entradas que expongan leagueId/leagueName.
league_id = s.get("leagueId")
league_name = s.get("leagueName")
if league_id is not None and league_name is not None:
league_refs.append({"leagueId": league_id, "leagueName": league_name})
# Eliminar duplicados mientras se preserva el orden
seen = set()
unique_leagues = []
for item in league_refs:
key = (item["leagueId"], item["leagueName"])
if key not in seen:
seen.add(key)
unique_leagues.append(item)
print(unique_leagues)
Consejos:
- Almacena en caché los resultados por consulta q durante un corto TTL (por ejemplo, unas pocas horas) si renderizas una interfaz de búsqueda a medida que escribes.
- leagueId es numérico en la muestra; almacénalo como un entero en tu base de datos para evitar desajustes de tipo.
Detalles de implementación práctica
- Autenticación: establece Authorization: Bearer YOUR_API_KEY en cada llamada.
- Marcas de tiempo: los valores utcTime están en UTC. Convierte usando una zona horaria soportada del endpoint de zonas horarias o tu propio mapa.
- Caché: los endpoints de búsqueda son buenos candidatos para cachés de corta duración para evitar volver a consultar la misma entrada.
- Cuotas: la facturación es por suscripción + cuota, no por llamada. La primera API ofrece una prueba de 7 días en la página del artículo; consulta el listado para los límites actuales antes de realizar pruebas de carga.
- Manejo de errores: trata las respuestas no 2xx como transitorias (vuelve a intentar con retroceso) o errores de validación (muestra al usuario) dependiendo del contexto.
Casos de uso en el mundo real
- Selector de liga: usa el endpoint de búsqueda para poblar un menú desplegable con pares de leagueName/leagueId a medida que el usuario escribe. Persiste leagueId para filtrado posterior.
- Directorio de equipos por liga: después de que el usuario seleccione una liga de los resultados de búsqueda, muestra equipos conocidos que se mapean a esa liga. Usa detalles del equipo para confirmar identidad y metadatos (nombre, país, latestSeason).
- Explorador de plantillas: obtiene detalles de jugadores, vincula por primaryTeam.teamId y muestra solo jugadores cuyos equipos pertenecen a la liga que el usuario seleccionó.
- Horarios conscientes del tiempo: si también muestras partidos próximos de tu propia tienda, presenta matchDate y utcTime junto con una zona horaria de get-timezones para que los usuarios vean horarios de inicio localizados.
Llamando a la API desde agentes de IA a través de MCP
Si trabajas dentro de un cliente compatible con MCP (por ejemplo, Claude Code, Cursor, Windsurf), puedes dirigir llamadas a los mismos endpoints a través del endpoint MCP de Zyla:
Proporciona tu clave API de Zyla al configurar la herramienta MCP para que tu agente pueda llamar a los endpoints de la API de FotMob utilizando la misma autorización. Esto mantiene tus flujos de trabajo de IDE/agente y código del servidor en el mismo contrato de datos.
Flujo de extremo a extremo para obtener detalles de la liga esta semana
- Suscríbete en el listado de la API de FotMob y obtén tu clave API.
- Implementa un cuadro de búsqueda simple que llame al endpoint de búsqueda y capture leagueId/leagueName de las sugerencias.
- Almacena el leagueId seleccionado. Opcionalmente, obtén detalles del equipo para los equipos que mostrarás bajo esa liga.
- Cuando muestres jugadores o partidos, deriva el contexto de liga a través de su equipo relacionado o a través de las sugerencias de búsqueda que ya tienes.
- Usa el endpoint de zonas horarias para renderizar los tiempos locales de usuario para eventos con campos utcTime.
FAQ
¿Cómo obtengo un leagueId?
Usa el endpoint de búsqueda con una cadena de consulta (por ejemplo, un nombre de liga o equipo). La matriz de sugerencias incluye leagueId y leagueName para entidades coincidentes.
¿Puedo obtener un perfil de liga directamente?
No se lista aquí un endpoint dedicado para “detalles de la liga”. Deriva la información de la liga a través de la búsqueda (leagueId, leagueName) y detalles del equipo para contexto.
¿En qué zona horaria están los campos de fecha y hora?
UTC. Convierte usando una zona horaria del endpoint de get-timezones y la preferencia de tu usuario.
¿Hay un plan gratuito?
No se indica un plan gratuito. La facturación es por suscripción + cuota. El listado de la API de FotMob ofrece una prueba de 7 días; consulta la página del artículo para las opciones de acceso actuales.
¿Cómo me autentico?
Envía Authorization: Bearer YOUR_API_KEY en cada solicitud a los endpoints de Zyla API Hub.
¿Listo para conectar esto? Crea tu cuenta, obtén tu clave y comienza a construir con la API de FotMob. La prueba de 7 días comienza en la página del artículo: Comienza la prueba de 7 días en la API de FotMob. Zyla API Hub agrega más de 10,000 APIs públicas bajo una clave, para que puedas añadir la siguiente integración sin cambiar tu flujo de autenticación.
Respuesta oficial de la API
[
"Africa/Abidjan",
"Africa/Accra",
"Africa/Addis_Ababa",
"Africa/Algiers",
"Africa/Asmara",
"Africa/Bamako",
"Africa/Bangui",
"Africa/Banjul",
"Africa/Bissau",
"Africa/Blantyre",
"Africa/Brazzaville",
"Africa/Bujumbura",
"Africa/Cairo",
"Africa/Casablanca",
"Africa/Ceuta",
"Africa/Conakry",
"Africa/Dakar",
"Africa/Dar_es_Salaam",
"Africa/Djibouti",
"Africa/Douala",
"Africa/El_Aaiun",
"Africa/Freetown",
"Africa/Gaborone",
"Africa/Harare",
"Africa/Johannesburg",
"Africa/Juba",
"Africa/Kampala",
"Africa/Khartoum",
"Africa/Kigali",
"Africa/Kinshasa",
"Africa/Lagos",
"Africa/Libreville",
"Africa/Lome",
"Africa/Luanda",
"Africa/Lubumbashi",
"Africa/Lusaka",
"Africa/Malabo",
"Africa/Maputo",
"Africa/Maseru",
"Africa/Mbabane",
"Africa/Mogadishu",
"Africa/Monrovia",
"Africa/Nairobi",
"Africa/Ndjamena",
"Africa/Niamey",
"Africa/Nouakchott",
"Africa/Ouagadougou",
"Africa/Porto-Novo",
"Africa/Sao_Tome",
"Africa/Tripoli",
"Africa/Tunis",
"Africa/Windhoek",
"America/Adak",
"America/Anchorage",
"America/Anguilla",
"America/Antigua",
"America/Araguaina",
"America/Argentina/Buenos_Aires",
"America/Argentina/Catamarca",
"America/Argentina/Cordoba",
"America/Argentina/Jujuy",
"America/Argentina/La_Rioja",
"America/Argentina/Mendoza",
"America/Argentina/Rio_Gallegos",
"America/Argentina/Salta",
"America/Argentina/San_Juan",
"America/Argentina/San_Luis",
"America/Argentina/Tucuman",
"America/Argentina/Ushuaia",
"America/Aruba",
"America/Asuncion",
"America/Atikokan",
"America/Bahia",
"America/Bahia_Banderas",
"America/Barbados",
"America/Belem",
"America/Belize",
"America/Blanc-Sablon",
"America/Boa_Vista",
"America/Bogota",
"America/Boise",
"America/Cambridge_Bay",
"America/Campo_Grande",
"America/Cancun",
"America/Caracas",
"America/Cayenne",
"America/Cayman",
"America/Chicago",
"America/Chihuahua",
"America/Ciudad_Juarez",
"America/Costa_Rica",
"America/Coyhaique",
"America/Creston",
"America/Cuiaba",
"America/Curacao",
"America/Danmarkshavn",
"America/Dawson",
"America/Dawson_Creek",
"America/Denver",
"America/Detroit",
"America/Dominica",
"America/Edmonton",
"America…