← Back to API docs

GET/api/v1/matches/realtime/live

Get live match data
Realtime data packageactivebetacoreAvailable (scoped)

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

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

Real response with an external key at 09/11/2026, 14:28 UTC: HTTP 200, 17 rows, 153 ms (data cut to 2 rows)

{
  "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 cornersExample: 2
away_gtidintegerPlatform team id of the away teamExample: 2754
away_logostringnullableAway team logo (image address on this platform)
away_otnullnullableAway team extra-time score
away_penintegerAway team penalty shoot-out scoreExample: 0
away_redintegerAway team red cardsExample: 0
away_scoreintegerAway team score (regular time, including stoppage time)Example: 1
away_teamstringAway team name (English)Example: "Al-Nasr Dubai U23"
away_yellowintegerAway team yellow cardsExample: 1
away_zhstringAway team Chinese nameExample: "迪拜胜利U23"
comp_logostringCompetition logo (image address on this platform)
confidencenullnullable
cur_period_startintegernullableStart of the current period (Unix seconds)Example: 1794232886
datanullnullableEvent text
field_srcobject· 13
field_tsnullnullable
gcidintegerPlatform competition idExample: 1465
gmidintegerPlatform match id (gmid, unique across the platform)Example: 4113
half_awayintegerAway team half-time scoreExample: 1
half_homeintegerHome team half-time scoreExample: 0
homenullnullableHome team value
home_cornerintegerHome team cornersExample: 3
home_gtidintegerPlatform team id of the home teamExample: 2753
home_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 scoreExample: 0
home_redintegerHome team red cardsExample: 0
home_scoreintegerHome team score (regular time, including stoppage time)Example: 0
home_teamstringHome team name (English)Example: "Dubai United U23"
home_yellowintegerHome team yellow cardsExample: 5
home_zhstringHome team Chinese nameExample: "迪拜联U23"
idintegerRecord id; paging cursor (the id parameter returns records >= this value). In match endpoints it is the platform match id (gmid)Example: 4113
incidentsnullnullableMatch events; may be absent
inferred_reasonnullnullableReason for the inference
leaguestringCompetition name (English)Example: "UAE U23 League"
league_zhstringCompetition Chinese nameExample: "阿联U23"
mainnullnullableImportant event: 1 yes, 0 no
minutestringMatch minuteExample: "73"
ou_linenullnullableOver/under line
period_initialintegernullableMinute at which the current period startsExample: 2700
player_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 otherExample: "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 codeExample: 4
status_idintegerMatch status code (see the status and type code table)Example: 4
status_inferredbooleanWhether the status is inferredExample: false
status_typestringMatch status: notstarted / inprogress / finished and othersExample: "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: 1794234509642
var_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: 117

Errors

HTTPmessageWhen
401missing API key / unauthorizedNo X-API-Key, or the key is invalid or disabled
429rate limit exceeded / daily quota exceededThe key's per-minute rate or daily quota is exceeded
429server busy, retry laterThe server's concurrency slots are full (only 2 heavy requests at a time); retry after Retry-After seconds
500query errorThe query failed on the server; you may retry