Rocket League Stats API

This document outlines capabilities of the Rocket League Game Data API. First, players must ask the game to enable this feature by editing their DefaultStatsAPI.ini, explained below. Once active, this feature will open a web socket on the player's machine that emits gameplay data and events. Third party programs can ingest this data to power a variety of applications, such as custom broadcaster HUDs.

Overview

The Stats API broadcasts JSON messages over a local socket while a match is in progress. Messages are sent both at a configurable periodic rate and when specific match events occur. Event data is always emitted on the same tick that the event occurs, regardless of the user's PacketSendRate.
Note: All configuration must be done before the client starts — changes to the ini while the client is running require a restart.
Field visibility:
  • Fields marked CONDITIONAL are only present when relevant.
  • Fields marked SPECTATOR are only present if the client is spectating or on the player's team.

Configuration

Edit <Install Dir>\TAGame\Config\DefaultStatsAPI.ini before launching the client.
SettingTypeDefaultDescription
PacketSendRatefloat0 (disabled)Number of UpdateState packets broadcast per second. Must be > 0 to enable the websocket. Capped at 120.
Portint49123Local port the socket listens on.

Message Format

Every message follows this envelope structure:
{
  "Event": "EventName",
  "Data":  { /* event-specific payload */ }
}

Tick

Sent X amount of times per second based on the player's PacketSendRate preference.

Example

{
  "Event": "UpdateState",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "Players": [
      {
        "Name": "PlayerA",
        "PrimaryId": "Steam|123|0",
        "Shortcut": 1,
        "TeamNum": 0,
        "Score": 125,
        "Goals": 1,
        "Shots": 2,
        "Assists": 0,
        "Saves": 1,
        "Touches": 14,
        "CarTouches": 3,
        "Demos": 0,
        "bHasCar": true,
        "Speed": 1200,
        "Boost": 45,
        "bBoosting": true,
        "bOnGround": true,
        "bOnWall": false,
        "bPowersliding": false,
        "bDemolished": true,
        "Attacker": {
          "Name": "PlayerB",
          "Shortcut": 2,
          "TeamNum": 1
        },
        "bSupersonic": true
      }
    ],
    "Game": {
      "Teams": [
        {
          "Name": "Blue",
          "TeamNum": 0,
          "Score": 1,
          "ColorPrimary": "0000FF",
          "ColorSecondary": "0000AA"
        }
      ],
      "TimeSeconds": 180,
      "bOvertime": false,
      "Frame": 120,
      "Elapsed": 50.2,
      "Ball": {
        "Speed": 850.5,
        "TeamNum": 0
      },
      "bReplay": false,
      "bHasWinner": true,
      "Winner": "Blue",
      "Arena": "Stadium_P",
      "bHasTarget": true,
      "Target": {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      }
    }
  }
}
FieldTypeDescription
PlayersarrayOne entry per player in the match.
NamestringDisplay name.
PrimaryIdstringPlatform identifier in the format Platform|Uid|Splitscreen (e.g. "Steam|123|0", "Epic|456|0").
ShortcutintSpectator shortcut number.
TeamNumintTeam index (0 = Blue, 1 = Orange).
ScoreintTotal match score.
GoalsintGoals scored this match.
ShotsintShot attempts this match.
AssistsintAssists earned this match.
SavesintSaves made this match.
TouchesintTotal ball touches.
CarTouchesintTouches by the car body (not ball).
DemosintDemolitions inflicted.
bHasCarboolSPECTATORTrue if the player currently has a vehicle.
SpeedfloatSPECTATORVehicle speed in Unreal Units/second.
BoostintSPECTATORBoost amount 0–100.
bBoostingboolSPECTATORTrue if the player is currently boosting.
bOnGroundboolSPECTATORTrue if at least 3 wheels are touching the world.
bOnWallboolSPECTATORTrue if the vehicle is on a wall.
bPowerslidingboolSPECTATORTrue if the player is holding handbrake.
bDemolishedboolSPECTATORTrue if the vehicle is currently destroyed.
bSupersonicboolSPECTATORTrue if the vehicle is at supersonic speed.
AttackerobjectCONDITIONALThe player who demolished this player. Present only when demolished.
NamestringName of the player who demolished this player.
ShortcutintSpectator shortcut of the attacker.
TeamNumintTeam index of the attacker.
GameobjectMatch metadata.
TeamsarrayOne entry per team, ordered by TeamNum.
NamestringTeam name.
TeamNumintTeam index.
ScoreintTeam goal count.
ColorPrimarystringHex color code (no #) for the team’s primary color.
ColorSecondarystringHex color code for the team’s secondary color.
TimeSecondsintSeconds remaining in the match.
bOvertimeboolTrue if the match is in overtime.
BallobjectCurrent ball state.
SpeedfloatCurrent ball speed in Unreal Units/second.
TeamNumintIndex of the last team to touch the ball. 255 if the ball has not been touched.
bReplayboolTrue if a goal replay or history replay is active.
bHasWinnerboolTrue if a team has won.
WinnerstringName of the winning team. Empty string if no winner yet.
ArenastringAsset name of the current map (e.g. "Stadium_P").
bHasTargetboolTrue if the client is currently viewing a specific vehicle.
TargetobjectCONDITIONALPlayer currently being viewed. Members are an empty string or 0 if the player does not have a spectator target.
NamestringName of the player being viewed.
ShortcutintSpectator shortcut of the viewed player.
TeamNumintTeam index of the viewed player.
FrameintCONDITIONALCurrent frame number if a replay is active.
ElapsedfloatCONDITIONALSeconds elapsed since game start if a replay is active.

Events

Sent one frame after the ball is hit.

Example

{
  "Event": "BallHit",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "Players": [
      {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      }
    ],
    "Ball": {
      "PreHitSpeed": 0,
      "PostHitSpeed": 1450.2,
      "Location": {
        "X": -512,
        "Y": 100,
        "Z": 200
      }
    }
  }
}
FieldTypeDescription
PlayersarrayPlayers that hit the ball that frame.
NamestringDisplay name.
ShortcutintSpectator shortcut.
TeamNumintTeam index (0 = Blue, 1 = Orange).
BallobjectBall state at the moment of the hit.
PreHitSpeedfloatBall speed before the hit (Unreal Units/second).
PostHitSpeedfloatBall speed after the hit (Unreal Units/second).
LocationvectorWorld position (X, Y, Z) of the ball at impact.
MatchGuidstringOnly set for online or LAN matches.

Sent when the in-game clock has changed.

Example

{
  "Event": "ClockUpdatedSeconds",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "TimeSeconds": 180,
    "bOvertime": false
  }
}
FieldTypeDescription
TimeSecondsintSeconds remaining in the match.
bOvertimeboolTrue if the game is in overtime.
MatchGuidstringOnly set for online or LAN matches.

Sent at the start of each round when the countdown starts.

Example

{
  "Event": "CountdownBegin",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when the ball hits a crossbar.

Example

{
  "Event": "CrossbarHit",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "BallLocation": {
      "X": 120,
      "Y": -2944,
      "Z": 320
    },
    "BallSpeed": 870.3,
    "ImpactForce": 127.5,
    "BallLastTouch": {
      "Player": {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      },
      "Speed": 120
    }
  }
}
FieldTypeDescription
BallSpeedfloatBall speed on impact.
ImpactForcefloatImpact force of the ball relative to the crossbar normal.
BallLastTouchobjectThe last touch of the ball before the crossbar hit.
PlayerobjectThe player who made the last touch.
NamestringDisplay name.
ShortcutintSpectator shortcut.
TeamNumintTeam index (0 = Blue, 1 = Orange).
SpeedfloatSpeed of the ball resulting from this hit.
BallLocationvectorWorld position (X, Y, Z) of the ball when the impact occurred.
MatchGuidstringOnly set for online or LAN matches.

Sent when a goal replay ends.

Example

{
  "Event": "GoalReplayEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when a goal replay starts.

Example

{
  "Event": "GoalReplayStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when the ball explodes during a goal replay. If the replay is skipped this event will not fire.

Example

{
  "Event": "GoalReplayWillEnd",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when a goal is scored.

Example

{
  "Event": "GoalScored",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "GoalSpeed": 87.3,
    "GoalTime": 127.5,
    "ImpactLocation": {
      "X": 0,
      "Y": -2944,
      "Z": 320
    },
    "Scorer": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "Assister": {
      "Name": "PlayerC",
      "Shortcut": 3,
      "TeamNum": 0
    },
    "BallLastTouch": {
      "Player": {
        "Name": "PlayerA",
        "Shortcut": 1,
        "TeamNum": 0
      },
      "Speed": 125
    }
  }
}
FieldTypeDescription
GoalSpeedfloatSpeed of the ball (Unreal Units/second) when it crossed the goal line.
GoalTimefloatLength of the previous round in seconds.
ImpactLocationvectorWorld position (X, Y, Z) of the ball when the goal was scored.
ScorerobjectThe player who scored the goal.
NamestringDisplay name of the scorer.
ShortcutintSpectator shortcut.
TeamNumintTeam index of the scorer.
BallLastTouchobjectThe last touch of the ball before the goal.
PlayerobjectThe player who made the last touch.
NamestringName of the player who last touched the ball.
ShortcutintSpectator shortcut.
TeamNumintTeam index.
SpeedfloatSpeed of the ball resulting from this touch.
AssisterobjectCONDITIONALSame shape as Scorer. Present only when an assist was recorded.
MatchGuidstringOnly set for online or LAN matches.

Sent when all teams are created and replicated.

Example

{
  "Event": "MatchCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when the first countdown starts.

Example

{
  "Event": "MatchInitialized",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when leaving the game.

Example

{
  "Event": "MatchDestroyed",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when the match ends and a winner is chosen.

Example

{
  "Event": "MatchEnded",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "WinnerTeamNum": 0
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.
WinnerTeamNumintTeam index of the winning team.

Sent when the game is paused by a match admin.

Example

{
  "Event": "MatchPaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when the game is unpaused by a match admin.

Example

{
  "Event": "MatchUnpaused",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when the game enters the podium state after the match ends.

Example

{
  "Event": "PodiumStart",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when a replay is initialized. Does not pertain to goal replays, only replays you load via the Match History menu.

Example

{
  "Event": "ReplayCreated",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when the game enters the active state (after the countdown finishes).

Example

{
  "Event": "RoundStarted",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"
  }
}
FieldTypeDescription
MatchGuidstringOnly set for online or LAN matches.

Sent when someone earns a stat.

Example

{
  "Event": "StatfeedEvent",
  "Data": {
    "MatchGuid": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6",
    "EventName": "Demolish",
    "Type": "Demolition",
    "MainTarget": {
      "Name": "PlayerA",
      "Shortcut": 1,
      "TeamNum": 0
    },
    "SecondaryTarget": {
      "Name": "PlayerB",
      "Shortcut": 2,
      "TeamNum": 1
    }
  }
}
FieldTypeDescription
EventNamestringAsset name of the StatEvent (e.g. "Demolish", "Save").
TypestringLocalized display label for the stat (e.g. "Demolition").
MainTargetobjectPlayer who earned the stat.
NamestringDisplay name.
ShortcutintSpectator shortcut.
TeamNumintTeam index (0 = Blue, 1 = Orange).
MatchGuidstringOnly set for online or LAN matches.
SecondaryTargetobjectCONDITIONALPlayer involved in the stat (e.g. the demolished player). Same shape as MainTarget.