Necesitas una API para obtener detalles de competiciones rápidamente: nombres, IDs y metadatos como la disponibilidad de clasificaciones, para que puedas integrarlo en tu página de fixtures, selector de ligas o canal de ingestión esta semana. Al final de este artículo, podrás consultar competiciones de fútbol por país y deporte, analizar la respuesta que necesitas y, opcionalmente, enriquecer la interfaz de usuario con detalles de jugadores de la misma fuente.
Qué hace esta API y cuándo usarla
La API de 365Scores en Zyla API Hub expone datos deportivos estructurados. Para competiciones, devuelve una lista de competiciones para un deporte y país dados, junto con metadatos útiles como si tienen clasificaciones, estadísticas, clasificaciones en vivo y el número de la temporada actual. Casos de uso típicos:
- Completar el directorio de competiciones de un país (por ejemplo, mostrar todas las ligas de fútbol de Portugal).
- Generar menús desplegables para la selección de ligas por deporte y país.
- Almacenar identificadores de ligas para solicitar datos relacionados más tarde (por ejemplo, clasificaciones o estadísticas en tus propios sistemas).
- Enriquecer las páginas de equipos o jugadores con enlaces cruzados a las competiciones en las que participan.
También puedes obtener datos centrados en jugadores (estadísticas destacadas, partidos y perfiles completos) de la misma API para proporcionar contexto alrededor de una competición.
Comenzando en Zyla API Hub
Abre la lista de la API de 365Scores en Zyla API Hub y suscríbete. El Hub funciona con un modelo de suscripción + cuota (no es pago por llamada). Para nuevos usuarios, la primera API generalmente ofrece una prueba de 7 días o 50 solicitudes; consulta la lista para ver qué está activo en este momento. Una vez suscrito, recibirás una clave API. Todas las solicitudes utilizan el encabezado Authorization: Bearer YOUR_API_KEY.
Comienza la prueba de 7 días en la API de 365Scores
Endpoint: Obtener competiciones
Este endpoint devuelve competiciones para un deporte y país dados, junto con arreglos de soporte para deportes y países. Es un GET de solo lectura en el Zyla API Hub. Incluye tu clave API a través de Authorization: Bearer YOUR_API_KEY.
Método HTTP y URL
GET https://zylalabs.com/api/13503/365scores-api/29728/get-competitions
Parámetros de consulta requeridos
- sportId: identificador numérico del deporte (el ejemplo a continuación usa fútbol: 1)
- countryId: identificador numérico del país
- langId: ID de idioma
- timezone: zona horaria de Olson (por ejemplo, Europe/Berlin). Codifica la barra.
Ejemplo oficial de cURL
curl -s -X GET "https://zylalabs.com/api/13503/365scores-api/29728/get-competitions?sportId=1&countryId=11&langId=1&timezone=Europe%2FBerlin" \
-H "Authorization: Bearer YOUR_API_KEY"
Respuesta JSON oficial
{
"sports": [
{
"id": 1,
"name": "Football",
"nameForURL": "football",
"drawSupport": true,
"imageVersion": 1
}
],
"countries": [
{
"id": 11,
"name": "Portugal",
"nameForURL": "portugal",
"sportTypes": [
2,
8,
1
],
"imageVersion": 1,
"isInternational": false
}
],
"competitions": [
{
"id": 73,
"countryId": 11,
"sportId": 1,
"name": "Liga Portugal",
"longName": "Portuguese Primeira Liga",
"hasStandings": true,
"hasBrackets": false,
"hasStats": true,
"hasTransfers": true,
"hasLiveStandings": false,
"hasStandingsGroups": false,
"hasBets": false,
"totalGames": 0,
"liveGames": 0,
"nameForURL": "liga-portugal",
"popularityRank": 10055229,
"tableName": "Standings",
"currentSeasonNum": 94,
"currentStageNum": 1,
"color": "#000925",
"competitorsType": 1,
"imageVersion": 7,
"hideOnCatalog": false,
"hideOnSearch": false,
"hasCurrentStageStandings": true,
"hasHistory": true,
"isActive": true
},
{
"id": 74,
"countryId": 11,
"sportId": 1,
"name": "Liga Portugal 2",
"shortName": "Liga Pro",
"hasStandings": true,
"hasBrackets": false,
"hasStats": true,
"hasTransfers": true,
"hasLiveStandings": false,
"hasStandingsGroups": false,
"hasBets": false,
"totalGames": 0,
"liveGames": 0,
"nameForURL": "liga-portugal-2",
"popularityRank": 650667,
"tableName": "Standings",
"currentSeasonNum": 38,
"currentStageNum": 1,
"color": "#186839",
"competitorsType": 1,
"imageVersion": 5,
"hideOnCatalog": false,
"hideOnSearch": false,
"hasCurrentStageStandings": true,
"hasHistory": true,
"isActive": true
},
{
"id": 75,
"countryId": 11,
"sportId"…
Lo que realmente usarás:
- competitions[].id: identificador estable para la competición (almacena esto).
- competitions[].name / longName / nameForURL: etiqueta de visualización y slug amigable para SEO.
- competitions[].hasStandings / hasStats / hasTransfers / hasLiveStandings: alternar módulos de UI.
- competitions[].currentSeasonNum y currentStageNum: contexto para tu visualización del estado de la temporada.
- sports[] y countries[]: el deporte y país resueltos utilizados para tu consulta actual.
Zonas horarias: pasa una zona horaria válida (por ejemplo, Europe/Berlin) para asegurar que los campos de fecha y hora—cuando estén presentes en otros endpoints—se localicen como se espera. En este endpoint, la zona horaria sigue siendo requerida aunque los registros de competición anteriores no incluyan fechas formateadas.
Ejemplo en Python: obtener competiciones por país y deporte
El fragmento a continuación llama al mismo endpoint e imprime los IDs de las competiciones, nombres y un par de indicadores que probablemente verás en un toggle de UI. Utiliza la misma cadena de consulta mostrada en el cURL oficial para que puedas copiarla y pegarla, y cambiar tus valores más tarde.
import requests
API_KEY = "YOUR_API_KEY"
url = "https://zylalabs.com/api/13503/365scores-api/29728/get-competitions"
params = {
"sportId": "1",
"countryId": "11",
"langId": "1",
"timezone": "Europe/Berlin"
}
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(url, params=params, headers=headers, timeout=20)
resp.raise_for_status()
data = resp.json()
# Validación básica
competitions = data.get("competitions", [])
for comp in competitions:
cid = comp.get("id")
name = comp.get("name")
has_standings = comp.get("hasStandings")
has_stats = comp.get("hasStats")
print(f"{cid}: {name} | standings={has_standings} stats={has_stats}")
Notas que ahorran tiempo:
- El encabezado de autorización es requerido: Authorization: Bearer YOUR_API_KEY.
- Cachea listas estables (competitions) en tu aplicación durante al menos unos minutos para reducir la latencia.
- Siempre codifica en URL la barra de la zona horaria si ensamblas la URL manualmente.
Endpoints adicionales que puedes combinar con competiciones
Más allá de las competiciones, la API de 365Scores también te permite obtener datos centrados en jugadores. Estos endpoints son útiles cuando deseas vincular competiciones a perfiles de jugadores o actuaciones recientes. Usa el mismo encabezado de autorización y proporciona los parámetros de consulta requeridos exactamente como se muestra.
Obtener detalles del jugador
Devuelve detalles completos (biografía, carrera, trofeos, transferencias) sobre un jugador específico.
Método: GET
URL: https://zylalabs.com/api/13503/365scores-api/29748/get-player-details
Parámetros requeridos:
- playerId: 153026
- langId: 1
- timezone: Europe/Berlin
La respuesta incluye un arreglo de atletas de nivel superior con objetos que contienen detalles del perfil como edad, nationalityName, posición, formationPosition, shortBio y highlightStats.
Obtener partidos del jugador
Devuelve los partidos recientes y próximos para un jugador específico.
Método: GET
URL: https://zylalabs.com/api/13503/365scores-api/29749/get-player-matches
Parámetros requeridos:
- playerId: 153026
- langId: 1
- timezone: Europe/Berlin
La respuesta incluye atletas más arreglos de soporte para deportes y países. Usa esto para mostrar el club actual de un jugador y los próximos fixtures junto con el contexto de la competición.
Obtener estadísticas del jugador
Devuelve estadísticas destacadas y de carrera para un jugador específico.
Método: GET
URL: https://zylalabs.com/api/13503/365scores-api/29750/get-player-stats
Parámetros requeridos:
- playerId: 153026
- langId: 1
- timezone: Europe/Berlin
La respuesta contiene atletas con highlightStats que vinculan estadísticas a competiciones (por ejemplo, competitionId y un nombre como “Copa do Brasil”). Esto es útil para referenciar los IDs de competición que recibiste anteriormente.
Juntándolo todo: patrones de integración prácticos
- Directorio de ligas por país: llama a Obtener competiciones para tu país y deporte objetivo para renderizar una lista de ligas. Almacena competitions[].id para su uso posterior.
- Páginas de jugadores conscientes de la competición: cuando un usuario navega a una página de jugador, obtiene Obtener estadísticas del jugador y muestra estadísticas agrupadas por nombre de competición. Usa competitionId para vincular de nuevo a tu directorio de ligas.
- Filtros rápidos: filtra competiciones del lado del cliente por indicadores como hasStandings o hasStats para exponer los módulos de UI correctos solo cuando sea relevante.
- URLs SEO: usa nameForURL de competiciones para construir rutas de URL consistentes (mantén tus propias reglas de enrutamiento; no asumas que los slugs son únicos en todos los países).
Llamada desde agentes de IA a través de MCP
Cada API en Zyla API Hub es llamable a través del endpoint MCP, que funciona con herramientas de desarrollo compatibles con MCP (por ejemplo, Claude Code, Cursor, Windsurf). Apunta tu cliente al endpoint MCP y pasa tu clave como un parámetro de consulta:
https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY
A partir de ahí, puedes orquestar llamadas a herramientas que accedan a los mismos endpoints del Hub que has visto arriba. Para detalles de configuración y configuración específica del cliente, consulta MCP.
Consejos operativos
- Autenticación: todas las solicitudes requieren Authorization: Bearer YOUR_API_KEY.
- Prueba y cuotas: Zyla utiliza suscripción + cuota. La primera API generalmente ofrece una prueba de 7 días o 50 solicitudes; consulta la página del artículo para confirmar qué está activo.
- Localización: pasa langId y timezone de manera consistente a través de las solicitudes para que las etiquetas de lista y cualquier campo sensible al tiempo se alineen en tu UI.
- Cacheo: las competiciones no cambian con frecuencia; almacena resultados en caché para reducir el volumen de solicitudes y mejorar la experiencia del usuario.
FAQ
¿Qué parámetros son necesarios para listar competiciones?
Proporciona sportId, countryId, langId y timezone en GET https://zylalabs.com/api/13503/365scores-api/29728/get-competitions.
¿Cómo me autentico?
Envía Authorization: Bearer YOUR_API_KEY en el encabezado de la solicitud.
¿Puedo obtener la temporada actual y si existen clasificaciones?
Sí. El arreglo de competiciones incluye campos como currentSeasonNum y hasStandings para guiar tu UI.
¿Cómo relaciono las estadísticas de los jugadores con una competición específica?
Usa Obtener estadísticas del jugador. Devuelve objetos highlightStats que contienen competitionId y nombre, que puedes emparejar con los IDs de Obtener competiciones.
¿Hay un plan gratuito?
No hay Plan Gratuito. El mercado utiliza un modelo de suscripción + cuota. Consulta la página de la API de 365Scores para las opciones de acceso actuales; la primera API generalmente ofrece una prueba de 7 días o 50 solicitudes.
¿Listo para lanzar tu integración? Suscríbete y obtén tu clave en la lista: Comienza la prueba de 7 días en la API de 365Scores. Construye sobre el catálogo de más de 10,000 APIs públicas de Zyla API Hub con una cuenta, una clave y acceso MCP consistente.
Respuesta oficial de la API
{
"sports": [
{
"id": 1,
"name": "Fútbol",
"nameForURL": "football",
"drawSupport": true,
"imageVersion": 1
}
],
"countries": [
{
"id": 11,
"name": "Portugal",
"nameForURL": "portugal",
"sportTypes": [
2,
8,
1
],
"imageVersion": 1,
"isInternational": false
}
],
"competitions": [
{
"id": 73,
"countryId": 11,
"sportId": 1,
"name": "Liga Portugal",
"longName": "Primeira Liga Portuguesa",
"hasStandings": true,
"hasBrackets": false,
"hasStats": true,
"hasTransfers": true,
"hasLiveStandings": false,
"hasStandingsGroups": false,
"hasBets": false,
"totalGames": 0,
"liveGames": 0,
"nameForURL": "liga-portugal",
"popularityRank": 10055229,
"tableName": "Clasificaciones",
"currentSeasonNum": 94,
"currentStageNum": 1,
"color": "#000925",
"competitorsType": 1,
"imageVersion": 7,
"hideOnCatalog": false,
"hideOnSearch": false,
"hasCurrentStageStandings": true,
"hasHistory": true,
"isActive": true
},
{
"id": 74,
"countryId": 11,
"sportId": 1,
"name": "Liga Portugal 2",
"shortName": "Liga Pro",
"hasStandings": true,
"hasBrackets": false,
"hasStats": true,
"hasTransfers": true,
"hasLiveStandings": false,
"hasStandingsGroups": false,
"hasBets": false,
"totalGames": 0,
"liveGames": 0,
"nameForURL": "liga-portugal-2",
"popularityRank": 650667,
"tableName": "Clasificaciones",
"currentSeasonNum": 38,
"currentStageNum": 1,
"color": "#186839",
"competitorsType": 1,
"imageVersion": 5,
"hideOnCatalog": false,
"hideOnSearch": false,
"hasCurrentStageStandings": true,
"hasHistory": true,
"isActive": true
},
{
"id": 75,
"countryId": 11,
"sportId"…
Respuesta oficial de la API
{
"sports": [
{
"id": 1,
"name": "Fútbol",
"nameForURL": "football",
"drawSupport": true,
"imageVersion": 1
}
],
"countries": [
{
"id": 11,
"name": "Portugal",
"nameForURL": "portugal",
"sportTypes": [
2,
8,
1
],
"imageVersion": 1,
"isInternational": false
}
],
"competitions": [
{
"id": 73,
"countryId": 11,
"sportId": 1,
"name": "Liga Portugal",
"longName": "Primeira Liga Portuguesa",
"hasStandings": true,
"hasBrackets": false,
"hasStats": true,
"hasTransfers": true,
"hasLiveStandings": false,
"hasStandingsGroups": false,
"hasBets": false,
"totalGames": 0,
"liveGames": 0,
"nameForURL": "liga-portugal",
"popularityRank": 10055229,
"tableName": "Clasificaciones",
"currentSeasonNum": 94,
"currentStageNum": 1,
"color": "#000925",
"competitorsType": 1,
"imageVersion": 7,
"hideOnCatalog": false,
"hideOnSearch": false,
"hasCurrentStageStandings": true,
"hasHistory": true,
"isActive": true
},
{
"id": 74,
"countryId": 11,
"sportId": 1,
"name": "Liga Portugal 2",
"shortName": "Liga Pro",
"hasStandings": true,
"hasBrackets": false,
"hasStats": true,
"hasTransfers": true,
"hasLiveStandings": false,
"hasStandingsGroups": false,
"hasBets": false,
"totalGames": 0,
"liveGames": 0,
"nameForURL": "liga-portugal-2",
"popularityRank": 650667,
"tableName": "Clasificaciones",
"currentSeasonNum": 38,
"currentStageNum": 1,
"color": "#186839",
"competitorsType": 1,
"imageVersion": 5,
"hideOnCatalog": false,
"hideOnSearch": false,
"hasCurrentStageStandings": true,
"hasHistory": true,
"isActive": true
},
{
"id": 75,
"countryId": 11,
"sportId"…