Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Rocket League Stats HTTP API Server

This is a locally runnable Python HTTP API server which will authenticate with Epic Games APIs and Psyonix's PsyNet API to retrieve stats for players based on their platform ID. It uses https://github.com/Jackenmen/rlapi under the hood for the PsyNet API communication.

This must be run using a separate/second Epic Games account to the one that you play Rocket League on, because it will log you out of Rocket League if you use the same account.

This is useful when used in conjunction with the https://github.com/HiDefCode/InGameRank overlay.

Warning

This is not officially supported by Epic Games and Psyonix and could result in your alt account and/or main account getting banned for abusing the API. Use with caution. I am not liable for any ban you may receive for using this.

Important

This should not be used in commercial projects but is free and unlimited for personal use. I have attached the relevant LICENSE to this project accordingly.

Installation

Just run:

pip install -r requirements.txt

Followed by

python RLStatsAPI.py

On first run, it will ask you to login to Epic Games and then provide back an authorization code. Login on an alt account. If you are already logged in to your main account on the Epic Games website, you can copy and paste the URL into an incognito tab and login to your second account that way.

You can also optionally specify a port and/or Epic account credential file:

python RLStatsAPI.py -p 9280 -f .epicenv

API Usage

You can query the API by sending an HTTP POST request to the /stats endpoint containing JSON in the following format:

POST /stats HTTP/1.1Host: <ip>:<port>Content-Length: <length>
{"id": "<platform-id>"}

For example, we can get Kaydop's stats:

POST /stats HTTP/1.1Host: 127.0.0.1:9280Content-Length: 35
{"id": "Steam|76561198067659334|0"}

The output of this (as of 3 July 2026) is:

HTTP/1.0 200 OKServer: BaseHTTP/0.6 Python/3.12.4Content-Type: application/jsonContent-Length: 2523Connection: close
{
"Skills": [
{
"Playlist": 10,
"Mu": 59.4857,
"Sigma": 2.5,
"Tier": 21,
"Division": 0,
"MMR": 59.4857,
"WinStreak": -2,
"MatchesPlayed": 187,
"PlacementMatchesPlayed": 10
},
{
"Playlist": 11,
"Mu": 92.3694,
"Sigma": 2.5,
"Tier": 22,
"Division": 0,
"MMR": 92.3694,
"WinStreak": -1,
"MatchesPlayed": 138,
"PlacementMatchesPlayed": 10
},
{
"Playlist": 12,
"Mu": 55.0097,
"Sigma": 3.41658,
"Tier": 17,
"Division": 0,
"MMR": 55.0097,
"WinStreak": 1,
"MatchesPlayed": 0,
"PlacementMatchesPlayed": 0
},
{
"Playlist": 13,
"Mu": 62.3152,
"Sigma": 6.36432,
"Tier": 18,
"Division": 1,
"MMR": 62.3152,
"WinStreak": 4,
"MatchesPlayed": 0,
"PlacementMatchesPlayed": 0
},
{
"Playlist": 27,
"Mu": 46.0055,
"Sigma": 3.5,
"Tier": 17,
"Division": 3,
"MMR": 46.0055,
"WinStreak": 3,
"MatchesPlayed": 0,
"PlacementMatchesPlayed": 0
},
{
"Playlist": 28,
"Mu": 42.3262,
"Sigma": 7.52953,
"Tier": 15,
"Division": 1,
"MMR": 42.3262,
"WinStreak": -7,
"MatchesPlayed": 0,
"PlacementMatchesPlayed": 0
},
{
"Playlist": 29,
"Mu": 33.0977,
"Sigma": 3.5,
"Tier": 13,
"Division": 1,
"MMR": 33.0977,
"WinStreak": 5,
"MatchesPlayed": 0,
"PlacementMatchesPlayed": 0
},
{
"Playlist": 30,
"Mu": 32.8908,
"Sigma": 3.5,
"Tier": 12,
"Division": 2,
"MMR": 32.8908,
"WinStreak": 1,
"MatchesPlayed": 0,
"PlacementMatchesPlayed": 0
},
{
"Playlist": 61,
"Mu": 53,
"Sigma": 5.45025,
"Tier": 20,
"Division": 1,
"MMR": 53,
"WinStreak": 1,
"MatchesPlayed": 0,
"PlacementMatchesPlayed": 0
},
{
"Playlist": 63,
"Mu": 41.5835,
"Sigma": 4.35452,
"Tier": 15,
"Division": 2,
"MMR": 41.5835,
"WinStreak": 2,
"MatchesPlayed": 0,
"PlacementMatchesPlayed": 0
},
{
"Playlist": 0,
"Mu": 50.9026,
"Sigma": 3.49655,
"Tier": 0,
"Division": 0,
"MMR": 50.9412,
"WinStreak": -1,
"MatchesPlayed": 2,
"PlacementMatchesPlayed": 2
}
],
"RewardLevels": {
"SeasonLevel": 8,
"SeasonLevelWins": 0
}
}

Troubleshooting

Version Mismatch

The most common problem you may run into is a "Version Mismatch" error. This happens when we try to use an old or incorrect version ID of the game when communicating with the PsyNet API.

We try to retrieve the version which matches your current Rocket League version via the RL log file located here:

%USERPROFILE%\\Documents\\My Games\\Rocket League\\TAGame\\Logs\\Launch.log

However, the location of this log file may vary so you may need to change this path in the script. Additionally, you may have logging turned off via a command-line option. If so, turn logging back on for this to work.

If we cannot retrieve the version from the log file, we instead try to retrieve it from the following GitHub repo:

https://raw.githubusercontent.com/smallest-cock/RLSDK/refs/heads/main/RLSDK/GameDefines.cpp

But this is not always kept fully up to date as soon as updates are released, so can often lag behind the latest version.

About

A local server for querying the Rocket League PsyNet API for player stats

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages