Skip to content
intermediatevideo

SoccerNet Action Spotting: The 17 Soccer Action Classes

SoccerNet-v2 defines 17 action spotting classes (goal, corner, card, foul, substitution, and more) with 110,458 labeled events across 500 broadcast games. Full class list, dataset and paper links, and a Potato config to reproduce the task.

About this dataset

SoccerNet is the standard benchmark for action spotting in broadcast soccer video: locating the exact moment an event happens inside long, untrimmed match footage. It was introduced by Giancola et al. (CVPR 2018 workshops) and substantially expanded by Deliege et al. in SoccerNet-v2 (2021).

SoccerNet-v2 defines 17 action classes and provides 110,458 manually spotted actions across 500 complete broadcast games (764 hours) from six major European leagues, with each timestamp annotated to one-frame precision.

The 17 action spotting classes are: Goal, Penalty, Shots on target, Shots off target, Yellow card, Red card, Yellow-to-red card, Corner, Direct free-kick, Indirect free-kick, Throw-in, Kick-off, Offside, Foul, Substitution, Clearance, and Ball out of play.

The Potato config below reproduces the action spotting task with keyframe-mode video annotation: an annotator scrubs to the exact frame of an event and tags it with a one-key shortcut. All 17 classes are pre-configured, so you can replicate SoccerNet labeling or adapt the scheme to another sport.

Action classes
17
Annotations
110,458 spotted actions
Games
500 broadcast matches
Video
764 hours, 6 European leagues
Precision
One-frame timestamps
Papers
Giancola et al. 2018; Deliege et al. 2021 (v2)
Frame 847 / 3200Running01:12 - 01:28Segments:WalkRunStandActionWalkRunStandWalkSceneOutdoorIndoorDrag to create and label temporal segments

Configuration Fileconfig.yaml

This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.

yaml
# SoccerNet Action Spotting Configuration
# Based on Giancola et al., CVPR 2018
# Task: Identify and timestamp key soccer match events

annotation_task_name: "SoccerNet Action Spotting"
task_dir: "."

# Data configuration
data_files:
  - sample-data.json
item_properties:
  id_key: "id"
  text_key: "video_url"

# Output
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"

# Annotation schemes
annotation_schemes:
  - name: "soccer_events"
    description: |
      Mark key events in the soccer match. Click at the exact moment each event occurs.
      Use keyboard shortcuts for faster annotation. These are the 17 action classes
      defined by SoccerNet-v2 (Deliège et al., 2021).
    annotation_type: "video_annotation"
    mode: "keyframe"
    labels:
      # Scoring & shots
      - name: "Goal"
        color: "#22C55E"
        key_value: "g"
      - name: "Penalty"
        color: "#EAB308"
        key_value: "p"
      - name: "Shots on target"
        color: "#16A34A"
        key_value: "s"
      - name: "Shots off target"
        color: "#84CC16"
        key_value: "h"

      # Cards
      - name: "Yellow card"
        color: "#FACC15"
        key_value: "y"
      - name: "Red card"
        color: "#EF4444"
        key_value: "r"
      - name: "Yellow->red card"
        color: "#F97316"
        key_value: "2"

      # Set pieces & restarts
      - name: "Corner"
        color: "#06B6D4"
        key_value: "c"
      - name: "Direct free-kick"
        color: "#14B8A6"
        key_value: "d"
      - name: "Indirect free-kick"
        color: "#2DD4BF"
        key_value: "i"
      - name: "Throw-in"
        color: "#0EA5E9"
        key_value: "t"
      - name: "Kick-off"
        color: "#8B5CF6"
        key_value: "k"
      - name: "Offside"
        color: "#6366F1"
        key_value: "o"

      # Game flow
      - name: "Foul"
        color: "#EC4899"
        key_value: "f"
      - name: "Substitution"
        color: "#3B82F6"
        key_value: "u"
      - name: "Clearance"
        color: "#A855F7"
        key_value: "l"
      - name: "Ball out of play"
        color: "#94A3B8"
        key_value: "b"

    frame_stepping: true
    show_timecode: true
    playback_rate_control: true
    zoom_enabled: true
    video_fps: 25

# User configuration
allow_all_users: true

# Task assignment
instances_per_annotator: 20
annotation_per_instance: 2

# Instructions
annotation_instructions: |
  ## Soccer Action Spotting Task

  Your goal is to identify and timestamp the 17 SoccerNet-v2 action classes in
  soccer match footage.

  ### The 17 Action Classes:

  **Scoring & shots:**
  - **Goal (g)**: The ball fully crosses the goal line
  - **Penalty (p)**: A penalty kick is taken
  - **Shots on target (s)**: A shot that would enter the goal if not saved/blocked
  - **Shots off target (h)**: A shot that misses the goal

  **Cards:**
  - **Yellow card (y)**: Referee shows a yellow card
  - **Red card (r)**: Referee shows a straight red card
  - **Yellow->red card (2)**: A second yellow resulting in a red

  **Set pieces & restarts:**
  - **Corner (c)**: A corner kick is taken
  - **Direct free-kick (d)**: A direct free-kick is taken
  - **Indirect free-kick (i)**: An indirect free-kick is taken
  - **Throw-in (t)**: A throw-in is taken
  - **Kick-off (k)**: Play starts or restarts from the center
  - **Offside (o)**: Offside is called

  **Game flow:**
  - **Foul (f)**: Referee calls a foul
  - **Substitution (u)**: A player substitution is made
  - **Clearance (l)**: A defensive clearance
  - **Ball out of play (b)**: The ball leaves the field of play

  ### Instructions:
  1. Watch the video carefully
  2. When you see an event, pause at the exact moment it occurs
  3. Press the keyboard shortcut or click the label to mark the event
  4. The timestamp will be recorded automatically

  ### Tips:
  - Use frame stepping (< >) for precise timing
  - Mark events at the moment they START (e.g., when card is shown, not raised)
  - Use playback speed control to slow down fast action
  - You can zoom the timeline for precision

Sample Datasample-data.json

json
[
  {
    "id": "match_001_half1",
    "video_url": "https://example.com/videos/match001_half1.mp4",
    "match_id": "match_001",
    "half": 1,
    "home_team": "Team A",
    "away_team": "Team B",
    "competition": "League Cup",
    "date": "2024-10-15",
    "duration_seconds": 2700,
    "description": "First half of League Cup match between Team A and Team B"
  },
  {
    "id": "match_001_half2",
    "video_url": "https://example.com/videos/match001_half2.mp4",
    "match_id": "match_001",
    "half": 2,
    "home_team": "Team A",
    "away_team": "Team B",
    "competition": "League Cup",
    "date": "2024-10-15",
    "duration_seconds": 2850,
    "description": "Second half of League Cup match between Team A and Team B"
  }
]

// ... and 2 more items

Get This Design

View on GitHub

Clone or download from the repository

Quick start:

git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/video/action-recognition/soccernet-action-spotting
potato start config.yaml

Dataset & paper

Giancola et al., CVPR 2018; Deliege et al. 2021 (SoccerNet-v2)

Citation (BibTeX)

bibtex
@inproceedings{giancola2018soccernet,
  title={SoccerNet: A Scalable Dataset for Action Spotting in Soccer Videos},
  author={Giancola, Silvio and Amine, Mohieddine and Dghaily, Tarek and Ghanem, Bernard},
  booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops},
  pages={1711--1721},
  year={2018}
}

Details

Annotation Types

video_annotation

Domain

Computer VisionSports Analytics

Use Cases

Action SpottingEvent DetectionSports Video Analysis

Tags

videosoccersportsaction-spottingeventssoccernet

Found an issue or want to improve this design?

Open an Issue