Skip to content

Goal

A goal: the ball has fully crossed the goal line between the posts and under the crossbar, and the match restarts with a kickoff. Each goal is reported with the team credited with it, the half it fell in, and the ball's position on the pitch, each left empty rather than guessed when it could not be established.

Category: Match event

Properties

Property Type Description Values
confidence_event float32 Event [0,1]. Model confidence for this event class.
period str Match-period span label. full_game is the whole-video extent; first_half/second_half/match are the detected play spans and their envelope. full_game, first_half, second_half, match
team_label int8 Team label, harmonised across the match (0 or 1).

Property Values

period

A set of spans that place the match on the frame timeline, so every other event can be read against periods of play rather than raw frame numbers.

Value Description
full_game A single span covering the whole video, from the first frame to the last.
first_half The first period of play, from its opening restart to the last active play before the break.
second_half The second period of play, from its opening restart to the last active play.
match The regulation envelope from the first-half start to the second-half end, including the half-time break.

Accuracy

Engine output scored against ground truth on held-out evaluation games, metric event_f1@125f (per-event match within ±5.0s), measured 2026-10-20; per-match confidence is the separate confidence_event property.

Ground-truth source Recall Precision F1 GT events
World Cup Broadcast 0.71 1.00 0.83 7
Senior broadcast pool 0.47 0.73 0.57 17
Non-broadcast youth pool 0.70 0.90 0.79 27
Senior tactical-camera pool 0.75 0.83 0.79 20

Querying

Request body for Query Intervals.

{
  "filters": [
    {
      "type": "event_property",
      "event_type": "goal",
      "properties": []
    }
  ]
}

properties constrains the metadata fields listed above. See Event Property Filter.

teams matches a goal by team_label. From engine version 0.5.55 that is the team the goal counts for, own goals included. Before 0.5.55 it is the team in possession when the goal was scored. A goal with a null team_label is excluded when teams is set.

Response

Shape of this event type in the Events endpoint response.

{
  "event_id": "06a0765b-0007-7007-8000-000000000007",
  "start": 617.92,
  "end": 617.92,
  "label": "goal",
  "event_type": "goal",
  "team_id": "team_0",
  "timeline_confidence": null
}

A point event: end equals start. team_id is the team the goal counts for, from team_label. Null when the team is unknown.