在体育类应用中,数据往往决定了用户体验的上限。无论是做一个简单的比分小程序,还是一个完整的赛事分析平台,如何获取及时、准确、结构化的比赛数据,都是最核心的问题之一。
这正是比分 API 的价值所在。
通过接入足球比分 API,开发者无需自己采集或维护数据源,就可以快速获得:
- 联赛、球队、队员信息
- 实时比分
- 历史交锋记录
这些数据可用于基础展示(如比分页、赛程页),还能进一步用于数据分析,尤其是实时比分往往比电视转播的速度要快,用来搭配最近大火的Polymarket,能大大提升预测胜率。
下面将基于AnySport的实时比分接口,详细介绍如何使用这类API获取数据。
1. 赛事接口:GET /v1/matches
返回足球赛程和比赛结果。支持按日期范围、联赛、球队或指定比赛 ID 过滤。
1.1 查询参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
date |
string |
否 | 今天 | 单日日期,格式 YYYY-MM-DD。等同于 from=date&to=date。 |
from |
string |
否 | — | 开始日期,格式 YYYY-MM-DD。与 to 配合使用查询日期范围。 |
to |
string |
否 | — | 结束日期,格式 YYYY-MM-DD。与 from 配合使用查询日期范围。 |
league_id |
string |
否 | — | 按联赛 ID 过滤。ID 可从 /v1/leagues 获取。 |
team_id |
string |
否 | — | 按球队 ID 过滤,返回该球队参与的比赛。ID 可从 /v1/teams 获取。 |
match_id |
string |
否 | — | 按比赛唯一 ID 查询单场比赛。 |
lang |
string |
否 | en |
响应语言,影响球队/联赛/国家名称。支持:en、zh。 |
page |
integer |
否 | 1 |
分页页码。 |
limit |
integer |
否 | 50 |
每页结果数量,最大 200。 |
1.2 赛事接口请求示例
import requests
API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://api.anysport.io/v1'
# 申请API Key: www.anysport.io
def get_matches(date=None, from_date=None, to_date=None,
league_id=None, team_id=None, match_id=None,
lang='zh', page=1, limit=50):
params = {'lang': lang, 'page': page, 'limit': limit}
if date: params['date'] = date
if from_date: params['from'] = from_date
if to_date: params['to'] = to_date
if league_id: params['league_id'] = league_id
if team_id: params['team_id'] = team_id
if match_id: params['match_id'] = match_id
r = requests.get(
f'{BASE_URL}/matches',
params=params,
headers={'X-API-Key': API_KEY}
)
r.raise_for_status()
return r.json()
# 获取英超指定日期比赛(中文名称)
result = get_matches(date='2026-03-16', league_id='148', lang='zh')
for match in result['data']:
print(f"{match['home']} {match['score']} {match['away']}")
2. 实时比分接口 GET /v1/livescore
实时返回所有正在进行中的足球比赛,包括进球、出牌、换人和比赛数据统计。
2.1 查询参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
league_id |
string |
否 | — | 按联赛 ID 过滤。ID 可从 /v1/leagues 获取。 |
country_id |
string |
否 | — | 按国家 ID 过滤。ID 可从 /v1/countries 获取。 |
match_id |
string |
否 | — | 查询指定比赛的实时数据。 |
lang |
string |
否 | en |
响应语言,影响球队/联赛/国家名称。支持:en、zh。 |
page |
integer |
否 | 1 |
分页页码。 |
limit |
integer |
否 | 50 |
每页结果数量,最大 200。 |
2.2 实时比分请求示例
import requests
API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://api.anysport.io/v1'
# 申请API Key: www.anysport.io
def get_livescore(league_id=None, country_id=None, match_id=None, lang='zh'):
params = {'lang': lang}
if league_id: params['league_id'] = league_id
if country_id: params['country_id'] = country_id
if match_id: params['match_id'] = match_id
r = requests.get(
f'{BASE_URL}/livescore',
params=params,
headers={'X-API-Key': API_KEY}
)
r.raise_for_status()
return r.json()
result = get_livescore(league_id='148', lang='zh')
for match in result['data']:
print(f"{match['home']} {match['score']} {match['away']}(第{match['minute']}分钟)")
2.3 实时比分接口的响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
status |
string |
"live"(上半场/下半场)、"ht"(中场休息)、"extra_time"(加时赛)、"penalties"(点球) |
minute |
integer |
当前比赛分钟(如 67)。中场休息时为 null。 |
live |
boolean |
此接口返回的所有比赛均为 true |
score |
string |
当前比分,格式 "主队-客队"(如 "2-1") |
ht_score |
string \| null |
半场比分。上半场未到中场时为 null。 |
goals |
Goal[] |
到目前为止的进球记录(按时间排序) |
cards |
Card[] |
到目前为止的出牌记录 |
subs |
Substitution[] |
到目前为止的换人记录 |
stats |
StatEntry[] |
当前比赛数据统计 |
3. 联赛积分榜查询 GET /v1/standings
返回指定联赛的当前积分榜。响应包含三张独立的积分表:总积分榜、主场积分榜和客场积分榜。代码示例如下:
import requests
API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://api.anysport.io/v1'
# 申请API Key: www.anysport.io
def get_standings(league_id, lang='zh'):
r = requests.get(
f'{BASE_URL}/standings',
params={'league_id': league_id, 'lang': lang},
headers={'X-API-Key': API_KEY}
)
r.raise_for_status()
return r.json()
result = get_standings('148', lang='zh')
total_table = result['data']['total']
for row in total_table:
print(f"{row['position']}. {row['team']} — {row['points']}分 (胜{row['wins']} 平{row['draws']} 负{row['losses']})")
4. 历史交锋 GET /v1/head2head
返回两支球队的历史交锋记录,以及各自的近期赛事数据。需要传入两个队伍ID:
import requests
API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://api.anysport.io/v1'
def get_head2head(team1_id, team2_id, lang='zh'):
r = requests.get(
f'{BASE_URL}/head2head',
params={'team1_id': team1_id, 'team2_id': team2_id, 'lang': lang},
headers={'X-API-Key': API_KEY}
)
r.raise_for_status()
return r.json()
result = get_head2head('85', '42', lang='zh')
history = result['data']['history']
for match in history:
print(f"{match['date']}: {match['home']} {match['score']} {match['away']}")
AnySport提供的数据远不止这些,这里篇幅有限就不一一展开,有兴趣的同学可以自行查看**官方文档**。
随时随地看视频