您需要一个包含稳定 ID、别名和名称的体育项目的明确列表,以推动应用程序中的导航、过滤器或查找。在本指南结束时,您将发布一个集成,从单个端点获取每个可用的体育项目,在代码中解析它,并可选择使用相同的 API 家族通过国家旗帜和全球搜索来丰富您的用户界面。
此 API 为您提供的内容
SofaScore - Live API 在 Zyla API Hub 上公开了一个简单的读取端点,该端点返回所有可用体育项目的对象数组,每个对象都有一个 id、名称和别名。此列表适合引导您的体育分类、驱动下拉菜单或将体育别名映射到路由。相同的 API 还提供:
- 用于 UI 装饰或归属的国家旗帜端点(图像字节)。
- 通过文本查询进行团队、俱乐部和相关实体的跨实体搜索端点。
由于此 API 在 Zyla API Hub 上运行,您只需一个帐户和一个 API 密钥,采用订阅 + 配额模型(不是按调用付费)。该平台托管超过 10,000 个公共 API,具有一致的身份验证和计费。对于您的第一个 API,您可以开始 7 天试用或 50 次请求(没有免费计划)。请查看 API 页面以获取当前访问选项和定价。
在 Zyla API Hub 上入门
打开 SofaScore - Live API 页面并开始试用以获取 API 密钥:
- 转到 在 SofaScore - Live API 上开始 7 天试用。
- 点击订阅或开始免费试用(如果可用),然后复制您的 API 密钥。
- 使用以下请求头发送请求:Authorization: Bearer YOUR_API_KEY
您可以直接从您的 Zyla API Hub 帐户管理您的密钥和订阅。
您将使用的端点
本节记录与“获取所有体育的 API”相关的三个端点,提供其确切的请求 URL、方法和参数(仅在指定的地方)。请勿添加请求体;这些端点是简单的 GET 请求,带有查询参数,如所示。
1) 获取所有体育
- 方法:GET
- URL:https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports
- 描述:返回所有可用体育的列表。
- 参数:未记录。
- 身份验证:Authorization: Bearer YOUR_API_KEY
cURL(官方示例):
curl -s -X GET "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports" \
-H "Authorization: Bearer YOUR_API_KEY"
示例 JSON(官方示例):
[
{
"id": 1,
"name": "足球",
"slug": "football"
},
{
"id": 5,
"name": "网球",
"slug": "tennis"
},
{
"id": 2,
"name": "篮球",
"slug": "basketball"
},
{
"id": 64,
"name": "棒球",
"slug": "baseball"
},
{
"id": 23,
"name": "排球",
"slug": "volleyball"
},
{
"id": 63,
"name": "美式足球",
"slug": "american-football"
},
{
"id": 6,
"name": "手球",
"slug": "handball"
},
{
"id": 20,
"name": "乒乓球",
"slug": "table-tennis"
},
{
"id": 4,
"name": "冰球",
"slug": "ice-hockey"
},
{
"id": 22,
"name": "飞镖",
"slug": "darts"
},
{
"id": 72,
"name": "电子竞技",
"slug": "esports"
},
{
"id": 11,
"name": "赛车",
"slug": "motorsport"
},
{
"id": 65,
"name": "骑自行车",
"slug": "cycling"
},
{
"id": 62,
"name": "板球",
"slug": "cricket"
},
{
"id": 76,
"name": "综合格斗",
"slug": "mma"
},
{
"id": 12,
"name": "橄榄球",
"slug": "rugby"
},
{
"id": 29,
"name": "五人制足球",
"slug": "futsal"
},
{
"id": 31,
"name": "羽毛球",
"slug": "badminton"
},
{
"id": 26,
"name": "水球",
"slug": "waterpolo"
},
{
"id": 19,
"name": "斯诺克",
"slug": "snooker"
},
{
"id": 13,
"name": "澳式足球",
"slug": "aussie-rules"
},
{
"id": 34,
"name": "沙滩排球",
"slug": "beach-volley"
},
{
"id": 109,
"name": "迷你足球",
"slug": "minifootball"
},
{
"id": 7,
"name": "地板球",
"slug": "floorball"
},
{
"id": 15,
"name": "班迪",
"slug": "bandy"
},
{
"id": 110,
"name": "帕德尔",
"slug": "padel"
}
]
使用说明:
- id:稳定的整数标识符。将其用作您的主键或映射到您自己的分类。
- name:用户界面的显示标签。
- slug:小写、URL 友好的标识符(适合路由和查询参数)。
实用说明:
- 缓存:此列表相对静态。根据刷新需求在您的应用中缓存数小时或一天。部署时或通过手动管理员控制清除缓存。
- 本地化:响应显示英文名称。如果您需要本地化层,请将别名映射到您自己的 i18n 字符串。
- 排序:如果您需要特定顺序,请按名称排序或应用自定义权重映射(例如,优先考虑足球、篮球、网球)。
2) 获取国家旗帜
- 方法:GET
- URL:https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag
- 描述:返回国家旗帜图像字节。
- 参数(必需):country_code(字符串)。示例值:EN
- 身份验证:Authorization: Bearer YOUR_API_KEY
cURL:
示例响应:
iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAMAAAAL34HQAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAELUExURUdwTN/f37QVJd7e3t3d3d/f39/f39/f39/f397e3t7e3t3d3d3d3d3d3d/f397e3t/f39/f39zc3N7e3rQUJN/f37MUJLUTJd/f39/f3+Hh4d3d3bMUJLUVJbQUJLUVJbUUJLcQKOHh4d3d3bQVJLQUJN/f397e3rQVJbIWI7ITI7QUJLcYKM4RJP///97e3rQUJPv7++Li4v39/ebm5uDg4Orq6vDw8OTk5Pf397sTJPn5+bsUJPPz8/Ly8u7u7rcUJMcSJOzs7PHx8cQSJO/v77gUJLgTJOjo6MoSJMETJL8TJLUUJL4TJOvr680RJMsSJMsRJMQTJL0TJO3t7cwRJLYUJM0SJLwUJL4UJDN2488AAAAsdFJOUwB/38+AMBAg79+fcJBAv3CfYKC/YICfj79vr0AwcGCvIF+Pz8+vsKBQULAgUCRTtgAABilJREFUeNrtnGdX40YUhoWrhA1uGFj6tmQ34VrFKl6vzdqYDrtJNvX//5JMkSU3YWk0kiYn3A/CB3zMc+776s54NHMlKV6cfThp756+zeVUErlcq7XbPj48kjKLYqOel9WAkLf3GsXUkcqVA7mDIwiL/FE+qKSItrWndKZBIR6vrz+TuL6excKhbG6lwyR3/ND/eZiM7r6dz8bdaHL/tzPzJmUz4ZyVKtvePzMtu2fAeUCA0bNvde/N+UaCUBteorp2H0gEYpHo210/ZeVkXL7pMxkwjeexUGgDjywBMA/KufKZwmARMj0ZME++bg/mIwwWip7lgm1wBHtFocyxBsCGhVLmgim8zF+md585r15ULB8szyVhrn6WBhAPywfb4JWqJU8xYSEwan6lzMNV5iUAHywAelfKlTg34B5NlQb8sKZKvikxC5hfkyomLJQwM46QRTJPcDTgjeU6TGEawF+TXP8OwB8L4Ip8OIPBNoiAA0gGCy5NpkpBqPQ+JIXlCrnBQqVBclgsXITKMSBJLDCciFyEqhuGKg5WVC5C9RUgaSyArxG4XhEFIQ0sIDPX16GqaGhfccCiOoaoq2Vc2/WwVHGxwNBDjUMlJWRl4IRF60R+3biN5wxmeKr4WNDH…
使用说明:
- 响应为原始图像字节。存储到磁盘,通过 CDN 缓存,或在内存中转换为 base64 以便立即在 Web 客户端中呈现。
- country_code 是字符串(示例:EN)。验证您的输入以避免不必要的重试。
3) 搜索所有实体
- 方法:GET
- URL:https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities
- 描述:通过查询字符串搜索所有 SofaScore 实体。
- 参数(必需):q(字符串)。示例值:real madrid
- 身份验证:Authorization: Bearer YOUR_API_KEY
cURL:
示例响应:
[{"entity":{"id":2829,"name":"皇家马德里","slug":"real-madrid","imagePath":"https:\/\/img.sofascore.com\/api\/v1\/team\/2829\/image","proxyImagePath":"https:\/\/betting.asdasddsgdfgfdsgfj.website\/sofascore\/image-proxy?imagePath=https:\/\/img.sofascore.com\/api\/v1\/team\/2829\/image","fullName":null,"shortName":null,"nameCode":"RMA","gender":"M","country":{"name":"西班牙","slug":"spain","alpha2":"ES","alpha3":null,"imagePath":"https:\/\/img.sofascore.com\/api\/v1\/country\/ES\/flag","proxyImagePath":"https:\/\/betting.asdasddsgdfgfdsgfj.website\/sofascore\/image-proxy?imagePath=https:\/\/img.sofascore.com\/api\/v1\/country\/ES\/flag"},"foundationDateTimestamp":null,"manager":[],"ranking":null,"national":false,"venue":[],"sport":{"id":1,"name":"足球","slug":"football"}},"score":4293164.5,"type":"team"},{"entity":{"id":2816,"name":"皇家贝蒂斯","slug":"real-betis","imagePath":"https:\/\/img.sofascore.com\/api\/v1\/team\/2816\/image","proxyImagePath":"https:\/\/betting.asdasddsgdfgfdsgfj.website\/sofascore\/image-proxy?imagePath=https:\/\/img.sofascore.com\/api\/v1\/team\/2816\/image","fullName":null,"shortName":null,"nameCode":"BET","gender":"M","country":{"name":"西班牙","slug":"spain","alpha2":null,"alpha3":null,"imagePath":"https:\/\/img.sofascore.com\/api\/v1\/country\/ES\/flag","proxyImagePath":"https:\/\/betting.asdasddsgdfgfdsgfj.website\/sofascore\/image-proxy?imagePath=https:\/\/img.sofascore.com\/api\/v1\/country\/ES\/flag"},"foundationDateTimestamp":null,"manager":[],"ranking":null,"national":false,"venue":[],"sport":{"id":1,"name":"足球","slug":"football"}},"score":...}]
使用说明:
- 使用 q 实现团队和实体的全局搜索栏。在客户端进行防抖以减少调用。
- 响应结构包括实体元数据,例如 id、名称、别名、国家和体育。缓存热门查询。
复制粘贴代码:在 Python 中加载体育列表
下面的示例调用获取所有体育的 API,检查 HTTP 状态,将 JSON 解析为字典列表,并构建您实际使用的两个查找结构:id-to-name 和 slug-to-id。在指示的位置插入您的 API 密钥。
import os
import sys
import json
import urllib.request
API_URL = "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports"
API_KEY = os.environ.get("ZYLALABS_API_KEY", "YOUR_API_KEY")
req = urllib.request.Request(API_URL, method="GET")
req.add_header("Authorization", f"Bearer {API_KEY}")
try:
with urllib.request.urlopen(req, timeout=10) as resp:
if resp.status != 200:
sys.stderr.write(f"HTTP {resp.status}\n")
sys.exit(1)
data = json.loads(resp.read().decode("utf-8"))
except Exception as e:
sys.stderr.write(f"请求失败:{e}\n")
sys.exit(1)
# 构建在真实应用中有用的查找:
id_to_name = {item["id"]: item["name"] for item in data}
slug_to_id = {item["slug"]: item["id"] for item in data}
# 示例用法:路由构建和验证
def sport_exists(slug):
return slug in slug_to_id
# 打印快速摘要和路由示例
print(f"加载了 {len(data)} 项体育")
for s in data[:5]:
print(f"- {s['name']} (id={s['id']}, slug={s['slug']})")
example_slug = "football"
if sport_exists(example_slug):
sport_id = slug_to_id[example_slug]
print(f"/sports/{example_slug} 映射到 sport_id={sport_id}")
else:
print(f"{example_slug} 不存在")
实施提示:
- 超时:设置合理的超时(例如,5–10 秒)以避免请求挂起。
- 重试:对于瞬态错误,使用指数退避重试。避免无限循环。
- 缓存:文件缓存或内存中的 TTL 缓存通常足以处理此静态列表。
您本周可以发布的实际用例
- 导航引导:在服务器启动时获取体育项目一次,并生成 /sports/{slug} 路由和网站地图。
- 过滤器 UI:使用名称和别名填充仪表板或移动应用中的体育选择器。
- 搜索 + 详情:将获取所有体育与搜索所有实体结合起来,构建一个返回按体育范围划分的团队的单一搜索框。
- 品牌和旗帜:当您显示搜索返回的团队或比赛时,使用获取国家旗帜进行装饰。
- 服务器端渲染:在构建时(或按需缓存)获取体育列表,以加快页面加载速度。
端到端:从列表到 UI 美化
1) 加载所有体育
调用获取所有体育的端点一次并存储响应。使用别名进行 URL 安全链接,使用 ID 进行数据库连接或分析标记。
2) 添加快速搜索
将输入连接到搜索所有实体的端点。防抖设置为 250–500 毫秒,并缓存最后几个查询。渲染名称、国家和体育名称(如可用)。
3) 用旗帜装饰
当实体包含国家时,使用所需的 country_code 调用获取国家旗帜。缓存图像字节或在第一次请求时存储它们。
MCP:从 AI 代理调用此 API
Zyla 上的每个 API 也可以通过 MCP 兼容的端点调用,该端点与 Claude Code、Cursor、Windsurf 和其他 MCP 客户端兼容。将您的代理或工具指向:
- 端点:https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY
这允许您的代理在支持 MCP 协议的环境中使用您的 Zyla 密钥调用相同的 SofaScore - Live API 操作。有关客户端设置的详细信息,请参阅 MCP。对于直接 HTTP 调用,请保持相同的授权方法;在 MCP 内,根据您的 MCP 客户端的配置提供您的 Zyla 密钥。
操作指导
- 身份验证:始终发送 Authorization: Bearer YOUR_API_KEY。
- 配额和计费:订阅 + 配额模型(不是按调用付费)。对于您的第一个 API,您可以开始 7 天试用或 50 次请求。没有免费计划。请查看列表以获取当前访问选项。
- 错误处理:优雅地处理非 200 状态。除 429 外,不要在 4xx 上重试,适用时进行退避。
- 可观察性:记录端点、状态和延迟。对于缓存,记录缓存命中与未命中,以保持调用量可预测。
参考:一览三大端点
- 获取所有体育
- GET https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports
- 参数:未记录
- 返回:数组 { id, name, slug }
- 获取国家旗帜
- GET https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag
- 参数:country_code(字符串,必需),例如,EN
- 返回:图像字节
- 搜索所有实体
- GET https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities
- 参数:q(字符串,必需),例如,real madrid
- 返回:包含元数据的匹配实体列表,包括体育
常见问题
我如何验证请求?
在每个请求中添加头 Authorization: Bearer YOUR_API_KEY。
是否有免费计划?
没有免费计划。对于您的第一个 API,您可以开始 7 天试用或 50 次请求。请查看 API 页面以获取当前访问选项和定价。
我应该多久刷新一次体育列表?
体育列表相对稳定。缓存它并根据适合您应用的计划(例如,每日)或在部署时刷新。如果您需要立即更新,请手动使其失效。
我可以直接从 API 获取图像(如旗帜)吗?
可以。使用获取国家旗帜和所需的 country_code 接收原始图像字节。缓存或 CDN 这些响应以提高性能。
我可以搜索团队或俱乐部吗?
可以。使用搜索所有实体和 q 查找团队和其他实体。解析返回的实体对象以呈现名称、别名和国家信息。
准备发布了吗?在 Zyla API Hub 上创建您的帐户,然后开始您的试用并插入上述端点。从这里开始:在 SofaScore - Live API 上开始 7 天试用。