您需要在本周将实时体育数据接入应用程序。通过本指南,您将能够搜索 FlashScore 实体(球队、球员、锦标赛)、列出支持的体育项目,并使用 Zyla API Hub 上的 FlashScore - 实时 API 获取特定体育项目的国家分组——包括可以粘贴到项目中的有效 curl 和 Python 代码。
FlashScore - 实时 API 为您提供的内容
FlashScore - 实时 API 提供可搜索的 FlashScore 实体(球队、球员、锦标赛)和元数据端点,帮助您将查询范围缩小到支持的体育项目及其国家分组。典型的集成包括应用内搜索框、按体育项目预填充选择列表,或在用户深入探索之前将其探索范围缩小到正确的国家/锦标赛类别。
此 API 可在 Zyla API Hub 上获得,这是一个拥有超过 10,000 个公共 API 的市场。通过一个帐户和一个 API 密钥,您只需订阅一次,即可通过一致的接口调用任何列出的 API。
在 Zyla API Hub 上开始
打开 FlashScore - 实时 API 列表并开始试用以获取您的密钥:
- 访问 API 页面: 开始 FlashScore - 实时 API 的 7 天试用。
- 点击订阅或开始免费试用(可用时)以接收您的 API 密钥。
- 在每个请求中使用 Authorization: Bearer YOUR_API_KEY 头。
Zyla 的计费使用订阅 + 配额(而不是按调用计费)。对于您使用的第一个 API,您通常会看到 7 天的试用或小额请求配额以进行评估。请查看 API 页面以获取当前访问选项和定价。
您将使用的端点
以下是 FlashScore - 实时 API 列表中可用的文档化端点。每个部分说明其 HTTP 方法、确切请求 URL 和任何必需的参数。按原样复制 curl 示例并用您的密钥替换 YOUR_API_KEY。
1) 搜索(球队、球员、锦标赛)
通过自由文本查询在 FlashScore 实体中进行搜索。
- 方法:GET
- URL:https://zylalabs.com/api/12518/flashscore-live-api/23852/search
- 必需的查询参数:
- q(字符串):要搜索的文本。示例:real madrid
官方 curl(复制粘贴):
curl -s -X GET "https://zylalabs.com/api/12518/flashscore-live-api/23852/search?q=real+madrid" \
-H "Authorization: Bearer YOUR_API_KEY"
官方 JSON 响应:
[{"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…
您在实践中将使用的内容:
- id:FlashScore 实体标识符(字符串)。使用此标识符来持久化选择或在您的应用中构建深层链接。
- type:实体类别(例如,球队)。有助于根据结果类型分支 UI 行为。
- name:实体的显示标签。
- url:在 FlashScore 上使用的 slug 路径片段。
- sport.id 和 sport.name:结果的体育分类。对多体育搜索 UI 进行过滤时很有帮助。
- gender:在适用的情况下,用于区分比赛的体育上下文。
- country_name:实体的高层次国家/地区标签。
- image_path 和 country_image_path:可在 UI 组件中呈现的球队和国家徽章的 PNG URL。
Python 示例:调用搜索并处理结果
此 Python 代码片段调用搜索端点,检查名为“Real Madrid”的球队,并打印您可以放入 UI 层的简化视图。
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) 获取体育项目
检索此 API 支持的体育项目列表。使用此功能填充体育切换器或在调用其他端点之前验证 sport_id 值。
- 方法:GET
- URL:https://zylalabs.com/api/12518/flashscore-live-api/23853/get-sports
- 参数:无文档
curl:
响应返回一个对象数组,其中包含 sport_id、sport_url 和 name 等字段。在需要体育标识符的上下文中使用 sport_id 值。
3) 获取国家(按体育项目)
返回特定体育项目的国家(或锦标赛/类别)分组列表。这对于构建“体育 → 国家/类别 → 比赛”的导航流程非常有用。
- 方法:GET
- URL:https://zylalabs.com/api/12518/flashscore-live-api/23854/get-countries
- 必需的查询参数:
- sport_id(字符串):例如,2 表示网球
curl(网球示例):
响应返回一个对象数组,其中包含 country_id、country_url 和 name 等字段,表示该体育项目的类别或国家分组(对于网球,分组如 ATP - 单打、WTA - 双打等)。使用这些来限制用户探索,然后再触发搜索或比赛查找。
在您的应用中将端点组合在一起
搜索优先的 UI
许多应用程序从搜索端点开始,让用户快速找到球队、球员或锦标赛。为了获得响应式体验:
- 在用户暂停输入后触发 GET /search(例如,300–500 毫秒去抖动)以减少调用。
- 在客户端缓存最近的 N 个查询,以避免重新获取相同的术语。
- 在您的渲染逻辑中使用 sport.id 或 gender 过滤器来分组或优先显示结果。
浏览优先的 UI(体育 → 国家/类别)
如果您想要结构化导航:
- 调用 GET /get-sports 来构建顶级体育选择器。
- 选择体育项目后,调用 GET /get-countries?sport_id=... 来显示其国家/类别列表。
- 使用这些选择来细化后续搜索,或显示限制在所选体育项目和分组的列表。
服务器端建议
- 将对 Zyla 端点的调用集中在一个小服务模块中,以标准化头并一致地处理 HTTP 错误。
- 在内存中缓存参考数据,如体育和国家/类别,持续几分钟到几小时,因为这些列表不经常更改。
- 记录搜索的查询字符串,以优化后续的自动完成建议。
端到端示例:网球类别选择器与搜索
以下是构建网球选择器流程的快速计划:
- 在启动时调用 GET /get-sports 一次,并映射“网球”sport_id(从响应中,网球有一个 sport_id 字段)。
- 当用户打开网球部分时,调用 GET /get-countries?sport_id=2。
- 呈现类别名称,如“ATP - 单打”、“WTA - 双打”等。
- 提供一个搜索框,查询 GET /search,使用用户的术语;仅呈现 sport.id 对应于网球的结果。
这在任何下游数据获取之前缩小了用户意图,提高了用户体验和后端效率。
通过 MCP 从 AI 代理调用 API
如果您的工作流程使用与 MCP 兼容的客户端(如 Claude Code、Cursor 或 Windsurf),您可以通过 Zyla 的 MCP 端点 https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY 路由调用。这使得代理可以调用相同的 FlashScore - 实时 API 工具,而无需在您的应用中重新实现 HTTP 调用。有关集成说明和 MCP 协议期望,请参见 MCP 文档。
典型的使用模式包括:
- 让 AI 助手执行搜索(例如,“查找皇家马德里球队”)。
- 让代理首先列举支持的体育项目,然后深入特定体育项目的国家/类别,然后再进行搜索。
您仍然需要使用您的 Zyla API 密钥进行身份验证,使用量计入您的订阅配额。
节省时间的操作说明
- 身份验证:每个请求必须包括 Authorization: Bearer YOUR_API_KEY 头。
- 配额模型:订阅 + 配额。这不是按调用计费。有关详细信息,请参见列表页面。
- 试用:对于您在 Zyla 上的第一个 API,您通常会获得 7 天的试用或小额请求配额。始终检查列表的当前条款。
- 缓存:积极缓存 GET /get-sports 和 GET /get-countries 的输出;它们是参考列表,不经常更改。
- 搜索用户体验:去抖动用户输入并缓存最近的查询以减少重复调用。
- 错误处理:将非 2xx 响应视为错误,并提供可操作的消息;记录响应体以快速诊断无效参数。
如果您是 Zyla 的新用户,请浏览目录 zylalabs.com——一个帐户和一个密钥即可解锁对数千个 API 的访问,而无需更改您的 HTTP 客户端模式。
参考:所有端点覆盖
- 搜索
- GET https://zylalabs.com/api/12518/flashscore-live-api/23852/search
- 参数:q(字符串,必需)
- 获取体育项目
- GET https://zylalabs.com/api/12518/flashscore-live-api/23853/get-sports
- 参数:无文档
- 获取国家
- GET https://zylalabs.com/api/12518/flashscore-live-api/23854/get-countries
- 参数:sport_id(字符串,必需)
常见问题
我如何验证我的请求?
在每个调用中包含头 Authorization: Bearer YOUR_API_KEY。在订阅后从 API 的列表页面获取 YOUR_API_KEY。
是否有免费计划?
没有免费计划。Zyla 使用订阅 + 配额模型。对于您的第一个 API,您通常会看到 7 天的试用或小额请求配额以进行评估。请查看列表以获取当前访问选项。
搜索端点返回什么?
一个实体数组(例如,球队),包含 id、type、name、sport.id、sport.name、gender、country_name 和图像 URL 等字段,您可以在 UI 组件中呈现。
我如何找到获取国家的正确 sport_id?
调用 GET /get-sports 列出支持的体育项目及其 sport_id 值。然后将所选的 sport_id 传递给 GET /get-countries。
我可以从 AI 代码助手调用 API 吗?
可以。使用 Zyla 的 MCP 端点 https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY 与兼容 MCP 的客户端。有关详细信息,请参阅链接的 MCP 文档。
准备好发布您的体育集成了吗?在列表中订阅并获取您的密钥: 开始 FlashScore - 实时 API 的 7 天试用。一旦您的密钥激活,粘贴上述 curl,您将在几分钟内上线。
官方 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…
官方 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…