Necesitas implementar una integración deportiva que pueda: listar todos los deportes soportados, buscar equipos/ligas/jugadores por nombre, y renderizar banderas de países sin tener que buscar activos de imagen. Al final de esta guía, llamarás a la SofaScore - Live API en Zyla API Hub para hacer exactamente eso, con solicitudes que puedes copiar y pegar en producción esta semana.
Qué hace esta API y cuándo usarla
La SofaScore - Live API en Zyla API Hub proporciona tres capacidades centrales que puedes integrar en tableros de puntuación, flujos de descubrimiento y componentes de UI:
- Obtener todos los deportes: enumerar los deportes soportados (id, nombre, slug) para la inicialización de la app y filtros.
- Buscar todas las entidades: consultar entidades de SofaScore (por ejemplo, equipos) por texto libre para potenciar barras de búsqueda y autocompletar.
- Obtener bandera de país: obtener bytes de imagen en bruto para una bandera de país, útil al mostrar la nacionalidad de un equipo o jugador.
Se entrega a través de una única suscripción y clave de Zyla, con un encabezado de Autorización consistente en todos los puntos finales. Zyla alberga más de 10,000 APIs públicas detrás de una cuenta y una clave de API, por lo que puedes agregar más datos de deportes y juegos más adelante sin rehacer los flujos de autenticación. Explora el catálogo en zylalabs.com.
Comenzando en Zyla API Hub
Abre la página de SofaScore - Live API en Zyla API Hub y suscríbete. La primera API en tu cuenta incluye una prueba de 7 días o 50 solicitudes, y la facturación utiliza un modelo de suscripción + cuota (no pago por llamada). Para opciones de acceso y precios actuales, consulta la página de la API directamente. Después de suscribirte, recibirás una clave de API.
Todas las solicitudes a continuación incluyen este encabezado:
- Autorización: Bearer YOUR_API_KEY
Puntos finales que puedes integrar hoy
1) Obtener todos los deportes
Usa este punto final para poblar una lista estática de deportes para navegación, filtros o incorporación. Devuelve un array de deportes con id, nombre y slug.
- Método: GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports
- Parámetros: ninguno documentado
- Auth: Autorización: Bearer YOUR_API_KEY
cURL (muestra oficial):
curl -s -X GET "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports" \
-H "Autorización: Bearer YOUR_API_KEY"
Respuesta JSON (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"
}
]
Lo que realmente usarás:
- id: identificador numérico estable por deporte (almacenar en DB; usar para filtros).
- nombre: etiqueta legible por humanos (mostrar en UI).
- slug: identificador amigable con URL (usar para rutas o claves canónicas).
Ejemplo en Python (requests):
import requests
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 un mapeo e imprimir un menú ordenado
slug_by_id = {s["id"]: s["slug"] for s in sports}
menu = [f'{s["id"]}: {s["name"]} ({s["slug"]})' for s in sports]
print("
".join(sorted(menu, key=lambda x: x.lower())))
# Ejemplo: elegir el id del deporte fútbol
football_id = next((s["id"] for s in sports if s["slug"] == "football"), None)
print("football_id =", football_id)
2) Buscar todas las entidades
Usa esto para buscar entidades de SofaScore mediante una cadena de consulta de texto libre (por ejemplo, nombres de equipos). Esto es ideal para autocompletar y funciones de “saltar a equipo”.
- Método: GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities
- Parámetros:
- q (cadena, requerido): el término de búsqueda. Ejemplo: real madrid
- Auth: Autorización: Bearer YOUR_API_KEY
cURL:
Ejemplo de respuesta (extracto proporcionado por el hub):
[{"entity":{"id":2829,"name":"Real Madrid","slug":"real-madrid","imagePath":"https:\/\/img.sofascore.com\/api\/v1\/team\/2829\/image","proxyImagePath":"https:\/\/betting.asdasddsgdfgfdsgfj.website\/sofascore\/image-proxy?imagePath=https:\/\/img.sofascore.com\/api\/v1\/team\/2829\/image","fullName":null,"shortName":null,"nameCode":"RMA","gender":"M","country":{"name":"Spain","slug":"spain","alpha2":"ES","alpha3":null,"imagePath":"https:\/\/img.sofascore.com\/api\/v1\/country\/ES\/flag","proxyImagePath":"https:\/\/betting.asdasddsgdfgfdsgfj.website\/sofascore\/image-proxy?imagePath=https:\/\/img.sofascore.com\/api\/v1\/country\/ES\/flag"},"foundationDateTimestamp":null,"manager":[],"ranking":null,"national":false,"venue":[],"sport":{"id":1,"name":"Football","slug":"football"}},"score":4293164.5,"type":"team"},{"entity":{"id":2816,"name":"Real Betis","slug":"real-betis","imagePath":"https:\/\/img.sofascore.com\/api\/v1\/team\/2816\/image","proxyImagePath":"https:\/\/betting.asdasddsgdfgfdsgfj.website\/sofascore\/image-proxy?imagePath=https:\/\/img.sofascore.com\/api\/v1\/team\/2816\/image","fullName":null,"shortName":null,"nameCode":"BET","gender":"M","country":{"name":"España","slug":"spain","alpha2":…
Notas para implementadores:
- Lee entity.id, entity.name, entity.slug y type para categorizar resultados (por ejemplo, equipo vs. otros tipos).
- La respuesta incluye URLs de imágenes que puedes usar como proxy si es necesario; usa tal como está según tu UI.
- Para UIs rápidas, debouncea la consulta y almacena en caché los resultados recientes indexados por q.
3) Obtener bandera de país
Obtén los bytes de imagen de la bandera del país. Útil para mostrar la bandera de un jugador o equipo sin mantener tu propio almacén de activos.
- Método: GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag
- Parámetros:
- country_code (cadena, requerido): EN
- Auth: Autorización: Bearer YOUR_API_KEY
cURL:
Ejemplo de respuesta (extracto de bytes de imagen):
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…
Consejos de implementación:
- La respuesta son los datos de la imagen; almacena o transmite a tu frontend según sea necesario.
- Almacena en caché las banderas en tu CDN o almacén de objetos para evitar descargas repetidas.
Juntándolo todo: patrones comunes de integración
- Filtros de inicialización: llama a Obtener todos los deportes durante la inicialización de la app, almacena id/nombre/slug, y expón la lista en un menú desplegable.
- Barras de búsqueda: al ingresar el usuario, llama a Buscar todas las entidades con q. Debouncea entre 250–400 ms, almacena en caché por consulta para reducir llamadas.
- Banderas nacionales: al mostrar una tarjeta de equipo o jugador, llama a Obtener bandera de país una vez por código y almacena el resultado en caché; reutiliza desde la caché en varias páginas.
Autenticación e higiene de solicitudes
- Envía Autorización: Bearer YOUR_API_KEY en cada solicitud.
- Considera la lista de deportes como relativamente estática; actualízala ocasionalmente en segundo plano y almacénala localmente.
- Construye rutas básicas de manejo de errores: tiempos de espera de red, estados no 200 y arrays vacíos de búsqueda.
Llama a esta API desde agentes de IA a través de MCP
Si usas agentes de codificación de IA (por ejemplo, IDEs y herramientas compatibles con MCP), puedes llamar a los mismos puntos finales a través del puente MCP de Zyla. Apunta tu cliente al punto final de MCP y proporciona tu clave de API de Zyla en la cadena de consulta. Para más detalles, consulta MCP. El agente puede entonces hacer las mismas solicitudes GET mostradas arriba, usando las URLs del hub y el encabezado de Autorización.
Notas operativas que ahorran tiempo
- Idempotencia: los puntos finales documentados son GET; son seguros para reintentar en fallos transitorios.
- Almacenamiento en caché del cliente: almacena Obtener todos los deportes en memoria y persiste en un almacén de datos ligero; actualiza al iniciar la app.
- Manejo de datos binarios: el punto final de la bandera devuelve bytes de imagen. Al hacer proxy a los navegadores, establece encabezados apropiados para tu entorno para que el cliente pueda renderizar o descargar como se pretende.
- Planificación de uso: las APIs de Zyla utilizan suscripción + cuota. La primera API en tu cuenta incluye una prueba de 7 días o 50 solicitudes; verifica tu cuota actual en la página de la API antes de realizar pruebas de carga.
Ejemplos en profundidad
Buscar: moldeando resultados para una lista de sugerencias
Después de llamar al punto final de búsqueda, extrae una proyección ligera por resultado:
- id: id numérico de la entidad
- etiqueta: entity.name
- tipo: tipo (por ejemplo, equipo) para etiquetar resultados
- deporte: entity.sport.slug para el alcance
- país: entity.country.alpha2 cuando esté presente; si necesitas una bandera, llama a Obtener bandera de país con el parámetro country_code requerido
Esta proyección es compacta y mantiene tu UI rápida.
Banderas: sirviendo al navegador
Cuando tu backend recibe los bytes de imagen de Obtener bandera de país, puedes:
- Almacenar los bytes como un PNG en almacenamiento de objetos y almacenar en caché en CDN por una clave normalizada (por ejemplo, flag-EN.png).
- Devolver un URI de datos a tu frontend si deseas un renderizado de cero rondas; ten en cuenta las implicaciones de tamaño para las cargas útiles de HTML.
Referencia completa
Obtener todos los deportes
- GET https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports
- Params: ninguno documentado
- Auth: Autorización: Bearer YOUR_API_KEY
Buscar todas las entidades
- GET https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities
- Params:
- q (cadena, requerido): la consulta de búsqueda
- Auth: Autorización: Bearer YOUR_API_KEY
Obtener bandera de país
- GET https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag
- Params:
- country_code (cadena, requerido): EN
- Auth: Autorización: Bearer YOUR_API_KEY
FAQ
¿Cómo autentico las solicitudes?
Incluye el encabezado: Autorización: Bearer YOUR_API_KEY en cada llamada a las URLs del hub.
¿Hay un plan gratuito?
El modelo es suscripción + cuota. Para tu primera API en Zyla, obtienes una prueba de 7 días o 50 solicitudes. Consulta la página de la API para opciones de acceso y precios actuales.
¿Puedo paginar resultados de búsqueda?
Los detalles de paginación no están documentados aquí. Usa el punto final de búsqueda proporcionado y maneja el array devuelto tal como está.
¿Qué formato devuelve el punto final de la bandera?
Devuelve bytes de imagen. La muestra muestra un flujo de bytes similar a PNG. Almacena o sirve según sea apropiado para tu app.
¿Qué campos debo persistir de la lista de deportes?
Persiste id, nombre y slug. id es una buena clave estable; nombre y slug se utilizan en UI y en el enrutamiento.
¿Listo para integrar esto en tu app? Crea una cuenta gratuita en Zyla, obtén tu clave y comienza a construir con la SofaScore - Live API. Comienza aquí: Comienza prueba de 7 días en SofaScore - Live API. Siempre puedes explorar más APIs de deportes y juegos más adelante en zylalabs.com.