Description
Returns match events, match statistics and text commentary for the last 120 minutes (full update)
ps: matches outside the 120 minutes are returned as well when their data changes
Suggested frequency: once every 2 seconds
Match minute formula
First half: minute = (now - first-half kick-off timestamp) / 60 + 1
Second half: minute = (now - second-half kick-off timestamp) / 60 + 45 + 1
Extra time: minute = (now - extra-time kick-off timestamp) / 60 + 90 + 1
stats: match statistics
Includes: corners, yellow cards, red cards, penalties, shots on target, shots off target, attacks, dangerous attacks, possession, shots blocked
incidents: match events
Includes: yellow card, second yellow card, red card, goal (assist), substitution, penalty, missed penalty, own goal, VAR, half-time, stoppage time, full-time, end of extra time, end of penalty shoot-out, drinks break
tlive: text commentary
Includes: yellow card, red card, goal, substitution, corner, offside, assist, kick-off, half-time, full-time and others
ps: matches outside the 120 minutes are returned as well when their data changes
Suggested frequency: once every 2 seconds
Match minute formula
First half: minute = (now - first-half kick-off timestamp) / 60 + 1
Second half: minute = (now - second-half kick-off timestamp) / 60 + 45 + 1
Extra time: minute = (now - extra-time kick-off timestamp) / 60 + 90 + 1
stats: match statistics
Includes: corners, yellow cards, red cards, penalties, shots on target, shots off target, attacks, dangerous attacks, possession, shots blocked
incidents: match events
Includes: yellow card, second yellow card, red card, goal (assist), substitution, penalty, missed penalty, own goal, VAR, half-time, stoppage time, full-time, end of extra time, end of penalty shoot-out, drinks break
tlive: text commentary
Includes: yellow card, red card, goal, substitution, corner, offside, assist, kick-off, half-time, full-time and others
Access
- Request
GET https://api.sports.csap.ai/api/v1/matches/realtime/live- 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/realtime/live" \ -H "X-API-Key: YOUR_API_KEY"
Try it
Example response
{
"code": 0,
"data": [
{
"add_time": null,
"asian_handicap": null,
"away": null,
"away_corner": 2,
"away_gtid": 2754,
"away_logo": "http://43.99.60.51:8080/logos/6c6aae150f07e809b201d4b85b5510a6dd4fe49b18a01134556f0cfbfdf698ee.png",
"away_ot": null,
"away_pen": 0,
"away_red": 0,
"away_score": 1,
"away_team": "Al-Nasr Dubai U23",
"away_yellow": 1,
"away_zh": "迪拜胜利U23",
"comp_logo": "http://43.99.60.51:8080/logos/3fc65e7b8ba1c7f66833ce29e903d3686a1fc242caa228c4fea886f726f68f27.png",
"confidence": null,
"cur_period_start": 1794232886,
"data": null,
"field_src": {
"away_corner": "S7",
"away_pen": "S5",
"away_red": "S7",
"away_score": "S7",
"away_yellow": "S7",
"half_away": "S7",
"half_home": "S7",
"home_corner": "S7",
"home_pen": "S5",
"home_red": "S7",
"home_score": "S7",
"home_yellow": "S7",
"status": "S3"
},
"field_ts": null,
"gcid": 1465,
"gmid": 4113,
"half_away": 1,
"half_home": 0,
"home": null,
"home_corner": 3,
"home_gtid": 2753,
"home_logo": "http://43.99.60.51:8080/logos/ffaf25c6ed0ba1976cb3dea85342df943ccd5d61bd25f84c05a158b39ff8ebdc.webp",
"home_ot": null,
"home_pen": 0,
"home_red": 0,
"home_score": 0,
"home_team": "Dubai United U23",
"home_yellow": 5,
"home_zh": "迪拜联U23",
"id": 4113,
"incidents": null,
"inferred_reason": null,
"league": "UAE U23 League",
"league_zh": "阿联U23",
"main": null,
"minute": "73",
"ou_line": null,
"period_initial": 2700,
"player_id": null,
"player_name": null,
"position": null,
"reason_type": null,
"region": "cn",
"score": null,
"second": null,
"source": "merged",
"sources": "S5,S9,S3,S2,S7",
"start_ts": "2026-11-09T12:55:00Z",
"stats": null,
"status_code": 4,
"status_id": 4,
"status_inferred": false,
"status_type": "inprogress",
"time": null,
"tlive": null,
"type": null,
"updated_at": 1794234509642,
"var_reason": null,
"var_result": null,
"version": 117
},
{
"add_time": null,
"asian_handicap": null,
"away": null,
"away_corner": 0,
"away_gtid": 3544,
"away_logo": "http://43.99.60.51:8080/logos/2c16d31304410421c146eabbba52fcf46b2c20e8bc5cfb5c9c8a7d58f89d9892.webp",
"away_ot": null,
"away_pen": 0,
"away_red": 0,
"away_score": 0,
"away_team": "Palayesh Naft Bandar Abbas FC",
"away_yellow": 0,
"away_zh": "阿巴斯港石油",
"comp_logo": "http://43.99.60.51:8080/logos/c9b7afcc9db847eb44761dbadee0fd93de78ff6be7a74e0abc0d39a3ba4a2234.png",
"confidence": null,
"cur_period_start": 1794233880,
"data": null,
"field_src": {
"away_corner": "S7",
"away_pen": "S5",
"away_red": "S7",
"away_score": "S7",
"away_yellow": "S7",
"half_away": "S7",
"half_home": "S7",
"home_corner": "S7",
"home_pen": "S5",
"home_red": "S7",
"home_score": "S7",
"home_yellow": "S7",
"status": "S3"
},
"field_ts": null,
"gcid": 1463,
"gmid": 4130,
"half_away": 0,
"half_home": 2,
"home": null,
"home_corner": 0,
"home_gtid": 3543,
"home_logo": "http://43.99.60.51:8080/logos/41dec58589c6edfb9419e8245820f4cdab184b7789ade7f8b6daaecc6545a3a4.webp",
"home_ot": null,
"home_pen": 0,
"home_red": 0,
"home_score": 2,
"home_team": "Pars Jonoubi Jam",
"home_yellow": 0,
"home_zh": "帕尔斯布什尔",
"id": 4130,
"incidents": null,
"inferred_reason": null,
"league": "Azadegan League",
"league_zh": "伊朗甲",
"main": null,
"minute": "56",
"ou_line": null,
"period_initial": 2700,
"player_id": null,
"player_name": null,
"position": null,
"reason_type": null,
"region": "cn",
"score": null,
"second": null,
"source": "merged",
"sources": "S5,S9,S4,S3,S2,S7",
"start_ts": "2026-11-09T13:15:00Z",
"stats": null,
"status_code": 4,
"status_id": 4,
"status_inferred": false,
"status_type": "inprogress",
"time": null,
"tlive": null,
"type": null,
"updated_at": 1794234520222,
"var_reason": null,
"var_result": null,
"version": 90
}
],
"message": "success",
"success": true
}Response fields 65
add_timenullnullableStoppage time (present for stoppage-time events and events during stoppage time)
asian_handicapnullnullableAsian handicap
awaynullnullableAway team value
away_cornerintegerAway team corners
Example: 2away_gtidintegerPlatform team id of the away team
Example: 2754away_logostringnullableAway team logo (image address on this platform)
away_otnullnullableAway team extra-time score
away_penintegerAway team penalty shoot-out score
Example: 0away_redintegerAway team red cards
Example: 0away_scoreintegerAway team score (regular time, including stoppage time)
Example: 1away_teamstringAway team name (English)
Example: "Al-Nasr Dubai U23"away_yellowintegerAway team yellow cards
Example: 1away_zhstringAway team Chinese name
Example: "迪拜胜利U23"comp_logostringCompetition logo (image address on this platform)
confidencenullnullable
cur_period_startintegernullableStart of the current period (Unix seconds)
Example: 1794232886datanullnullableEvent text
field_srcobject· 13
field_tsnullnullable
gcidintegerPlatform competition id
Example: 1465gmidintegerPlatform match id (gmid, unique across the platform)
Example: 4113half_awayintegerAway team half-time score
Example: 1half_homeintegerHome team half-time score
Example: 0homenullnullableHome team value
home_cornerintegerHome team corners
Example: 3home_gtidintegerPlatform team id of the home team
Example: 2753home_logostringnullableHome team logo (image address on this platform; empty when there is none)
home_otnullnullableHome team extra-time score
home_penintegerHome team penalty shoot-out score
Example: 0home_redintegerHome team red cards
Example: 0home_scoreintegerHome team score (regular time, including stoppage time)
Example: 0home_teamstringHome team name (English)
Example: "Dubai United U23"home_yellowintegerHome team yellow cards
Example: 5home_zhstringHome team Chinese name
Example: "迪拜联U23"idintegerRecord id; paging cursor (the id parameter returns records >= this value). In match endpoints it is the platform match id (gmid)
Example: 4113incidentsnullnullableMatch events; may be absent
inferred_reasonnullnullableReason for the inference
leaguestringCompetition name (English)
Example: "UAE U23 League"league_zhstringCompetition Chinese name
Example: "阿联U23"mainnullnullableImportant event: 1 yes, 0 no
minutestringMatch minute
Example: "73"ou_linenullnullableOver/under line
period_initialintegernullableMinute at which the current period starts
Example: 2700player_idnullnullablePlayer id
player_namenullnullablePlayer name
positionnullnullablePosition
reason_typenullnullableReason for a card or substitution, see status codes -> event reasons (present for card and substitution events)
regionstringCoverage scope of the match: cn inside the open coverage / intl other
Example: "cn"scorenullnullableScore
secondnullnullableTime
sourcestringSource code (S1, S2…)
Example: "merged"sourcesstringSource codes of this merged record (comma separated)
Example: "S5,S9,S3,S2,S7"start_tsstringKick-off time (UTC, ISO 8601)
Example: "2026-11-09T12:55:00Z"statsnullnullableStatistic item
status_codeintegerStatus code
Example: 4status_idintegerMatch status code (see the status and type code table)
Example: 4status_inferredbooleanWhether the status is inferred
Example: falsestatus_typestringMatch status: notstarted / inprogress / finished and others
Example: "inprogress"timenullnullableTime / minute
tlivenullnullableText commentary; may be absent
typenullnullableType
updated_atintegerLast update time (UTC, ISO 8601; incremental sync with the time parameter goes by it)
Example: 1794234509642var_reasonnullnullableVAR reason (present for VAR events) · 1 - goal awarded · 2 - goal not awarded · 3 - penalty awarded · 4 - penalty not awarded · 5 - red card given · 6 - card review · 7 - mistaken identity · 8 - corner awarded · 9 - corner not awarded · 0 - other
var_resultnullnullableVAR result (present for VAR events) · 1 - goal stands · 2 - goal disallowed · 3 - penalty stands · 4 - penalty cancelled · 5 - red card stands · 6 - red card cancelled · 7 - card confirmed · 8 - card changed · 9 - original decision stands · 10 - decision changed · 11 - corner stands · 12 - corner cancelled · 0 - unknown
versionintegerVersion number (higher is newer)
Example: 117Errors
| 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 |