您需要在本周发布体育数据功能:实时团队查找器、支持的体育列表以及国家/比赛分组,以固定时间表或赔率。到本文结束时,您将搜索像“皇家马德里”这样的团队,列举支持的体育,并获取某项体育的国家/比赛列表——所有这些都使用 Zyla API Hub 上的 FlashScore - 实时 API,配合可复制的请求。
您可以使用 FlashScore - 实时 API 构建的内容
FlashScore - 实时 API 提供对 FlashScore 实体(团队、球员、比赛)的搜索,支持的体育目录,以及每项体育的国家/比赛分组。开发人员使用它来支持:
- 团队、球员和比赛的自动完成和实体选择器。
- 导航框架:体育 → 国家/比赛 → 实体。
- 后端连接,将用户输入标准化为规范 ID。
所有调用都通过 Zyla API Hub 进行,这为您提供一个帐户、一个 API 密钥,以及超过 10,000 个公共 API 的一致订阅 + 配额模型。请在此查看 FlashScore - 实时 API 列表: 开始 7 天试用 FlashScore - 实时 API。
在 Zyla API Hub 上入门
打开 Zyla API Hub 上的 FlashScore - 实时 API 页面,点击订阅或开始免费试用(如有),并复制您的 API 密钥。身份验证是在每个请求中包含的单个头:
- Authorization: Bearer YOUR_API_KEY
计费是订阅 + 配额(而不是按调用计费)。对于您在 Zyla 上的第一个 API,您可以获得 7 天试用或 50 次请求——请查看 API 页面以获取当前访问选项和定价。
您将使用的端点
以下所有端点均由 Zyla API Hub 提供。请勿更改基本 URL 或路径段。
1) 搜索(团队、球员、比赛)
- 方法:GET
- URL:https://zylalabs.com/api/12518/flashscore-live-api/23852/search
- 所需查询参数:q(字符串)
- 描述:通过查询字符串搜索 FlashScore 实体。
示例:搜索“皇家马德里”。
curl -s -X GET "https://zylalabs.com/api/12518/flashscore-live-api/23852/search?q=real+madrid" \
-H "Authorization: Bearer YOUR_API_KEY"
官方示例响应:
[{"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…
您可能会立即使用的字段:
- id:您可以存储和重用的稳定标识符。
- type:帮助您区分团队、球员和比赛。
- name、gender、country_name:显示元数据。
- sport.id 和 sport.name:按体育过滤结果。
- image_path、country_image_path:渲染徽章或国旗。
2) 获取体育
- 方法:GET
- URL:https://zylalabs.com/api/12518/flashscore-live-api/23853/get-sports
- 参数:无文档
- 描述:返回所有可用的支持体育的列表。
示例响应:
[{"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"…
常见的下一步:从此列表中获取 sport_id,并深入了解其国家/比赛。
3) 获取某项体育的国家
- 方法:GET
- URL:https://zylalabs.com/api/12518/flashscore-live-api/23854/get-countries
- 所需查询参数:sport_id(字符串)
- 描述:返回特定体育的国家或比赛分组列表。
示例:获取网球的国家/比赛(sport_id=2)。
示例响应:
[{"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…
使用 country_id 和 name 来填充过滤器或引导用户到您的应用中的事件列表。country_url 是一个人类可读的 slug,反映了 FlashScore 的结构。
Python 示例:搜索和解析团队
下面的代码片段调用搜索端点以查找“皇家马德里”实体,并打印规范 ID、名称和体育信息。它使用您在 curl 中看到的确切 URL 和头。
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()
# 过滤到 'team' 结果并打印简洁视图
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}")
提示:将 id 和 type 一起存储,以便在支持多种实体类型的一个表中消歧义命名空间。使用 sport.id 来过滤跨体育同名实体。
实用实施说明
- 身份验证:每个请求必须包含 Authorization: Bearer YOUR_API_KEY。
- 查询编码:百分比编码 q;官方 curl 使用 q=real+madrid。
- 缓存:热门查询的搜索结果可以短暂缓存以减少延迟。体育和国家列表相对静态——缓存时间更长并定期刷新。
- 错误处理:通过显示通用消息并记录响应以进行诊断来处理非 200 响应。
- 分页:这些端点未记录;如果您需要超过一页的结果,请考虑缩小 q 或在客户端进行后期过滤。
- 图像:image_path 和 country_image_path 是您可以直接渲染的绝对 HTTPS URL。
本周需要发布的具体用例
- 团队搜索框:使用用户的输入调用搜索,限制为 type === "team",然后在下拉列表中渲染名称、country_name 和 sport.name。选择时持久化 id。
- 体育目录:调用获取体育以构建您的左侧导航,每个项目链接到您应用中的 sport_id 路由。
- 网球探索器:使用 sport_id=2 调用获取国家以列出 ATP/WTA/ITF 部分。当用户选择一个时,您可以根据所选名称和 country_id 分支到您自己的事件页面。
- 管理工具:在部署时预热热门查询的缓存(例如,“皇家马德里”、“湖人”、“勇士”),使用带有您的 Zyla API 密钥的服务器端调用。
通过 MCP 从 AI 代理调用 API
如果您的工作流在 MCP 兼容客户端(Claude Code、Cursor、Windsurf 等)中运行,您可以通过 MCP 端点调用 Zyla API。将您的客户端指向:
将您的 Zyla API 密钥作为 apikey 查询参数传递(YOUR_API_KEY)。然后,您的代理可以调用您在上面看到的相同 FlashScore - 实时 API Hub 路径,使用相同的 Authorization 头语义。这使得在编码会话或自动化脚本期间保持本地秘密最小化,同时启用工具驱动的调用。
端到端工作流草图
- 在应用启动时一次获取支持的体育(获取体育)。构建 sport_id → 显示名称映射并缓存。
- 当用户选择一项体育时,通过获取国家加载其国家/比赛,使用所选的 sport_id。缓存结果。
- 添加一个通用搜索框,使用 q 调用搜索,然后根据类型字段有条件地路由到团队、球员或比赛视图。
- 通过 id 和 type 存储所选实体;使用 sport.name、image_path 和 country_image_path 渲染名称和体育徽章。
参考:所有 curl 示例
按查询搜索:
获取体育:
获取某项体育的国家:
为什么选择 Zyla API Hub 进行体育集成
Zyla API Hub 为您提供一个密钥、订阅 + 配额计费,以及一个适用于代理工作流的 MCP 兼容端点。当您需要在体育旁边添加丰富功能或实用工具时,您可以浏览超过 10,000 个公共 API,并使用相同的头进行集成。
常见问题解答
我如何进行身份验证?
在每个请求中包含 Authorization: Bearer YOUR_API_KEY。
是否有免费计划?
没有。您在 Zyla 上的第一个 API 包括 7 天试用或 50 次请求。请查看 API 页面以获取当前访问选项和定价。
搜索支持哪些参数?
q 是必需的。使用像 q=real+madrid 这样的 URL 编码字符串。
我如何找到获取国家的正确 sport_id?
首先调用获取体育,并选择与您的目标体育匹配的 sport_id。
是否有分页或排序参数?
这些端点未记录。如果您期望有很多结果,请缩小您的 q 或在客户端进行过滤。
准备好集成了吗?在 Zyla 上创建一个免费帐户,并开始使用 FlashScore - 实时 API。您的第一个 API 包括 7 天试用或 50 次请求,以便您可以快速原型。获取您的密钥并在列表上运行示例: 开始 7 天试用 FlashScore - 实时 API。
官方 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…
官方 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…