Necesitas enviar características de datos deportivos esta semana: un buscador de equipos en vivo, una lista de deportes soportados y agrupaciones de países/competencias para anclar horarios o cuotas. Al final de este artículo, buscarás equipos como "Real Madrid", enumerarás los deportes soportados y obtendrás listas de países/competencias para un deporte, todo utilizando la API en Vivo de FlashScore en Zyla API Hub con solicitudes que puedes copiar y pegar.
Lo que puedes construir con la API en Vivo de FlashScore
La API en Vivo de FlashScore expone la búsqueda a través de entidades de FlashScore (equipos, jugadores, torneos), un catálogo de deportes soportados y agrupaciones de países/competencias por deporte. Los desarrolladores la utilizan para potenciar:
- Autocompletar y selectores de entidades para equipos, jugadores y torneos.
- Estructuración de navegación: deportes → países/competencias → entidades.
- Uniones de back-end que normalizan la entrada del usuario en IDs canónicos.
Todas las llamadas se realizan a través de Zyla API Hub, que te da una cuenta, una clave API y un modelo de suscripción + cuota consistente en más de 10,000 APIs públicas. Consulta la lista de la API en Vivo de FlashScore aquí: Inicia prueba de 7 días en la API en Vivo de FlashScore.
Comenzando en Zyla API Hub
Abre la página de la API en Vivo de FlashScore en Zyla API Hub, haz clic en Suscribirse o Iniciar Prueba Gratuita (cuando esté disponible), y copia tu clave API. La autenticación es un solo encabezado en cada solicitud:
- Authorization: Bearer YOUR_API_KEY
La facturación es por suscripción + cuota (no por llamada). Para tu primera API en Zyla, obtienes una prueba de 7 días o 50 solicitudes; consulta la página de la API para las opciones de acceso y precios actuales.
Puntos finales que usarás
Todos los puntos finales a continuación son proporcionados por Zyla API Hub. No cambies la URL base ni los segmentos de ruta.
1) Buscar (equipos, jugadores, torneos)
- Método: GET
- URL: https://zylalabs.com/api/12518/flashscore-live-api/23852/search
- Parámetro de consulta requerido: q (cadena)
- Descripción: Busca entidades de FlashScore por cadena de consulta.
Ejemplo: buscar "real madrid".
curl -s -X GET "https://zylalabs.com/api/12518/flashscore-live-api/23852/search?q=real+madrid" \
-H "Authorization: Bearer YOUR_API_KEY"
Respuesta de muestra oficial:
[{"id":"W8mj7MDD","type":"team","name":"Real Madrid","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/E99TZ05n-ttfpEDUq.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"SlAdQJK4","type":"team","name":"Real Madrid U19","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/IgG3LUAK-xGwa4c2B.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"MP6gLUO7","type":"team","name":"Real Madrid","url":"real-madrid","sport":{"id":3,"name":"Basketball"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/pn8TQOkQ-bXlcmj9T.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"2anA8FkF","type":"team","name":"Real Madrid U21","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/p048BCQt-SKpsUss3.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"4xlfVfnP","type":"team","name":"Real Madrid W","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Women","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/4CKmt8Rt-WpmKUEXD.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"fyNss8GQ","type":"team","name":"Real Madrid B","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/f5FO93Tc-ltKPQjEk.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"46uFRv4a","type":"team","name":"Real Madrid C","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/bupmbK6n-QkBtimSf.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"UiUgFWdq","type":"team","name":"Real Madrid U20","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flash…
Campos que probablemente usarás de inmediato:
- id: identificador estable que puedes almacenar y reutilizar.
- type: te ayuda a diferenciar entre equipos, jugadores y torneos.
- name, gender, country_name: metadatos de visualización.
- sport.id y sport.name: filtran resultados por deporte.
- image_path, country_image_path: renderizan insignias o banderas.
2) Obtener deportes
- Método: GET
- URL: https://zylalabs.com/api/12518/flashscore-live-api/23853/get-sports
- Parámetros: ninguno documentado
- Descripción: Devuelve una lista de todos los deportes disponibles soportados.
Ejemplo de respuesta:
[{"sport_id":"1","sport_url":"\/football\/","name":"Football"},{"sport_id":"2","sport_url":"\/tennis\/","name":"Tennis"},{"sport_id":"3","sport_url":"\/basketball\/","name":"Basketball"},{"sport_id":"4","sport_url":"\/hockey\/","name":"Hockey"},{"sport_id":"23","sport_url":"\/golf\/","name":"Golf"},{"sport_id":"7","sport_url":"\/handball\/","name":"Handball"},{"sport_id":"6","sport_url":"\/baseball\/","name":"Baseball"},{"sport_id":"15","sport_url":"\/snooker\/","name":"Snooker"},{"sport_id":"5","sport_url":"\/american-football\/","name":"Am. football"},{"sport_id":"18","sport_url":"\/aussie-rules\/","name":"Aussie rules"},{"sport_id":"21","sport_url":"\/badminton\/","name":"Badminton"},{"sport_id":"10","sport_url":"\/bandy\/","name":"Bandy"},{"sport_id":"6","sport_url":"\/baseball\/","name":"Baseball"},{"sport_id":"3","sport_url":"\/basketball\/","name":"Basketball"},{"sport_id":"26","sport_url":"\/beach-soccer\/","name":"Beach soccer"},{"sport_id":"17","sport_url":"\/beach-volleyball\/","name":"Beach volleyball"},{"sport_id":"16","sport_url":"\/boxing\/","name":"Boxing"},{"sport_id":"13","sport_url":"\/cricket\/","name":"Cricket"},{"sport_id":"34","sport_url":"\/cycling\/","name"…
Paso común siguiente: toma un sport_id de esta lista y profundiza en sus países/competencias.
3) Obtener países para un deporte
- Método: GET
- URL: https://zylalabs.com/api/12518/flashscore-live-api/23854/get-countries
- Parámetro de consulta requerido: sport_id (cadena)
- Descripción: Devuelve una lista de países o agrupaciones de competencias para un deporte específico.
Ejemplo: obtener países/competencias para Tenis (sport_id=2).
Ejemplo de respuesta:
[{"country_id":5724,"country_url":"\/tennis\/atp-singles\/","name":"ATP - Singles"},{"country_id":5725,"country_url":"\/tennis\/wta-singles\/","name":"WTA - Singles"},{"country_id":5726,"country_url":"\/tennis\/atp-doubles\/","name":"ATP - Doubles"},{"country_id":5727,"country_url":"\/tennis\/wta-doubles\/","name":"WTA - Doubles"},{"country_id":5728,"country_url":"\/tennis\/mixed-doubles\/","name":"Mixed Doubles"},{"country_id":5737,"country_url":"\/tennis\/exhibition-men\/","name":"Exhibition - Men"},{"country_id":5738,"country_url":"\/tennis\/exhibition-women\/","name":"Exhibition - Women"},{"country_id":33053,"country_url":"\/tennis\/exhibition-mixed\/","name":"Exhibition - Mixed"},{"country_id":5729,"country_url":"\/tennis\/challenger-men-singles\/","name":"Challenger Men - Singles"},{"country_id":5730,"country_url":"\/tennis\/challenger-women-singles\/","name":"Challenger Women - Singles"},{"country_id":5731,"country_url":"\/tennis\/challenger-men-doubles\/","name":"Challenger Men - Doubles"},{"country_id":5732,"country_url":"\/tennis\/challenger-women-doubles\/","name":"Challenger Women - Doubles"},{"country_id":5733,"country_url":"\/tennis\/itf-men-singles\/","name":"ITF Men…
Usa country_id y name para poblar filtros o dirigir a los usuarios hacia listas de eventos en tu aplicación. El country_url es un slug legible por humanos que refleja la estructura de FlashScore.
Ejemplo en Python: buscar y analizar equipos
El fragmento a continuación llama al punto final de Búsqueda para encontrar entidades de "Real Madrid" e imprime ids canónicos, nombres e información del deporte. Utiliza la URL y el encabezado exactos que viste en el curl.
import requests
API_KEY = "YOUR_API_KEY"
url = "https://zylalabs.com/api/12518/flashscore-live-api/23852/search"
params = {"q": "real madrid"}
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(url, params=params, headers=headers, timeout=15)
resp.raise_for_status()
results = resp.json()
# Filtrar resultados de 'team' y imprimir una vista concisa
for item in results:
if item.get("type") == "team":
team_id = item.get("id")
name = item.get("name")
sport = item.get("sport", {})
sport_id = sport.get("id")
sport_name = sport.get("name")
country = item.get("country_name")
print(f"{team_id}: {name} | sport={sport_id}:{sport_name} | country={country}")
Consejo: almacena id y type juntos para desambiguar el espacio de nombres si soportas múltiples tipos de entidades en una tabla. Usa sport.id para filtrar homónimos entre deportes.
Notas de implementación práctica
- Autenticación: cada solicitud debe incluir Authorization: Bearer YOUR_API_KEY.
- Codificación de consulta: codifica en porcentaje q; el curl oficial usa q=real+madrid.
- Cacheo: los resultados de búsqueda para consultas populares pueden ser cacheados brevemente para reducir la latencia. Las listas de deportes y países son relativamente estáticas; cachea por más tiempo y actualiza periódicamente.
- Manejo de errores: maneja respuestas no 200 mostrando un mensaje genérico y registrando la respuesta para diagnósticos.
- Paginación: no documentada para estos puntos finales; si necesitas más de una página de resultados, considera restringir q o filtrar del lado del cliente.
- Imágenes: image_path y country_image_path son URLs absolutas HTTPS que puedes renderizar directamente.
Casos de uso concretos para enviar esta semana
- Cuadro de búsqueda de equipos: llama a Búsqueda con la entrada del usuario, restringe a type === "team", luego renderiza name, country_name y sport.name en el desplegable. Persiste id en la selección.
- Catálogo de deportes: llama a Obtener deportes para construir tu navegación lateral izquierda, cada elemento enlazando a una ruta sport_id en tu aplicación.
- Explorador de tenis: usa Obtener países con sport_id=2 para listar secciones ATP/WTA/ITF. Cuando el usuario selecciona una, puedes ramificar a tus propias páginas de eventos ancladas por el nombre y country_id elegidos.
- Herramientas de administración: precalienta caches para las consultas principales (por ejemplo, "real madrid", "lakers", "warriors") al desplegar, usando llamadas del lado del servidor con tu clave API de Zyla.
Llamando a la API desde agentes de IA a través de MCP
Si tu flujo de trabajo se ejecuta dentro de un cliente compatible con MCP (Claude Code, Cursor, Windsurf, y otros), puedes llamar a las APIs de Zyla a través del punto final MCP. Apunta tu cliente a:
Pasa tu clave API de Zyla como el parámetro de consulta apikey (YOUR_API_KEY). Tu agente puede entonces invocar las mismas rutas de la API en Vivo de FlashScore que viste arriba, con la misma semántica del encabezado de Autorización. Esto mantiene secretos locales al mínimo mientras permite llamadas impulsadas por herramientas durante sesiones de codificación o scripts automatizados.
Esquema de flujo de trabajo de extremo a extremo
- Obtén los deportes soportados una vez al inicio de la aplicación (Obtener deportes). Construye un mapa sport_id → nombre de visualización y cachealo.
- Cuando el usuario elige un deporte, carga sus países/competencias a través de Obtener países con el sport_id elegido. Cachea el resultado.
- Agrega un cuadro de búsqueda universal que llame a Búsqueda con q, luego enruta condicionalmente a vistas de equipo, jugador o torneo basadas en el campo type.
- Almacena entidades seleccionadas por id y type; renderiza nombres e insignias de deportes usando sport.name, image_path y country_image_path.
Referencia: todos los ejemplos de curl
Buscar por consulta:
Obtener deportes:
Obtener países para un deporte:
Por qué Zyla API Hub para integraciones deportivas
Zyla API Hub te da una sola clave, facturación por suscripción + cuota, y un punto final compatible con MCP para flujos de trabajo de agentes. Cuando necesites agregar enriquecimiento o utilidades junto con deportes, puedes explorar más de 10,000 APIs públicas e integrarlas con el mismo encabezado.
FAQ
¿Cómo me autentico?
Incluye Authorization: Bearer YOUR_API_KEY en cada solicitud.
¿Hay un plan gratuito?
No. Tu primera API en Zyla incluye una prueba de 7 días o 50 solicitudes. Consulta la página de la API para las opciones de acceso y precios actuales.
¿Qué parámetros son soportados en Búsqueda?
q es requerido. Usa una cadena codificada en URL como q=real+madrid.
¿Cómo encuentro el sport_id correcto para Obtener países?
Llama a Obtener deportes primero y selecciona el sport_id que coincide con tu deporte objetivo.
¿Hay parámetros de paginación o clasificación?
No están documentados para estos puntos finales. Si esperas muchos resultados, restringe tu q o filtra del lado del cliente.
¿Listo para integrar? Crea una cuenta gratuita en Zyla y comienza con la API en Vivo de FlashScore. Tu primera API incluye una prueba de 7 días o 50 solicitudes para que puedas prototipar rápidamente. Toma tu clave y ejecuta los ejemplos en la lista: Inicia prueba de 7 días en la API en Vivo de FlashScore.
Respuesta oficial de la API
[{"id":"W8mj7MDD","type":"team","name":"Real Madrid","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/E99TZ05n-ttfpEDUq.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"SlAdQJK4","type":"team","name":"Real Madrid U19","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/IgG3LUAK-xGwa4c2B.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"MP6gLUO7","type":"team","name":"Real Madrid","url":"real-madrid","sport":{"id":3,"name":"Basketball"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/pn8TQOkQ-bXlcmj9T.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"2anA8FkF","type":"team","name":"Real Madrid U21","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/p048BCQt-SKpsUss3.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"4xlfVfnP","type":"team","name":"Real Madrid W","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Women","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/4CKmt8Rt-WpmKUEXD.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"fyNss8GQ","type":"team","name":"Real Madrid B","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/f5FO93Tc-ltKPQjEk.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"46uFRv4a","type":"team","name":"Real Madrid C","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/bupmbK6n-QkBtimSf.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"UiUgFWdq","type":"team","name":"Real Madrid U20","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flash…
Respuesta oficial de la API
[{"id":"W8mj7MDD","type":"team","name":"Real Madrid","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/E99TZ05n-ttfpEDUq.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"SlAdQJK4","type":"team","name":"Real Madrid U19","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/IgG3LUAK-xGwa4c2B.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"MP6gLUO7","type":"team","name":"Real Madrid","url":"real-madrid","sport":{"id":3,"name":"Basketball"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/pn8TQOkQ-bXlcmj9T.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"2anA8FkF","type":"team","name":"Real Madrid U21","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/p048BCQt-SKpsUss3.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"4xlfVfnP","type":"team","name":"Real Madrid W","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Women","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/4CKmt8Rt-WpmKUEXD.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"fyNss8GQ","type":"team","name":"Real Madrid B","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/f5FO93Tc-ltKPQjEk.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"46uFRv4a","type":"team","name":"Real Madrid C","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/bupmbK6n-QkBtimSf.png","country_image_path":"https:\/\/static.flashscore.com\/res\/image\/data\/QFbOpTR6-GtJBBjyH.png"},{"id":"UiUgFWdq","type":"team","name":"Real Madrid U20","url":"real-madrid","sport":{"id":1,"name":"Soccer"},"gender":"Men","country_name":"Spain","image_path":"https:\/\/static.flash…