SportApi
API 文档

体育赔率线 API 文档

集成体育赔率线所需的一切:身份验证、方法、参数、现成的代码示例和 JSON 响应。

GET /v1/start json
{
  "ok": true,
  "package": "STANDARD",
  "limits": { "requests": 1000000, "rps": 40 },
  "sports": 214,
  "languages": ["en", "ru", "ua", "es"]
}

从哪里开始?

欢迎使用我们的 API 系统!通过遵循这些简单的步骤,您将快速开始使用我们的 API 并将体育数据集成到您的系统中。

  1. 获取您的 API 密钥以集成数据
    联系技术支持,您将获得一个用于后续请求的唯一 API 密钥和域名地址。该密钥是授权对我们 API 进行所有请求所必需的。

  2. 熟悉文档
    收到密钥后,您可以查看 API 文档并了解可用的方法、请求示例和响应。这将帮助您理解如何将体育数据集成到您的系统中。

  3. 发送您的第一个请求
    使用您的 API 密钥,发送您对 API 的第一个请求。文档部分包含各种体育数据类型的请求和响应示例。

  4. 开始集成
    成功完成测试请求后,您可以开始将数据集成到您的项目中。我们的 API 为处理不同类型的体育和赛事提供了灵活的工具。

  5. 获取支持
    如果您有任何问题,可以随时联系我们的技术支持或使用常见问题解答 (FAQ) 部分来解决常见问题。

API 方法

体育赔率线 API 提供了一组受限的方法,允许您检索各种体育数据。以下是所有可用方法的列表,每个方法都返回用于执行特定任务的特定信息集。您可以根据需要选择所需的方法。除了每个方法之外,还可以使用参数来方便地过滤和自定义检索到的数据。参数的详细说明在下方提供。

  • menu 该方法返回体育赛事菜单的结构,包括体育类型、国家和锦标赛。
  • events 该方法返回带有可用于投注的简要赔率集的比赛列表。
  • event 该方法通过标识符返回有关特定体育赛事的详细信息,以及该比赛的完整投注、赔率和结果集。
  • topmatches 该方法返回最受用户欢迎或投注活动较高的热门比赛列表。
  • search 该方法允许通过关键字(例如球队名称)搜索体育赛事。

API 参数

要使用我们的 API,您可以使用各种参数,这些参数将帮助您自定义请求并检索满足您要求的精准数据。参数允许您按体育项目、国家、锦标赛过滤数据,并调整返回赛事的格式。以下是可用参数及其说明的列表,可帮助您灵活管理对我们 API 的请求。

  • API-URL-LINE 请求体育赔率线数据的主机 URL。换句话说,这是您发送请求以检索体育数据的 URL。
  • API-KEY 个人访问密钥 PersonalKey,它定义了您的服务套餐。该密钥在每次请求时通过请求头 headers 发送。
  • METHODS-API 用于检索数据的方法名称。所有方法均在上一节中进行了描述。
  • TYPE 体育赔率线数据的类型。它可以取值 live(用于实时数据)或 line(用于赛前赔率线数据)。
  • LANG 提供体育赔率线数据所使用的语言。支持的语言取决于您的套餐。
  • SPORT-ID 体育项目的标识符。
  • COUNTRY-ID 国家的标识符。
  • CHAMPIONSHIP-ID 锦标赛的标识符。
  • MATCH-ID 比赛的标识符。
  • KG 赛事和赔率的显示方式。有两个选项可用:sub - 比赛按锦标赛分组;list - 比赛显示为常规列表,不进行分组。

Note:特定比赛中,分组不适用于比赛,而是适用于结果和投注。因此,您会获得一个赔率列表,该列表可以显示为简单列表,也可以方便地按逻辑结果类别进行分组。

请求示例

本节提供了向我们的 API 发送请求以获取体育数据的示例。该示例演示了如何使用您的唯一参数(例如 API 密钥)来使用 API 方法之一。这将帮助您更好地理解如何正确格式化请求并检索所需信息。

检索体育赛事的请求示例

示例中的数据是虚构的。请将其替换为从技术支持处获得的真实数据

GET

架构: [API-URL-LINE] /v1/ [METHODS-API] / [TYPE] / [LANG]

请求: HTTPS://example-domain-demo.com/v1/menu/live/zh

Headers: 'Package': '0145-3455-1298-2978-1100'

GET /v1/menu/live/en python
import requests

url = "https://api.sportapi.net/v1/events/21/101/prematch/en"
headers = {"Package": "YOUR_API_KEY"}

response = requests.get(url, headers=headers)
print(response.json())

在 Postman 中尝试

为了简化我们 API 的集成,我们为 Postman 准备了请求集合。您可以下载该文件,将其导入到 Postman 中,然后立即开始使用我们的 API,而无需手动配置请求。

在 Postman 中开始的步骤:

  1. 下载 Postman 集合文件 并将其导入到 Postman 中。

  2. 将文件导入 Postman:

    • 打开 Postman。
    • 在顶部菜单中,选择 File -> Import
    • 上传下载的文件。
  3. 配置变量:
    导入集合后,您需要添加您的 API 密钥和其他参数。这可以在集合的 Variables 部分中完成,也可以手动添加到每个请求中。

  4. 运行请求:
    您现在可以立即开始发送请求并从我们的 API 接收数据。

Example of requesting sports data via Postman

检索体育、国家和锦标赛

您可以通过单个请求检索有关体育项目、国家和锦标赛的数据。为此,只需更改请求中的数据类型,这取决于您需要实时比赛还是即将举行的赛事。

响应将提供所有必要的信息:

  • 体育 ID 及其名称。
  • 国家 ID 及其名称。
  • 锦标赛 ID 及其名称。

所有数据都分组成一个方便的对象,可以轻松集成到您的系统中,允许您以任何格式显示信息。

要获取此数据,您需要向 menu 方法发送请求并指定以下参数:

  • 比赛类型:指出您需要实时比赛数据还是即将举行的赛事数据。
  • 数据语言:选择您希望接收数据的语言。

这些参数是提交所必需的。不要忘记在请求头 (Headers) 中传递您的 API 密钥

请求示例

发送此请求以获取菜单,其中包含后续检索比赛和结果所需的所有数据:

Note: 建议以至少 40 秒的间隔发送赔率线 (Line) 请求。实时 (Live) 请求 — 至少 20 秒。数据更新频率不高,因此该间隔足以获取最新信息。

GET   架构: [API-URL-LINE] /v1/ [METHODS-API] / [TYPE] / [LANG]

请求: HTTPS://example-domain-demo.com/v1/menu/live/zh

Headers: 'Package': '0145-3455-1298-2978-1100'

字段说明

  • id 该项的唯一标识符(例如,体育项目、国家或锦标赛)。
  • name 该项的名称(例如,体育项目的 Football,国家的 Europe,或锦标赛的 UEFA Champions League)。
  • counter 该项的可用赛事或比赛数量。
  • sub 一个包含嵌套项(如所选体育项目的国家或锦标赛)的数组。这允许您获取数据的层级结构 — 从体育项目到特定锦标赛。

结构解析示例

在此示例中:

  • Football — ID 为 1 的体育项目,有 126 个可用赛事。
  • 该体育项目下有国家,例如 Europe (ID 12),其中包含 10 场比赛。
  • Europe 国家下有几个锦标赛,例如 UEFA Champions League (ID 118587),其中有 3 场比赛可用。
GET /v1/menu/live/en json
{
    "status":1,
    "body":[
        {
            "id":1,
            "name":"Football",
            "counter":126,
            "sub":[
                {
                "id":12,
                "name":"Europe",
                "sport_id":1,
                "counter":10,
                "sub":[
                    {
                        "id":118587,
                        "name":"UEFA Champions League",
                        "sport_id":1,
                        "country_id":12,
                        "counter":3
                    },
                    {
                        "id":218103,
                        "name":"UEFA Champions League. Winner",
                        "sport_id":1,
                        "country_id":12,
                        "counter":1
                    },
                    {
                        "id":16,
                        "name":"Italy",
                        "sport_id":1,
                        "counter":1,
                        "sub":[
                            {
                            "id":6356,
                            "name":"Italy. Serie C. Group A",
                            "sport_id":1,
                            "country_id":16,
                            "counter":1
                            }
                        ]
                    }
                ]
                }
            ]
        },
        {
            "id":2,
            "name":"Tennis",
            "counter":40,
            "sub":[
                {
                "id":14,
                "name":"Portugal",
                "sport_id":2,
                "counter":1,
                "sub":[
                    {
                        "id":8031,
                        "name":"Challenger. Braga",
                        "sport_id":2,
                        "country_id":14,
                        "counter":1
                    }
                ]
                }
            ]
        }
    ]
}

比赛列表

您可检索比赛列表的数据。请务必注意,您必须指定 体育 ID — 无法一次性获取所有体育项目的所有比赛。您还可以选择需要实时比赛还是即将举行的赛事,并指定其他过滤参数。

响应将提供有关您指定体育项目比赛的所有必要信息。

所有数据都分组成一个方便的对象,可以轻松集成到您的系统中,允许您以任何格式显示信息。

要获取比赛列表,您需要向 events 方法发送请求并指定以下参数:

  • 体育 ID:必填参数。
  • 锦标赛 ID:如果您对特定锦标赛的比赛感兴趣。如果您需要所有比赛,请指定 "0"。
  • 响应分组:指定数据的分组方式。
  • 比赛类型:选择您需要实时比赛数据还是即将举行的赛事数据。
  • 数据语言:选择您希望接收数据的语言。

这些参数是提交所必需的。不要忘记在请求头 (Headers) 中传递您的 API 密钥

请求示例

发送此请求以获取菜单,其中包含后续检索比赛和结果所需的所有数据:

Note: 建议以至少 20 秒的间隔发送赔率线 (Line) 请求。实时 (Live) 请求 — 至少 5 秒。该间隔足以获取最新信息。

GET   架构: [API-URL-LINE] /v1/ events / [SPORT-ID] / [CHAMPIONSHIP-ID] / [KG] / 50 / [TYPE] / [LANG]

请求: HTTPS://example-domain-demo.com/v1/events/1/0/list/50/live/zh

Headers: 'Package': '0145-3455-1298-2978-1100'

响应包含有关比赛的数据,包括有关球队、锦标赛和赔率的信息。响应对象中返回的关键字段在下方进行了说明。请注意,根据类型 [KG],返回的数据会有所不同(下方的 json 示例首先显示 [KG] = list,然后显示 [KG] = sub)。

字段说明

  • status 请求状态。如果为 1,则请求成功执行。
  • sgame_id 系统中比赛的唯一标识符。
  • stat_id 比赛统计信息的标识符。
  • game_id 内部比赛标识符。
  • game_mid 子比赛的标识符。
  • game_dop_name 有关比赛的附加信息(例如,"Extra-Time")。
  • game_start Unix 时间戳格式的比赛开始时间。
  • game_oc_counter 该比赛可用于投注的盘口数量。
  • country_id 举行比赛的国家的标识符。
  • country_name 国家名称。
  • tournament_id 锦标赛的标识符。
  • tournament_name 锦标赛名称。
  • opp_1_name 第一支球队的名称。
  • opp_2_name 第二支球队的名称。
  • opp_1_id 第一支球队的标识符.
  • opp_2_id 第二支球队的标识符。
  • opp_1_icon 第一支球队的图标。
  • opp_2_icon 第二支球队的图标。
  • sport_name 体育项目名称(例如,"Football")。
  • sport_id 体育项目的标识符。
  • score_full 比赛全场比分。
  • score_extra 网球比赛的比分。
  • score_period 特定小节的比分。
  • period_name 比赛时段名称(例如,"2 Half")。
  • timer 显示当前比赛时间的计时器(以秒为单位)。
  • pitch 发球球员的 ID(用于有发球环节的体育项目)。
  • finale 表示比赛是否结束的布尔值。

投注盘口信息

  • oc_group_name 盘口组的名称(例如,"Double Chance")。
  • oc_name 特定结果的名称(例如,"1X")。
  • oc_rate 该结果的赔率。
  • oc_pointer 结果的唯一标识符。
  • oc_block 表示结果是否被锁定的布尔值(如果为 true — 结果被锁定,不可用于投注)。
GET /v1/events/1/0/list/50/live/en json
// [KG] = list
{
    "status": 1,
    "body": [
        {
            "sgame_id": "66f8a2d60d8c0bfbf1af3f93",
            "stat_id": "66c914530d8c0bfbf15f5682",
            "game_id": 562898620,
            "game_mid": 562898620,
            "game_dop_name": "Extra-Time",
            "game_start": 1707807400,
            "game_oc_counter": 38,
            "country_id": 231,
            "country_name": "England",
            "tournament_id": 108319,
            "tournament_name": "England. FA Cup",
            "opp_1_name": "King's Lynn Town",
            "opp_2_name": "Worksop Town",
            "opp_1_id": 40547,
            "opp_2_id": 40549,
            "opp_1_icon": "400098.png",
            "opp_2_icon": "1201c9f.png",
            "sport_name": "Football",
            "sport_id": 1,
            "score_full": "0:0",
            "score_extra": "0:0",
            "score_period": "0:0",
            "period_name": "3 Half",
            "timer": 6511,
            "finale": false,
            "pitch": null,
            "game_oc_list": [
                {
                    "oc_group_name": "Double Chance",
                    "oc_name": "1X",
                    "oc_rate": 1.136,
                    "oc_pointer": "562898620|8|4|0",
                    "oc_block": false
                }
            ]
        }
    ]
}

// [KG] = sub
{
    "status": 1,
    "body": [
        {
            "tournament_id": 8147,
            "tournament_name": "Thailand. League Cup",
            "events_list": [
                {
                    "sgame_id": 66f8a2d60d8c0bfbf1af3f93,
                    "stat_id": 3788a2d60d8c0bfbf1af3f93,
                    "game_id": 562987092,
                    "game_mid": 562987092,
                    "game_dop_name": "",
                    "game_start": 1707856000,
                    "game_oc_counter": 183,
                    "country_id": 180,
                    "country_name": "Thailand",
                    "tournament_id": 8147,
                    "tournament_name": "Thailand. League Cup",
                    "opp_1_name": "ACDC",
                    "opp_2_name": "Pattaya United",
                    "opp_1_id": 505873,
                    "opp_2_id": 4978,
                    "opp_1_icon": "729aadb95ad1df.png",
                    "opp_2_icon": "4978.png",
                    "sport_name": "Football",
                    "sport_id": 1,
                    "score_full": "1:1",
                    "score_extra": "0:0",
                    "score_period": "1:1;0:0",
                    "period_name": "2 Half",
                    "timer": 4451,
                    "pitch": null,
                    "finale": false,
                    "game_oc_list": [
                        {
                            "oc_group_name": "1X2",
                            "oc_name": "W1",
                            "oc_rate": 8.19,
                            "oc_pointer": "562987092|1|1|0",
                            "oc_block": false
                        },
                        {
                            "oc_group_name": "1X2",
                            "oc_name": "X",
                            "oc_rate": 1.82,
                            "oc_pointer": "562987092|1|2|0",
                            "oc_block": false
                        }
                    ]
                }
            ]
        }
    ]
}

特定比赛

获取特定比赛详细信息的方法。该方法允许您请求有关特定比赛的信息,包括球队、结果、比赛当前状态以及可用投注。它用于获取特定比赛的最新数据。

请求示例

Note: 建议以至少 20 秒的间隔发送赔率线 (Line) 请求。实时 (Live) 请求 — 至少 5 秒。该间隔足以获取最新信息。

GET   架构: [API-URL-LINE] /v1/ event / [GAME-ID] / [KG] / [TYPE] / [LANG]

请求: HTTPS://example-domain-demo.com/v1/event/45566556/sub/live/zh

Headers: 'Package': '0145-3455-1298-2978-1100'

响应包含有关一场特定比赛的数据,包括该比赛所有可用结果和赔率的信息。在特定比赛中,您可以获得该比赛的绝对所有结果和赔率。以下是响应对象中返回的关键字段。请注意,根据类型 [KG],返回的数据会有所不同。这些现在会影响投注结果和赔率的分组。

响应仅包含与比赛列表请求不同的那些字段。以下是它们的说明:

  • stat_list 一个包含实时统计数据的数组,例如角球、进攻、红黄牌、危险进攻和其他指标。

  • sub_games 附加投注盘口的标识符列表。例如,您可以仅请求下半场或角球的赔率和结果。

  • game_oc_list 该列表可以包含一个数组中的所有结果和赔率,也可以按类别进行分组,以便更容易地集成到您的系统中。

GET /v1/event/45566556/sub/live/en json
{
    "status": 1,
    "body": {
        "game_oc_list": [
            {
                "group_id": 1,
                "group_name": "1X2",
                "columns": 3,
                "oc_list": [
                    {
                        "oc_group_name": "1X2",
                        "oc_name": "W1",
                        "oc_rate": 1.245,
                        "oc_size": 0,
                        "oc_pointer": "563034215|1|1|0",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "1X2",
                        "oc_name": "X",
                        "oc_rate": 5.48,
                        "oc_size": 0,
                        "oc_pointer": "563034215|1|2|0",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "1X2",
                        "oc_name": "W2",
                        "oc_rate": 7.97,
                        "oc_size": 0,
                        "oc_pointer": "563034215|1|3|0",
                        "oc_block": false
                    }
                ]
            },
            {
                "group_id": 2,
                "group_name": "Handicap",
                "columns": 2,
                "oc_list": [
                    {
                        "oc_group_name": "Handicap",
                        "oc_name": "1 (-1.5)",
                        "oc_rate": 1.904,
                        "oc_size": -1.5,
                        "oc_pointer": "563034215|2|7|-1.5",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "Handicap",
                        "oc_name": "1 (0)",
                        "oc_rate": 1.06,
                        "oc_size": 0,
                        "oc_pointer": "563034215|2|7|0",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "Handicap",
                        "oc_name": "2 (0)",
                        "oc_rate": 6.02,
                        "oc_size": 0,
                        "oc_pointer": "563034215|2|8|0",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "Handicap",
                        "oc_name": "2 (+1.5)",
                        "oc_rate": 1.76,
                        "oc_size": 1.5,
                        "oc_pointer": "563034215|2|8|1.5",
                        "oc_block": false
                    }
                ]
            }
        ],
        "stat_list": [
            {
                "id": 45,
                "name": "Attacks",
                "opp1": "22",
                "opp2": "28"
            },
            {
                "id": 58,
                "name": "Dangerous attacks",
                "opp1": "13",
                "opp2": "25"
            },
            {
                "id": 29,
                "name": "Possession %",
                "opp1": "45",
                "opp2": "55"
            },
            {
                "id": 59,
                "name": "Shots on target",
                "opp1": "3",
                "opp2": "2"
            },
            {
                "id": 60,
                "name": "Shots off target",
                "opp1": "2",
                "opp2": "2"
            },
            {
                "id": 26,
                "name": "Yellow cards",
                "opp1": "0",
                "opp2": "0"
            },
            {
                "id": 70,
                "name": "Corner",
                "opp1": "0",
                "opp2": "3"
            },
            {
                "id": 71,
                "name": "Red card",
                "opp1": "0",
                "opp2": "0"
            },
            {
                "id": 72,
                "name": "Penalty",
                "opp1": "0",
                "opp2": "0"
            }
        ],
        "sub_games": [
            {
                "game_id": 563034216,
                "game_num": 48560,
                "game_name": "1st half"
            },
            {
                "game_id": 563034217,
                "game_num": 48561,
                "game_name": "2nd half"
            },
            {
                "game_id": 563034286,
                "game_num": 42676,
                "game_name": "Result + Total"
            }
        ]
    }
}

热门比赛

发送此请求以获取热门比赛。该请求返回所有体育项目的所有热门比赛的列表。

请求示例

Note: 建议以至少 20 秒的间隔发送赔率线 (Line) 请求。实时 (Live) 请求 — 至少 5 秒。该间隔足以获取最新信息。

GET   架构: [API-URL-LINE] /v1/ topmatches / [TYPE] / [LANG]

请求: HTTPS://example-domain-demo.com/v1/topmatches/live/zh

Headers: 'Package': '0145-3455-1298-2978-1100'