GET /matches/{id}/result returns frozen snapshots captured at half-time and full-time for a match. These are permanent records — unlike the live endpoint, they don’t change after the match ends. Calling this endpoint requires the final_scores scope.
Endpoint
What it returns
The response contains two fields, each holding a live snapshot object frozen at the moment it was captured:
The snapshot
status field reflects the moment of capture: "ht" for half-time and "ft" for full-time.
A
404 is returned only when neither snapshot exists — for example, when a match hasn’t finished and no half-time snapshot was captured either. If at least one snapshot is available, you’ll get a 200 response with the other field set to null.Fetch a result
Key fields explained
status — "ht" on the half-time snapshot, "ft" on the full-time snapshot. These are lowercase and distinct from the catalog status values (NOT_STARTED, STARTED, FINISHED).
clock — Shows the time at which the snapshot was frozen. The half-time snapshot has minute: 45, period: "HT", and running: false. The full-time snapshot has minute: 90, period: "FT", and running: false.
score — The final score at that point in the match. The half_time score is the score at the break; the full_time score is the final result.
events — The event timeline is only present in full_time. The half_time object omits it to avoid duplication. Iterate full_time.events to get the complete match incident log: goals, cards, corners, substitutions, penalty-shootout kicks, and more. Each entry has a minute, type, team, label, and optionally a score string showing the scoreline at that moment. For matches decided by a penalty shootout, shootout events (with an empty minute and a detail of "scored" or "missed") are appended after all timed events, and full_time.score.shootout carries the per-side kick tally that determines the winner.