Você precisa integrar dados de esportes ao vivo em um aplicativo esta semana. Ao final deste guia, você será capaz de pesquisar entidades do FlashScore (times, jogadores, torneios), listar esportes suportados e buscar agrupamentos de países específicos de esportes usando a API FlashScore - Ao Vivo no Zyla API Hub—completos com exemplos de curl e código Python que você pode colar em seu projeto.
O que a API FlashScore - Ao Vivo oferece
A API FlashScore - Ao Vivo fornece acesso pesquisável a entidades do FlashScore (times, jogadores, torneios) e endpoints de metadados que ajudam você a delimitar suas consultas para esportes suportados e seus agrupamentos de países. Integrações típicas incluem barras de pesquisa dentro do aplicativo, listas de seleção pré-preenchidas por esporte ou restringir a exploração de um usuário para a categoria de país/torneio correta antes que eles aprofundem.
Esta API está disponível no Zyla API Hub, um marketplace com mais de 10.000 APIs públicas. Com uma conta e uma chave de API, você se inscreve uma vez e chama qualquer API listada através de uma interface consistente.
Começando no Zyla API Hub
Abra a listagem da API FlashScore - Ao Vivo e inicie um teste para obter sua chave:
- Vá para a página da API: Iniciar teste de 7 dias na API FlashScore - Ao Vivo.
- Clique em Inscrever-se ou Iniciar Teste Gratuito (quando disponível) para receber sua chave de API.
- Use o cabeçalho Authorization: Bearer YOUR_API_KEY em cada solicitação.
A cobrança no Zyla utiliza assinatura + cota (não é pago por chamada). Para a primeira API que você usar, você verá tipicamente um teste de 7 dias ou uma pequena cota de solicitações para avaliação. Verifique a página da API para opções de acesso e preços atuais.
Endpoints que você usará
Abaixo estão os endpoints documentados disponíveis na listagem da API FlashScore - Ao Vivo. Cada seção indica seu método HTTP, URL de solicitação exata e quaisquer parâmetros necessários. Copie os exemplos de curl como estão e substitua YOUR_API_KEY pela sua chave.
1) Pesquisa (times, jogadores, torneios)
Pesquise entre entidades do FlashScore por uma consulta de texto livre.
- Método: GET
- URL: https://zylalabs.com/api/12518/flashscore-live-api/23852/search
- Parâmetro de consulta necessário:
- q (string): O texto a ser pesquisado. Exemplo: real madrid
Curl oficial (copiar-colar):
curl -s -X GET "https://zylalabs.com/api/12518/flashscore-live-api/23852/search?q=real+madrid" \
-H "Authorization: Bearer YOUR_API_KEY"
Resposta JSON 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…
O que você usará na prática:
- id: O identificador da entidade FlashScore (string). Use isso para persistir seleções ou construir links profundos em seu aplicativo.
- type: categoria da entidade (por exemplo, time). Útil para ramificar o comportamento da interface do usuário por tipo de resultado.
- name: rótulo de exibição para a entidade.
- url: o fragmento do caminho slug usado no FlashScore.
- sport.id e sport.name: classificação do esporte para o resultado. Útil para filtrar interfaces de pesquisa de múltiplos esportes.
- gender: quando aplicável, para contextos esportivos que dividem competições.
- country_name: rótulo de país/região de alto nível para a entidade.
- image_path e country_image_path: URLs PNG para emblemas de time e país que você pode renderizar em componentes da interface do usuário.
Exemplo em Python: chamar Pesquisa e lidar com resultados
Este trecho de Python chama o endpoint de Pesquisa, verifica por times chamados “Real Madrid” e imprime uma visão simplificada que você pode inserir na sua camada de interface do usuário.
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://zylalabs.com/api/12518/flashscore-live-api/23852/search"
def search_entities(query):
resp = requests.get(
BASE_URL,
params={"q": query},
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=20,
)
resp.raise_for_status()
return resp.json()
if __name__ == "__main__":
results = search_entities("real madrid")
teams = [r for r in results if r.get("type") == "team"]
for t in teams:
sport = t.get("sport", {})
print({
"id": t.get("id"),
"name": t.get("name"),
"sport": sport.get("name"),
"country": t.get("country_name"),
"badge": t.get("image_path"),
})
2) Obter esportes
Recupere uma lista de esportes suportados pelo FlashScore nesta API. Use isso para preencher um seletor de esportes ou para validar valores sport_id antes de chamar outros endpoints.
- Método: GET
- URL: https://zylalabs.com/api/12518/flashscore-live-api/23853/get-sports
- Parâmetros: nenhum documentado
curl:
A resposta retorna um array de objetos com campos como sport_id, sport_url e name. Use valores sport_id em contextos onde um identificador de esporte é necessário a jusante.
3) Obter países (por esporte)
Retorne a lista de agrupamentos de países (ou torneio/categoria) para um esporte específico. Isso é útil para construir um fluxo de navegação “Esporte → País/Categoria → Competição”.
- Método: GET
- URL: https://zylalabs.com/api/12518/flashscore-live-api/23854/get-countries
- Parâmetro de consulta necessário:
- sport_id (string): por exemplo, 2 para Tênis
curl (exemplo de Tênis):
A resposta retorna um array de objetos com campos como country_id, country_url e name que denotam as categorias do esporte ou agrupamentos de países (para Tênis, agrupamentos como ATP - Simples, WTA - Duplas, etc.). Use esses para delimitar a exploração do usuário antes de acionar pesquisas ou buscas de partidas.
Colocando os endpoints juntos em seu aplicativo
Interface de usuário com foco em pesquisa
Muitos aplicativos começam com o endpoint de Pesquisa para permitir que os usuários encontrem rapidamente times, jogadores ou torneios. Para uma experiência responsiva:
- Acione GET /search após os usuários pausarem a digitação (por exemplo, 300–500 ms de debounce) para reduzir chamadas.
- Armazene em cache as últimas N consultas no lado do cliente para evitar re-fetching de termos idênticos.
- Use filtros sport.id ou gender em sua lógica de renderização para agrupar ou priorizar resultados.
Interface de usuário com foco em navegação (esporte → país/categoria)
Se você deseja uma navegação estruturada:
- Chame GET /get-sports para construir o seletor de esporte de nível superior.
- Quando um esporte for escolhido, chame GET /get-countries?sport_id=... para mostrar sua lista de países/categorias.
- Use essas seleções para refinar sua pesquisa subsequente ou para exibir listas restritas ao esporte e agrupamento escolhidos.
Recomendações do lado do servidor
- Centralize chamadas para endpoints do Zyla em um pequeno módulo de serviço para padronizar cabeçalhos e tratar erros HTTP de forma consistente.
- Armazene em cache dados de referência, como esportes e países/categorias na memória por minutos a horas, pois essas listas não mudam frequentemente.
- Registre strings de consulta para pesquisa para otimizar sugestões de autocomplete mais tarde.
Exemplo de ponta a ponta: seletor de categoria de Tênis com pesquisa
Aqui está um plano rápido para construir um fluxo de seletor de tênis:
- Chame GET /get-sports uma vez na inicialização e mapeie o sport_id “Tênis” (da resposta, Tênis tem um campo sport_id).
- Chame GET /get-countries?sport_id=2 quando o usuário abrir a seção de Tênis.
- Renderize nomes de categorias como “ATP - Simples”, “WTA - Duplas”, etc.
- Forneça uma caixa de pesquisa que consulta GET /search com o termo do usuário; renderize apenas resultados onde sport.id corresponde a Tênis.
Isso restringe a intenção do usuário antes de qualquer busca de dados a jusante, melhorando tanto a experiência do usuário quanto a eficiência do backend.
Chamando a API de agentes de IA via MCP
Se seu fluxo de trabalho usa clientes compatíveis com MCP (como Claude Code, Cursor ou Windsurf), você pode direcionar chamadas através do endpoint MCP da Zyla em https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY. Isso permite que um agente invoque as mesmas ferramentas da API FlashScore - Ao Vivo sem reimplementar chamadas HTTP em seu aplicativo. Para notas de integração e expectativas do protocolo MCP, consulte a documentação MCP.
Padrões de uso típicos incluem:
- Permitir que um assistente de IA realize uma pesquisa (por exemplo, “Encontre times do Real Madrid”).
- Fazer um agente enumerar os esportes suportados primeiro, e depois aprofundar-se nas categorias/países de um esporte específico antes de pesquisar.
Você ainda autentica com sua chave de API Zyla, e o uso conta para sua cota de assinatura.
Notas operacionais que economizam tempo
- Autenticação: Cada solicitação deve incluir Authorization: Bearer YOUR_API_KEY.
- Modelo de cota: Assinatura + cota. Isso não é pago por chamada. Veja a página de listagem para detalhes.
- Testes: Para sua primeira API no Zyla, você verá tipicamente um teste de 7 dias ou uma pequena cota de solicitações. Sempre verifique os termos atuais da listagem.
- Cache: Armazene em cache as saídas de GET /get-sports e GET /get-countries de forma agressiva; elas são listas de referência e não mudam com frequência.
- Experiência de pesquisa: Debounce a entrada do usuário e armazene em cache consultas recentes para reduzir chamadas duplicadas.
- Tratamento de erros: Trate respostas não-2xx como erros e exiba mensagens acionáveis; registre os corpos das respostas para diagnosticar parâmetros inválidos rapidamente.
Se você é novo no Zyla, navegue pelo catálogo em zylalabs.com—uma conta e uma chave desbloqueiam o acesso a milhares de APIs sem mudar seus padrões de cliente HTTP.
Referência: Todos os endpoints cobertos
- Pesquisa
- GET https://zylalabs.com/api/12518/flashscore-live-api/23852/search
- Parâmetros: q (string, obrigatório)
- Obter esportes
- GET https://zylalabs.com/api/12518/flashscore-live-api/23853/get-sports
- Parâmetros: nenhum documentado
- Obter países
- GET https://zylalabs.com/api/12518/flashscore-live-api/23854/get-countries
- Parâmetros: sport_id (string, obrigatório)
FAQ
Como autentico minhas solicitações?
Inclua o cabeçalho Authorization: Bearer YOUR_API_KEY em cada chamada. Obtenha YOUR_API_KEY na página de listagem da API após se inscrever.
Há um plano gratuito?
Não há plano gratuito. O Zyla usa um modelo de assinatura + cota. Para sua primeira API, você verá tipicamente um teste de 7 dias ou uma pequena cota de solicitações para avaliação. Verifique a listagem para opções de acesso atuais.
O que o endpoint de Pesquisa retorna?
Um array de entidades (por exemplo, times) com campos como id, type, name, sport.id, sport.name, gender, country_name e URLs de imagem que você pode renderizar em componentes da interface do usuário.
Como encontro o sport_id correto para Obter países?
Chame GET /get-sports para listar os esportes suportados e seus valores sport_id. Em seguida, passe o sport_id escolhido para GET /get-countries.
Posso chamar a API de um assistente de código de IA?
Sim. Use o endpoint MCP da Zyla em https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY com um cliente compatível com MCP. Consulte a documentação MCP vinculada para detalhes.
Pronto para enviar sua integração esportiva? Inscreva-se e obtenha sua chave na listagem: Iniciar teste de 7 dias na API FlashScore - Ao Vivo. Assim que sua chave estiver ativa, cole o curl acima e você estará ao vivo em minutos.
Resposta oficial da 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…
Resposta oficial da 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…