Description
Returns odds that changed in real time; matches without an odds change are not returned
Only changes of the last 60 seconds are returned; keep the changes on your side
Range: opening line, pre-match line, in-play line
The first line of each market from each bookmaker is the opening line; from the opening line to kick-off it is the pre-match line; after kick-off it is the in-play line
Suggested frequency: once every 3 seconds
Only changes of the last 60 seconds are returned; keep the changes on your side
Range: opening line, pre-match line, in-play line
The first line of each market from each bookmaker is the opening line; from the opening line to kick-off it is the pre-match line; after kick-off it is the in-play line
Suggested frequency: once every 3 seconds
Access
- Request
GET https://api.sports.csap.ai/api/v1/matches/odds- Auth
- Header X-API-Key: <your key> (Authorization: Bearer <key> also works; ?key= is still accepted but discouraged, because the key ends up in URLs and logs)
- External keys
- Available (scoped)External keys can call it, but only data inside the open scope is returned.
- Rate limits
- 3000 per minute · 200000 per day · Set per key (rate_per_min and quota_daily returned by /api/v1/account are authoritative; the numbers above are a trial key's). Beyond them the answer is 429. In addition, heavy requests such as whole-table snapshots and statistics lists without a match id are processed 2 at a time for the whole platform; a request that cannot get a slot receives 429 with Retry-After. Responses do not carry X-RateLimit-* headers for now. See the general guide
Request parameters 0
This endpoint takes no request parameters.
Example request
curl "https://api.sports.csap.ai/api/v1/matches/odds" \ -H "X-API-Key: YOUR_API_KEY"
Try it
Example response
{
"code": 0,
"data": [
{
"ah_away": 1.87,
"ah_home": 0.49,
"ah_line": 0,
"corner_line": 9.5,
"corner_over": 3.68,
"corner_under": 1.34,
"eu_away": null,
"eu_draw": null,
"eu_home": null,
"match_source": "S5",
"open_ah_line": null,
"open_ou_line": null,
"ou_line": 2.5,
"ou_over": 0.6,
"ou_under": 1.15,
"updated_at": 1793706857190,
"version": 42,
"公司id": null
},
{
"ah_away": 0.84,
"ah_home": 1.1,
"ah_line": 0.75,
"corner_line": null,
"corner_over": null,
"corner_under": null,
"eu_away": null,
"eu_draw": null,
"eu_home": null,
"match_source": "S5",
"open_ah_line": null,
"open_ou_line": null,
"ou_line": 6,
"ou_over": 1.1,
"ou_under": 0.84,
"updated_at": 1793707705366,
"version": 153,
"公司id": null
}
],
"message": "success",
"success": true
}Response fields 19
ah_awaynumberAsian handicap, away price
Example: 1.87ah_homenumberAsian handicap, home price
Example: 0.49ah_lineintegerAsian handicap line
Example: 0corner_linenumbernullableCorners line
Example: 9.5corner_overnumbernullableCorners over price
Example: 3.68corner_undernumbernullableCorners under price
Example: 1.34eu_awaynullnullable1X2 away win
eu_drawnullnullable1X2 draw
eu_homenullnullable1X2 home win
match_sourcestringSource code of this row
Example: "S5"gmidintegernullablePlatform match id (gmid, unique across the platform)
open_ah_linenullnullableOpening Asian handicap line
open_ou_linenullnullableOpening over/under line
ou_linenumbernullableOver/under line
Example: 2.5ou_overnumbernullableOver price
Example: 0.6ou_undernumbernullableUnder price
Example: 1.15updated_atintegerLast update time (UTC, ISO 8601; incremental sync with the time parameter goes by it)
Example: 1793706857190versionintegerVersion number (higher is newer)
Example: 42公司idnullnullableBookmaker id, see status codes -> bookmaker ids
Errors
| HTTP | message | When |
|---|---|---|
| 401 | missing API key / unauthorized | No X-API-Key, or the key is invalid or disabled |
| 429 | rate limit exceeded / daily quota exceeded | The key's per-minute rate or daily quota is exceeded |
| 429 | server busy, retry later | The server's concurrency slots are full (only 2 heavy requests at a time); retry after Retry-After seconds |
| 500 | query error | The query failed on the server; you may retry |