CSV Documentation

manifest.json

A management file that contains meta information about the export.
It records the app name, version, export date/time, and a list of match IDs included in the export.

Field Description
app App name
version Version number
exported_at Export date and time
match_ids List of match IDs included in the export.
Match IDs begin with match_. Folders named by match ID are stored in the same directory.

actions.csv

actions.csv is a CSV file that stores each play recorded during a match as a single row. All play information — including serves, receptions, sets, attacks, and more — is recorded in chronological order, making this the most detailed file in the CSV set.

The match flow can be tracked using Set, Rally Number, and Play Number. Additional data includes the player, skill, result, various play attributes, and ball position coordinates (contact point and landing point). This file can be used for analysis, custom aggregations, and integration with external tools.

Input values: [A | B] indicates that either A or B will be entered.

Set

Input valuesInteger

Rally Number

Input valuesInteger

Play Number

Input valuesInteger (sequential play number within the rally)

Team

Input values[A | B]

For team names, refer to team_name_A and team_name_B in match.json.

Skill

Input values[Serve | Reception | Attack | Block | Direct return | Freeball sent | Receive | Dig | Fault]

Result

Input values[ace | A pass | B pass | C pass | D pass | kill | error | conceded]

Skill and Result Relationship

* If the Result does not match any of the values listed below, it will be left blank.

SkillPossible Result values
Serve [ace | error]

For error, Notes will contain either [net] or [out]. For violations such as the 8-second rule or foot faults, Notes will be blank.
If the serve was a no-touch ace, Notes will contain [no-touch].

Reception [A pass | B pass | C pass | D pass | conceded]

For a positional fault, [conceded] will be entered. If the opponent scores a service ace, no Reception record is created.

Attack [kill | error | conceded]

error indicates an attack error. conceded indicates that a point was lost due to an opponent block after the attack. In that case, Notes will contain [Blocked for point].

If the opponent makes a block error immediately after the attack, the result is [kill] and Notes will contain [Opp Block Err].

If the opponent makes a dig error immediately after the attack, the result is [kill] and Notes will contain [Opp Dig Err].

Block [kill | error]
Direct return [kill | error]
Freeball sent [kill | error]
Receive [error]
Dig [error]
Player

Input valuesInteger

Jersey number of the player who performed the play.

Player Rotation Position

Input values[1 | 2 | 3 | 4 | 5 | 6]

The rotation position of the player at the time of the play.

Serve Type

Input values[Underhand Serve | Floater Serve | Jump Floater | Jump Serve | Drive Serve | Other]

Attack Formation

Input values[in-system]

Formation at the time of the attack.

Attack Type

Input values[Open Attack | Fast Set | Pipe | Back-row | A Quick | B Quick | C Quick | D Quick | A Medium | B Medium | C Medium | Slide | Setter Dump]

Attack Strength

Input values[Power Hit | Soft Hit | Push | Tip]

Coordinate System

The coordinate system uses normalized values from 0 to 1 across the entire court (both sides combined). The bottom-left is (0,0) and the top-right is (1,1).
For example, if the total court width is 18m, an X coordinate of 0.5 represents the center.

(0,0)
(1,1)
(0.5,0.5)

To convert to actual court dimensions, multiply the X coordinate by 18 and the Y coordinate by 9 for a standard 6-player volleyball court (18m × 9m).
For example, coordinates (0.5, 0.5) correspond to approximately (9m, 4.5m) on the actual court.

Contact X

Input valuesDecimal

X coordinate of the ball contact position. Normalized to a range of 0–1. If the actual court sideline length is 18m, multiply the value by 18 to get the real-world measurement.

Contact Y

Input valuesDecimal

Y coordinate of the ball contact position. Normalized to a range of 0–1. If the actual court endline length is 9m, multiply the value by 9 to get the real-world measurement.

Landing X

Input valuesDecimal

X coordinate of the ball landing position. Normalized to a range of 0–1. If the actual court sideline length is 18m, multiply the value by 18 to get the real-world measurement.

Landing Y

Input valuesDecimal

Y coordinate of the ball landing position. Normalized to a range of 0–1. If the actual court endline length is 9m, multiply the value by 9 to get the real-world measurement.

Seconds

Input valuesDecimal

Elapsed time in seconds from the start of the match.

Notes

Input values[no-touch | net | out | Opp Block Err | Opp Dig Err | Blocked for point]

lineups.csv

lineups.csv is a CSV file that stores the starting lineup, rotation information, and substitution data for each set.

It records each player's jersey number and name, along with their starting rotation position, position (or serve order), and substitution details. This file can be used to review lineup composition per set, analyze rotation patterns, and verify player usage.

Input values: [A | B] indicates that either A or B will be entered.

Set

Input valuesInteger

Team

Input values[A | B]

For team names, refer to team_name_A and team_name_B in match.json.

Jersey Number

Input valuesInteger

Player Name

Input valuesString

Starting Rotation Position

Input values[1 | 2 | 3 | 4 | 5 | 6]

Position

Input values[Setter | Libero]

Substitute Player

Input valuesInteger (jersey number of the substituting player)

Substitute Player Name

Input valuesString

match.json

match.json is a JSON file that stores basic information about the match itself.
It includes the match ID, date and time, tournament name, team names, and team IDs. It serves as the reference file when used alongside the CSV files. For example, the team identifiers A and B in actions.csv correspond to team_name_A and team_name_B in this file.

Field Description
match_id Match ID
match_time Match date and time as Unix time (milliseconds). Represents the number of milliseconds elapsed since 1970-01-01 00:00:00 UTC.
event_name Tournament / event name
team_name_A Team name (A)
team_id_A Team ID (A)
team_name_B Team name (B)
team_id_B Team ID (B)

players.csv

players.csv is a CSV file that stores the list of players registered for the match.

For each player, it records the team, player name, jersey number, and player ID. Combined with other CSV files, it can be used for player-level analysis and data linking.

Input values: [A | B] indicates that either A or B will be entered.

Team

Input values[A | B]

For team names, refer to team_name_A and team_name_B in match.json.

Player Name

Input valuesString

Jersey Number

Input valuesInteger

Player ID

Input valuesString

rallies.csv

rallies.csv is a CSV file that stores match status on a per-rally basis.

For each rally, it records the serving team, scoring team, and score, as well as the player lineup on court for each team at that point. For matches with rotation tracking enabled, it also includes rotation numbers for both teams. This file can be used for rally analysis, rotation-based trend analysis, and tracking on-court personnel.

Input values: [A | B] indicates that either A or B will be entered.

Set

Input valuesInteger

Rally Number

Input valuesInteger

Serving Team

Input values[A | B]

Scoring Team

Input values[A | B]

Score Team A

Input valuesInteger

Team A's score at the end of the rally.

Score Team B

Input valuesInteger

Team B's score at the end of the rally.

[P1 - P6] Team A Player

Input valuesInteger

The jersey number of the Team A player whose home rotation position corresponds to each rotation slot at the time of the rally.
For example, "P1 Team A Player" contains the jersey number of the Team A player whose home rotation position was Position 1 (serving position) during that rally.

[P1 - P6] Team B Player

Input valuesInteger

The jersey number of the Team B player whose home rotation position corresponds to each rotation slot at the time of the rally.
For example, "P1 Team B Player" contains the jersey number of the Team B player whose home rotation position was Position 1 (serving position) during that rally.

Rotation Team A

Input values[1 | 2 | 3 | 4 | 5 | 6]

Team A's rotation number.

Rotation Team B

Input values[1 | 2 | 3 | 4 | 5 | 6]

Team B's rotation number.

sets.csv

sets.csv is a CSV file that stores basic information about each set.

It records the set number, the serving team at the start of the set (coin toss result), the final score, and the recording method. For matches recorded using a YouTube video, the YouTube video ID is also included.

Input values: [A | B] indicates that either A or B will be entered.

Set

Input valuesInteger

Serving Team

Input values[A | B]

For team names, refer to team_name_A and team_name_B in match.json.

Team A Score

Input valuesInteger

Team B Score

Input valuesInteger

Record Type

Input values[live | youtube | file]

YouTube Video ID

Input valuesString