Você precisa entregar recursos de dados esportivos esta semana: um localizador de equipes ao vivo, uma lista de esportes suportados e agrupamentos de países/competências para ancorar horários ou odds. Ao final deste artigo, você buscará equipes como “Real Madrid”, enumerará os esportes suportados e buscará listas de países/competências para um esporte—tudo usando o FlashScore - Live API no Zyla API Hub com requisições copiáveis e coláveis.
O que você pode construir com FlashScore - Live API
O FlashScore - Live API expõe busca em entidades do FlashScore (equipes, jogadores, torneios), um catálogo de esportes suportados e agrupamentos de países/competências por esporte. Os desenvolvedores o utilizam para potencializar:
- Autocomplete e seletores de entidades para equipes, jogadores e torneios.
- Estrutura de navegação: esportes → países/competências → entidades.
- Junções de back-end que normalizam a entrada do usuário em IDs canônicos.
Todas as chamadas passam pelo Zyla API Hub, que oferece uma conta, uma chave de API e um modelo de assinatura + cota consistente em mais de 10.000 APIs públicas. Veja a listagem do FlashScore - Live API aqui: Inicie o teste de 7 dias no FlashScore - Live API.
Começando no Zyla API Hub
Abra a página do FlashScore - Live API em Zyla API Hub, clique em Assinar ou Iniciar Teste Gratuito (quando disponível) e copie sua chave de API. A autenticação é um único cabeçalho em cada requisição:
- Authorization: Bearer YOUR_API_KEY
A cobrança é por assinatura + cota (não por chamada). Para sua primeira API no Zyla, você recebe um teste de 7 dias ou 50 requisições—verifique a página da API para opções de acesso e preços atuais.
Endpoints que você usará
Todos os endpoints abaixo são servidos pelo Zyla API Hub. Não altere a URL base ou os segmentos de caminho.
1) Buscar (equipes, jogadores, torneios)
- Método: GET
- URL: https://zylalabs.com/api/12518/flashscore-live-api/23852/search
- Parâmetro de consulta obrigatório: q (string)
- Descrição: Busca entidades do FlashScore pela string de consulta.
Exemplo: buscar por “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"
Resposta de exemplo 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 você provavelmente usará imediatamente:
- id: identificador estável que você pode armazenar e reutilizar.
- type: ajuda você a ramificar para equipes vs jogadores vs torneios.
- name, gender, country_name: metadados de exibição.
- sport.id e sport.name: filtrar resultados por esporte.
- image_path, country_image_path: renderizar emblemas ou bandeiras.
2) Obter esportes
- Método: GET
- URL: https://zylalabs.com/api/12518/flashscore-live-api/23853/get-sports
- Parâmetros: nenhum documentado
- Descrição: Retorna uma lista de todos os esportes disponíveis suportados.
Resposta de exemplo:
[{"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"…
Próximo passo comum: pegue um sport_id desta lista e aprofunde-se em seus países/competências.
3) Obter países para um esporte
- Método: GET
- URL: https://zylalabs.com/api/12518/flashscore-live-api/23854/get-countries
- Parâmetro de consulta obrigatório: sport_id (string)
- Descrição: Retorna uma lista de países ou agrupamentos de competição para um esporte específico.
Exemplo: buscar países/competências para Tênis (sport_id=2).
Resposta de exemplo:
[{"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…
Use country_id e name para preencher filtros ou direcionar usuários para listas de eventos em seu aplicativo. O country_url é um slug legível por humanos que espelha a estrutura do FlashScore.
Exemplo em Python: buscar e analisar equipes
O trecho abaixo chama o endpoint de Busca para encontrar entidades “Real Madrid” e imprime ids canônicos, nomes e informações sobre o esporte. Ele usa a URL exata e o cabeçalho que você viu no 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 para resultados 'team' e imprimir uma visão 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}")
Dica: armazene id e type juntos para desambiguar o namespace se você suportar múltiplos tipos de entidades em uma tabela. Use sport.id para filtrar homônimos entre esportes.
Notas de implementação prática
- Autenticação: cada requisição deve incluir Authorization: Bearer YOUR_API_KEY.
- Codificação de consulta: codifique em percentagem q; o curl oficial usa q=real+madrid.
- Cache: resultados de busca para consultas populares podem ser armazenados brevemente para reduzir a latência. Listas de esportes e países são relativamente estáticas—cache por mais tempo e atualize periodicamente.
- Tratamento de erros: trate respostas não-200 exibindo uma mensagem genérica e registrando a resposta para diagnósticos.
- Paginação: não documentada para esses endpoints; se você precisar de mais de uma página de resultados, considere restringir q ou filtrar do lado do cliente.
- Imagens: image_path e country_image_path são URLs HTTPS absolutas que você pode renderizar diretamente.
Casos de uso concretos para entregar esta semana
- Caixa de busca de equipe: chame a Busca com a entrada do usuário, restrinja para type === "team", e então renderize name, country_name e sport.name no dropdown. Persista id na seleção.
- Catálogo de esportes: chame Obter esportes para construir sua navegação à esquerda, cada item vinculando a uma rota sport_id em seu aplicativo.
- Explorador de Tênis: use Obter países com sport_id=2 para listar seções ATP/WTA/ITF. Quando o usuário selecionar uma, você pode ramificar para suas próprias páginas de eventos ancoradas pelo nome escolhido e country_id.
- Ferramentas administrativas: pré-aqueça caches para consultas principais (por exemplo, “real madrid”, “lakers”, “warriors”) na implantação, usando chamadas do lado do servidor com sua chave de API Zyla.
Chamando a API de agentes de IA via MCP
Se seu fluxo de trabalho ocorrer dentro de um cliente compatível com MCP (Claude Code, Cursor, Windsurf e outros), você pode chamar APIs Zyla através do endpoint MCP. Aponte seu cliente para:
Passe sua chave de API Zyla como o parâmetro de consulta apikey (YOUR_API_KEY). Seu agente pode então invocar os mesmos caminhos do FlashScore - Live API Hub que você viu acima, com a mesma semântica do cabeçalho Authorization. Isso mantém os segredos locais mínimos enquanto permite chamadas impulsionadas por ferramentas durante sessões de codificação ou scripts automatizados.
Esboço de fluxo de trabalho de ponta a ponta
- Busque os esportes suportados uma vez no início do aplicativo (Obter esportes). Construa um mapa sport_id → nome de exibição e armazene-o em cache.
- Quando o usuário escolher um esporte, carregue seus países/competências via Obter países com o sport_id escolhido. Armazene o resultado em cache.
- Adicione uma caixa de busca universal que chame a Busca com q, e então direcione condicionalmente para visualizações de equipe, jogador ou torneio com base no campo type.
- Armazene entidades selecionadas por id e type; renderize nome e emblemas de esporte usando sport.name, image_path e country_image_path.
Referência: todos os exemplos de curl
Buscar por consulta:
Obter esportes:
Obter países para um esporte:
Por que Zyla API Hub para integrações esportivas
Zyla API Hub oferece uma única chave, cobrança por assinatura + cota, e um endpoint compatível com MCP para fluxos de trabalho de agentes. Quando você precisa adicionar enriquecimento ou utilitários ao lado de esportes, pode navegar por mais de 10.000 APIs públicas e integrá-las com o mesmo cabeçalho.
FAQ
Como faço para autenticar?
Inclua Authorization: Bearer YOUR_API_KEY em cada requisição.
Há um plano gratuito?
Não. Sua primeira API no Zyla inclui um teste de 7 dias ou 50 requisições. Verifique a página da API para opções de acesso e preços atuais.
Quais parâmetros são suportados na Busca?
q é obrigatório. Use uma string codificada em URL como q=real+madrid.
Como encontro o sport_id correto para Obter países?
Chame Obter esportes primeiro e selecione o sport_id que corresponde ao seu esporte alvo.
Existem parâmetros de paginação ou ordenação?
Não estão documentados para esses endpoints. Se você espera muitos resultados, restrinja seu q ou filtre do lado do cliente.
Pronto para integrar? Crie uma conta gratuita no Zyla e comece com o FlashScore - Live API. Sua primeira API inclui um teste de 7 dias ou 50 requisições para que você possa prototipar rapidamente. Pegue sua chave e execute os exemplos na listagem: Inicie o teste de 7 dias no FlashScore - Live API.
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.flash…
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.flash…