Sus partes interesadas quieren contexto deportivo en vivo en su producto esta semana: una lista de deportes compatibles para impulsar la navegación, un cuadro de búsqueda universal que encuentre equipos y competiciones, y banderas de países para pulir la interfaz de usuario. Al final de esta guía, llamarás a la SofaScore - Live API desde Zyla API Hub para obtener el catálogo de deportes, buscar entidades por consulta y recuperar los bytes de imagen de la bandera, con ejemplos de curl y Python listos para producción que puedes pegar en tu base de código.
Lo que puedes construir con SofaScore - Live API
La API proporciona tres capacidades fundamentales para aplicaciones deportivas:
- Obtener todos los deportes: una lista completa y estructurada de deportes que puedes presentar en menús, filtros o flujos de incorporación.
- Buscar todas las entidades: un único punto final de consulta que busca en las entidades de SofaScore (por ejemplo, equipos), ideal para barras de búsqueda globales.
- Obtener bandera de país: obtener bytes de imagen en bruto para una bandera de país para mostrar junto a equipos, jugadores o competiciones.
Esta API está disponible en Zyla API Hub, que ofrece una cuenta, una clave API y un modelo de suscripción + cuota en más de 10,000 APIs públicas. Autenticas cada solicitud con Authorization: Bearer YOUR_API_KEY.
Comenzando en Zyla API Hub
Abre la lista para SofaScore - Live API en Zyla y suscríbete. La primera API en tu cuenta incluye una prueba de 7 días o 50 solicitudes, luego el uso continuo sigue un modelo de suscripción + cuota (no pago por llamada). No hay Plan Gratuito. Recibirás una única clave API que funciona en todos los puntos finales de esta lista.
Comienza aquí: Iniciar prueba de 7 días en SofaScore - Live API
Información general del mercado y creación de cuentas: Zyla API Hub.
Descripción general de los puntos finales y ejemplos
Obtener todos los deportes
Devuelve una lista de todos los deportes disponibles. Usa esto para alimentar tu selector de deportes, navegación de nivel superior o para validar los slugs de deportes entrantes.
- Método: GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports
- Parámetros: ninguno
- Auth: Authorization: Bearer YOUR_API_KEY
curl
curl -s -X GET "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports" \
-H "Authorization: Bearer YOUR_API_KEY"
Respuesta JSON de muestra oficial
[
{
"id": 1,
"name": "Fútbol",
"slug": "football"
},
{
"id": 5,
"name": "Tenis",
"slug": "tennis"
},
{
"id": 2,
"name": "Baloncesto",
"slug": "basketball"
},
{
"id": 64,
"name": "Béisbol",
"slug": "baseball"
},
{
"id": 23,
"name": "Voleibol",
"slug": "volleyball"
},
{
"id": 63,
"name": "Fútbol americano",
"slug": "american-football"
},
{
"id": 6,
"name": "Balonmano",
"slug": "handball"
},
{
"id": 20,
"name": "Tenis de mesa",
"slug": "table-tennis"
},
{
"id": 4,
"name": "Hockey sobre hielo",
"slug": "ice-hockey"
},
{
"id": 22,
"name": "Dardos",
"slug": "darts"
},
{
"id": 72,
"name": "E-sports",
"slug": "esports"
},
{
"id": 11,
"name": "Deportes de motor",
"slug": "motorsport"
},
{
"id": 65,
"name": "Ciclismo",
"slug": "cycling"
},
{
"id": 62,
"name": "Críquet",
"slug": "cricket"
},
{
"id": 76,
"name": "Artes marciales mixtas",
"slug": "mma"
},
{
"id": 12,
"name": "Rugby",
"slug": "rugby"
},
{
"id": 29,
"name": "Futsal",
"slug": "futsal"
},
{
"id": 31,
"name": "Bádminton",
"slug": "badminton"
},
{
"id": 26,
"name": "Waterpolo",
"slug": "waterpolo"
},
{
"id": 19,
"name": "Snooker",
"slug": "snooker"
},
{
"id": 13,
"name": "Reglas australianas",
"slug": "aussie-rules"
},
{
"id": 34,
"name": "Voleibol de playa",
"slug": "beach-volley"
},
{
"id": 109,
"name": "Minifútbol",
"slug": "minifootball"
},
{
"id": 7,
"name": "Floorball",
"slug": "floorball"
},
{
"id": 15,
"name": "Bandy",
"slug": "bandy"
},
{
"id": 110,
"name": "Pádel",
"slug": "padel"
}
]
Campos que usarás:
- id: identificador numérico que puedes almacenar para mapeo interno.
- name: nombre del deporte legible por humanos para etiquetas de UI.
- slug: clave de URL/componente estable para enrutamiento, CSS o composición de consultas.
Ejemplo en Python
import os
import requests
API_KEY = os.environ.get("ZYLALABS_API_KEY", "YOUR_API_KEY")
url = "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports"
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(url, headers=headers, timeout=10)
resp.raise_for_status()
sports = resp.json()
# Construir una búsqueda rápida: slug -> id
slug_to_id = {s["slug"]: s["id"] for s in sports}
# Ejemplo de uso
print(f"Total deportes: {len(sports)}")
print(f"id de Fútbol: {slug_to_id.get('football')}")
print("Primeros tres deportes:")
for s in sports[:3]:
print(f"- {s["name"]} (id={s["id"]}, slug={s["slug"]})")
Buscar todas las entidades
Buscar en las entidades de SofaScore por cadena de consulta. Usa esto para un único cuadro de búsqueda que pueda encontrar equipos y entidades relacionadas por nombre.
- Método: GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities
- Parámetros:
- q (cadena, requerido)
- Auth: Authorization: Bearer YOUR_API_KEY
curl
La respuesta devuelve entidades coincidentes para la consulta proporcionada. Usa campos como id, name, slug y objetos anidados como country donde estén presentes para renderizar los resultados de búsqueda. Si almacenas los resultados de búsqueda, considera almacenar en caché para reducir llamadas repetidas para las mismas consultas.
Obtener bandera de país
Obtén los bytes de imagen para una bandera de país por código, luego renderiza como una imagen base64 en tu UI o almacena en tu CDN. Esto es útil para equipos nacionales y competiciones.
- Método: GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag
- Parámetros:
- country_code (cadena, requerido)
- Auth: Authorization: Bearer YOUR_API_KEY
curl
Ejemplo de respuesta (bytes de imagen, codificados en base64):
iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAMAAAAL34HQAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAELUExURUdwTN/f37QVJd7e3t3d3d/f39/f39/f397e3t7e3t3d3d3d3d3d3d/f397e3t/f39/f39zc3N7e3rQUJN/f37MUJLUTJd/f39/f3+Hh4d3d3bMUJLUVJbQUJLUVJbUUJLcQKOHh4d3d3bQVJLQUJN/f397e3rQVJbIWI7ITI7QUJLcYKM4RJP///97e3rQUJPv7++Li4v39/ebm5uDg4Orq6vDw8OTk5Pf397sTJPn5+bsUJPPz8/Ly8u7u7rcUJMcSJOzs7PHx8cQSJO/v77gUJLgTJOjo6MoSJMETJL8TJLUUJL4TJOvr680RJMsSJMsRJMQTJL0TJO3t7cwRJLYUJM0SJLwUJL4UJDN2488AAAAsdFJOUwB/38+AMBAg79+fcJBAv3CfYKC/YICfj79vr0AwcGCvIF+Pz8+vsKBQULAgUCRTtgAABilJREFUeNrtnGdX40YUhoWrhA1uGFj6tmQ34VrFKl6vzdqYDrtJNvX//5JMkSU3YWk0kiYn3A/CB3zMc+776s54NHMlKV6cfThp756+zeVUErlcq7XbPj48kjKLYqOel9WAkLf3GsXUkcqVA7mDIwiL/FE+qKSItrWndKZBIR6vrz+TuL6excKhbG6lwyR3/ND/eZiM7r6dz8bdaHL/tzPzJmUz4ZyVKtvePzMtu2fAeUCA0bNvde/N+UaCUBteorp2H0gEYpHo210/ZeVkXL7pMxkwjeexUGgDjywBMA/KufKZwmARMj0ZME++bg/mIwwWip7lgm1wBHtFocyxBsCGhVLmgim8zF+md585r15ULB8szyVhrn6WBhAPywfb4JWqJU8xYSEwan6lzMNV5iUAHywAelfKlTg34B5NlQb8sKZKvikxC5hfkyomLJQwM46QRTJPcDTgjeU6TGEawF+TXP8OwB8L4Ip8OIPBNoiAA0gGCy5NpkpBqPQ+JIXlCrnBQqVBclgsXITKMSBJLDCciFyEqhuGKg5WVC5C9RUgaSyArxG4XhEFIQ0sIDPX16GqaGhfccCiOoaoq2Vc2/WwVHGxwNBDjUMlJWRl4IRF60R+3biN5wxmeKr4WNDH…
Decodifica el base64 para renderizar. Para web, antepone data:image/png;base64, a la cadena para una imagen en línea; para móvil, decodifica a un arreglo de bytes y almacena en caché.
Detalles de producción que ahorran tiempo
- Autenticación: envía Authorization: Bearer YOUR_API_KEY en cada solicitud. Claves faltantes o inválidas devuelven respuestas 401/403.
- Idempotencia y seguridad: todos los puntos finales listados son GET. Son seguros para llamar desde funciones de borde o backends de cliente con manejo de autenticación adecuado.
- Almacenamiento en caché:
- Obtener todos los deportes: el catálogo es relativamente estable; almacena en caché durante 24 horas en tu capa API o CDN.
- Buscar todas las entidades: los resultados cambian con el tiempo y el contexto; almacena en caché durante minutos por consulta única para reducir costos y latencia.
- Obtener bandera de país: la salida en base64 es determinista por código de país; almacena en caché agresivamente o almacena la imagen decodificada.
- Paginación: no aplicable a los puntos finales documentados. Si necesitas una navegación más granular más allá de lo que hay aquí, mantén el punto final de búsqueda como tu herramienta principal de descubrimiento.
- Marcas de tiempo y zonas horarias: los puntos finales documentados aquí no emiten marcas de tiempo. Si unes resultados con otros sistemas, trata estas respuestas como solo metadatos y agrega tu propio contexto de tiempo.
- Manejo de errores: implementa reintentos con retroceso para 5xx; no vuelvas a intentar 4xx excepto 429 con retroceso. Registra las URL de las solicitudes y los parámetros de consulta para facilitar la depuración.
- Seguridad: no incrustes tu clave API en aplicaciones del lado del cliente. Proxy a través de tu servicio sin servidor o backend y aplica cuotas por usuario.
Ejemplo de extremo a extremo: construir un selector de deportes centrado en la búsqueda
- Llama a Obtener todos los deportes al inicio para renderizar el filtro de deportes. Persiste id, name, slug.
- Conecta tu cuadro de búsqueda global a Buscar todas las entidades con q configurado en la entrada del usuario. Debounce las pulsaciones para evitar llamadas excesivas.
- Al renderizar resultados, si se asocia un país, usa Obtener bandera de país con el código correspondiente y almacena en caché la cadena base64.
- Registra selecciones por id y slug para enrutamiento estable y enriquecimiento posterior.
Llama a la API desde agentes de IA con MCP
Si integras con herramientas compatibles con MCP (por ejemplo, asistentes de código en tu entorno de desarrollo), puedes enrutar las mismas llamadas HTTP a través del punto final MCP de Zyla usando tu clave existente: https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY. Esto permite que un agente invoque la SofaScore - Live API sin incrustar secretos en los prompts. Para capacidades y configuración del cliente, consulta la página de MCP.
Consejo: expón solo los puntos finales que necesitas (Obtener todos los deportes, Buscar todas las entidades, Obtener bandera de país) en la configuración de herramientas de tu agente y registra invocaciones del lado del servidor para auditoría.
Patrones de uso en el mundo real
- Incorporación: pide a los usuarios que elijan sus deportes favoritos enumerando la respuesta de Obtener todos los deportes; almacena los ids de deportes seleccionados para feeds personalizados.
- Barra de búsqueda: usa Buscar todas las entidades para autocompletar equipos como “Real Madrid” y navegar a los usuarios directamente a su pantalla de detalles.
- UI internacional: muestra banderas junto a los nombres de los equipos y clasificaciones con Obtener bandera de país; almacena en caché base64 por código estilo alpha2/alpha3 esperado por el punto final.
- Enrutamiento y SEO: usa slug de deporte (por ejemplo, football, basketball) como parte de tus rutas URL para enrutamiento estable y enlaces más limpios.
Pruebas y solución de problemas
- Pruebas de humo: agrega una verificación de CI que llame a Obtener todos los deportes y verifique que las claves esperadas (id, name, slug) existan y que el array no esté vacío.
- Observabilidad: registra el código de estado, latencia y tamaño del cuerpo; marca cualquier aumento repentino en el tamaño de carga útil para el punto final de la bandera para atrapar respuestas mal formadas.
- Relleno: si necesitas almacenar en caché banderas para países comunes, llama en lote a Obtener bandera de país fuera de línea y almacena imágenes en tu bucket de activos.
Preguntas frecuentes
¿Cómo me autentico en SofaScore - Live API?
Envía un encabezado de Autorización con tu clave: Authorization: Bearer YOUR_API_KEY en cada solicitud.
¿Hay un plan gratuito?
No hay Plan Gratuito. La primera API en tu cuenta de Zyla incluye una prueba de 7 días o 50 solicitudes. Consulta la lista para opciones de acceso actuales.
¿Puedo obtener logotipos de equipos o imágenes de ligas a través de esta API?
Los puntos finales documentados aquí cubren la lista de deportes, búsqueda de entidades y banderas de países. Para otros activos, revisa la página de lista para puntos finales adicionales; solo las URL en este artículo están documentadas aquí.
¿Qué códigos de país son compatibles para Obtener bandera de país?
Pasa el parámetro country_code esperado por el punto final. Valida los códigos en tu modelo de dominio y almacena en caché los resultados exitosos para evitar búsquedas repetidas.
¿Puedo llamar a estos puntos finales desde el frontend?
Usa un proxy de backend o de borde para que no expongas tu clave API. Estos son puntos finales GET, por lo que el proxy es sencillo.
Envía tu integración ahora: suscríbete y obtén tu clave en la página de lista, luego pega el curl anterior e itera. Comienza aquí: Iniciar prueba de 7 días en SofaScore - Live API. Si necesitas otros bloques de construcción, explora más en Zyla API Hub.