Necesitas una lista definitiva de deportes, con IDs estables, slugs y nombres, para impulsar la navegación, filtros o búsquedas en tu aplicación. Al final de esta guía, enviarás una integración que obtiene cada deporte disponible desde un único endpoint, lo analiza en código y, opcionalmente, enriquece tu interfaz de usuario con banderas de países y búsqueda global utilizando la misma familia de API.
Lo que esta API te ofrece
La API en vivo de SofaScore en Zyla API Hub expone un endpoint de lectura simple que devuelve todos los deportes disponibles como un array de objetos, cada uno con un id, nombre y slug. Esta lista es adecuada para iniciar tu taxonomía de deportes, impulsar menús desplegables o mapear slugs de deportes a rutas. La misma API también proporciona:
- Un endpoint de bandera de país (bytes de imagen) para decoración de UI o atribución.
- Un endpoint de búsqueda cruzada para equipos, clubes y entidades relacionadas por consulta de texto.
Debido a que esto se ejecuta en Zyla API Hub, usas una cuenta y una clave de API bajo un modelo de suscripción + cuota (no pago por llamada). La plataforma alberga más de 10,000 APIs públicas con autenticación y facturación consistentes. Para tu primera API, puedes comenzar una prueba de 7 días o 50 solicitudes (sin Plan Gratuito). Consulta la página de la API para las opciones de acceso y precios actuales.
Comenzando en Zyla API Hub
Abre la página de la API en vivo de SofaScore y comienza la prueba para obtener una clave de API:
- Ve a Iniciar prueba de 7 días en SofaScore - Live API.
- Haz clic en Suscribirse o Iniciar Prueba Gratuita cuando esté disponible, luego copia tu clave de API.
- Envía solicitudes con el encabezado: Authorization: Bearer YOUR_API_KEY
Puedes gestionar tu clave y suscripciones directamente desde tu cuenta de Zyla API Hub.
Endpoints que usarás
Esta sección documenta los tres endpoints relevantes para “API para obtener todos los deportes”, con sus URLs de solicitud exactas, métodos y parámetros (solo donde se especifique). No añadas cuerpos de solicitud; estos endpoints son simples GETs con parámetros de consulta como se muestra.
1) Obtener todos los deportes
- Método: GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports
- Descripción: Devuelve una lista de todos los deportes disponibles.
- Parámetros: ninguno documentado.
- Autenticación: Authorization: Bearer YOUR_API_KEY
cURL (ejemplo oficial):
curl -s -X GET "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports" \
-H "Authorization: Bearer YOUR_API_KEY"
Ejemplo JSON (ejemplo 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"
}
]
Qué usar:
- id: identificador entero estable. Úsalo como tu clave primaria o mapeo a tu propia taxonomía.
- name: etiqueta de visualización para UIs.
- slug: identificador en minúsculas, amigable con URL (bueno para rutas y parámetros de consulta).
Notas prácticas:
- Caché: Esta lista es relativamente estática. Almacénala en tu aplicación durante horas o un día, dependiendo de las necesidades de actualización. Rompe la caché en despliegues o a través de un control manual de administrador.
- Localización: La respuesta muestra nombres en inglés. Si necesitas capas de localización, mapea slugs a tus propias cadenas i18n.
- Ordenamiento: Si necesitas un orden específico, ordena por nombre o aplica un mapa de peso personalizado (por ejemplo, prioriza Fútbol, Baloncesto, Tenis).
2) Obtener bandera de país
- Método: GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag
- Descripción: Devuelve los bytes de imagen de la bandera del país.
- Parámetros (requerido): country_code (cadena). Ejemplo de valor: EN
- Autenticación: Authorization: Bearer YOUR_API_KEY
cURL:
Ejemplo de respuesta:
iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAMAAAAL34HQAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAELUExURUdwTN/f37QVJd7e3t3d3d/f39/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…
Notas de uso:
- La respuesta son bytes de imagen en bruto. Almacena en disco, cachea a través de CDN, o convierte a base64 en memoria para renderizado inmediato en un cliente web.
- country_code es una cadena (ejemplo: EN). Valida tus entradas para evitar reintentos innecesarios.
3) Buscar todas las entidades
- Método: GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities
- Descripción: Busca todas las entidades de SofaScore por cadena de consulta.
- Parámetros (requerido): q (cadena). Ejemplo de valor: real madrid
- Autenticación: Authorization: Bearer YOUR_API_KEY
cURL:
Ejemplo de respuesta:
[{"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":"España","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":"Fútbol","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":null,"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":"Fútbol","slug":"football"}},"score":...}]
Notas de uso:
- Usa q para implementar barras de búsqueda globales para equipos y entidades. Debounce del lado del cliente para reducir llamadas.
- La estructura de respuesta incluye metadatos de entidad como id, nombre, slug, país y deporte. Cachea consultas populares.
Código para copiar y pegar: cargar la lista de deportes en Python
El ejemplo a continuación llama a Obtener todos los deportes, verifica el estado HTTP, analiza JSON en una lista de diccionarios y construye dos estructuras de búsqueda que realmente usarás: id-a-nombre y slug-a-id. Inserta tu clave de API donde se indica.
import os
import sys
import json
import urllib.request
API_URL = "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports"
API_KEY = os.environ.get("ZYLALABS_API_KEY", "YOUR_API_KEY")
req = urllib.request.Request(API_URL, method="GET")
req.add_header("Authorization", f"Bearer {API_KEY}")
try:
with urllib.request.urlopen(req, timeout=10) as resp:
if resp.status != 200:
sys.stderr.write(f"HTTP {resp.status}\n")
sys.exit(1)
data = json.loads(resp.read().decode("utf-8"))
except Exception as e:
sys.stderr.write(f"Request failed: {e}\n")
sys.exit(1)
# Construir búsquedas útiles en aplicaciones reales:
id_to_name = {item["id"]: item["name"] for item in data}
slug_to_id = {item["slug"]: item["id"] for item in data}
# Ejemplo de uso: construcción de rutas y validación
def sport_exists(slug):
return slug in slug_to_id
# Imprimir un resumen rápido y un ejemplo de ruta
print(f"Cargados {len(data)} deportes")
for s in data[:5]:
print(f"- {s['name']} (id={s['id']}, slug={s['slug']})")
example_slug = "football"
if sport_exists(example_slug):
sport_id = slug_to_id[example_slug]
print(f"/sports/{example_slug} mapea a sport_id={sport_id}")
else:
print(f"{example_slug} no presente")
Consejos de implementación:
- Timeouts: establece timeouts razonables (por ejemplo, 5–10s) para evitar solicitudes colgadas.
- Reintentos: para errores transitorios, reintenta con retroceso exponencial. Evita bucles sin límites.
- Caché: el caché de archivos o el caché TTL en memoria a menudo es suficiente para esta lista estática.
Casos de uso prácticos que puedes enviar esta semana
- Bootstrap de navegación: Obtén deportes una vez al iniciar el servidor y genera rutas y sitemaps /sports/{slug}.
- Filtros de UI: Población de selectores de deportes en paneles de control o aplicaciones móviles utilizando nombre y slug.
- Búsqueda + detalles: Combina Obtener todos los deportes con Buscar todas las entidades para construir una única caja de búsqueda que devuelva equipos limitados por deporte.
- Branding y banderas: Cuando muestres equipos o competiciones devueltas por búsqueda, decora con banderas de países utilizando Obtener bandera de país.
- Renderizado del lado del servidor: Obtén la lista de deportes en el tiempo de construcción (o bajo demanda con caché) para acelerar las cargas de página.
De extremo a extremo: de la lista al pulido de UI
1) Cargar todos los deportes
Llama al endpoint Obtener todos los deportes una vez y almacena la respuesta. Usa slug para enlaces seguros de URL e id para uniones de base de datos o etiquetado de análisis.
2) Agregar búsqueda rápida
Conecta una entrada al endpoint Buscar todas las entidades. Debounce a 250–500 ms y almacena las últimas consultas. Renderiza nombre, país y nombre del deporte donde esté disponible.
3) Decora con banderas
Cuando una entidad incluya un país, llama a Obtener bandera de país con el country_code requerido. Almacena los bytes de imagen o guárdalos en la primera solicitud.
MCP: llama a esta API desde un agente de IA
Cada API en Zyla también puede ser llamada a través del endpoint compatible con MCP, que funciona con Claude Code, Cursor, Windsurf y otros clientes MCP. Dirige tu agente o herramienta a:
- Endpoint: https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY
Esto permite que tu agente invoque las mismas operaciones de la API en vivo de SofaScore con tu clave de Zyla en entornos que soportan el protocolo MCP. Consulta MCP para detalles sobre la configuración del cliente. Mantén el mismo enfoque de Autenticación para llamadas HTTP directas; dentro de MCP, proporciona tu clave de Zyla según lo requiera la configuración de tu cliente MCP.
Guía operativa
- Autenticación: Siempre envía Authorization: Bearer YOUR_API_KEY.
- Cuotas y facturación: Modelo de suscripción + cuota (no pago por llamada). Para tu primera API, puedes comenzar con una prueba de 7 días o 50 solicitudes. Sin Plan Gratuito. Consulta la lista para las opciones de acceso actuales.
- Manejo de errores: Maneja estados no 200 de manera elegante. No reintentes en 4xx excepto 429 con retroceso si es aplicable.
- Observabilidad: Registra endpoint, estado y latencia. Para caché, registra aciertos vs fallos de caché para mantener el volumen de llamadas predecible.
Referencia: Los tres endpoints a simple vista
- Obtener todos los deportes
- GET https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports
- Parámetros: ninguno documentado
- Devuelve: array de { id, name, slug }
- Obtener bandera de país
- GET https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag
- Parámetros: country_code (cadena, requerido), p. ej., EN
- Devuelve: bytes de imagen
- Buscar todas las entidades
- GET https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities
- Parámetros: q (cadena, requerido), p. ej., real madrid
- Devuelve: lista de entidades coincidentes con metadatos, incluyendo deporte
FAQ
¿Cómo autentico las solicitudes?
Agrega el encabezado Authorization: Bearer YOUR_API_KEY a cada solicitud.
¿Hay un plan gratuito?
No hay Plan Gratuito. Para tu primera API, puedes comenzar una prueba de 7 días o 50 solicitudes. Consulta la página de la API para las opciones de acceso actuales y precios.
¿Con qué frecuencia debo actualizar la lista de deportes?
La lista de deportes es relativamente estable. Almacénala y actualízala en un horario que se ajuste a tu aplicación (por ejemplo, diariamente) o en despliegue. Invalida manualmente si necesitas actualizaciones inmediatas.
¿Puedo obtener imágenes (como banderas) directamente de la API?
Sí. Usa Obtener bandera de país con el country_code requerido para recibir bytes de imagen en bruto. Almacena o CDN estas respuestas para rendimiento.
¿Puedo buscar equipos o clubes?
Sí. Usa Buscar todas las entidades con q para encontrar equipos y otras entidades. Analiza los objetos de entidad devueltos para renderizar nombres, slugs e información del país.
¿Listo para enviar? Crea tu cuenta en Zyla API Hub, luego comienza tu prueba e inserta los endpoints anteriores. Comienza aquí: Iniciar prueba de 7 días en SofaScore - Live API.