Tracker APIrocketleague.tracker.gg ↗
Retrieve Rocket League player stats, competitive MMR, tier, and lifetime totals for any Epic, Steam, Xbox, or PSN account via the Tracker Network.
What is the Tracker API?
The Rocket League Tracker API exposes a single endpoint, get_player_stats, that returns over 15 structured fields covering a player's lifetime stats and current-season competitive ranks across all major playlists. One call resolves an Epic, Steam, Xbox, or PSN account and returns MMR, tier, division, rank percentile, lifetime goals, saves, assists, MVPs, and all-time peak ratings per playlist.
curl -X GET 'https://api.parse.bot/scraper/4d355362-b485-4623-9761-e29ce30590b7/get_player_stats?platform=epic&player_id=t%C3%A9rhajl%C3%ADt%C3%B3pocok' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace rocketleague-tracker-gg-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: look up a Rocket League player's stats and competitive ranks."""
from parse_apis.rocketleague_tracker_gg_api import (
RocketLeagueTracker, Platform, PlayerNotFound,
)
client = RocketLeagueTracker()
# Fetch a player profile by Epic display name.
try:
player = client.players.get(player_id="térhajlítópocok", platform=Platform.EPIC)
except PlayerNotFound:
print("Player not found on this platform.")
raise
# Lifetime totals
lt = player.lifetime
print(f"{player.player_handle} — {lt.wins} wins, {lt.goals} goals, {lt.saves} saves")
# Current-season ranked playlists (1v1, 2v2, 3v3 when present)
if player.ranked_2v2 is not None:
r2 = player.ranked_2v2
print(f"2v2: {r2.tier_name} {r2.division_name} — {r2.rating} MMR")
if player.ranked_3v3 is not None:
r3 = player.ranked_3v3
print(f"3v3: {r3.tier_name} {r3.division_name} — {r3.rating} MMR")
# All playlists the player has touched this season
for pl in player.playlists:
print(f" {pl.playlist_name}: {pl.rating} MMR ({pl.tier_name})")
# Peak ratings across all seasons
for peak in player.peak_ratings:
print(f" Peak {peak.playlist_name}: {peak.peak_rating} ({peak.season_label})")
# Per-game averages for playlists with match data
for avg in player.playlist_averages:
print(f" {avg.playlist_name}: {avg.avg_goals_per_game:.2f} goals/game, "
f"{avg.shot_accuracy_pct:.1f}% accuracy over {avg.matches} matches")
print("exercised: players.get / lifetime / ranked playlists / peak_ratings / playlist_averages")
Returns one player's full Rocket League profile in a single call: lifetime totals (wins, goals, saves, assists, shots, MVPs, TRN score, season reward level), the current-season competitive rank and MMR (rating) for Ranked Duel 1v1, Ranked Doubles 2v2 and Ranked Standard 3v3 surfaced as ranked_1v1 / ranked_2v2 / ranked_3v3, the same record for every playlist the site reports (extra modes, tournaments, casual) in playlists, all-time peak ratings per playlist in peak_ratings, and per-game averages for playlists the site has match data for in playlist_averages. The player is identified by the platform account identifier the site itself uses (Epic display name, Steam64 ID, Xbox gamertag, PSN ID, or Switch name). A nullable field means the site did not report that value for the player; ranked_1v1/2v2/3v3 are null when the player has no record for that playlist. An identifier the site cannot find yields a not-found input error. The call costs two upstream requests and is not paginated.
| Param | Type | Description |
|---|---|---|
| platform | string | Account platform the identifier belongs to. |
| player_idrequired | string | Platform account identifier as the site uses it: Epic display name, Steam64 ID, Xbox gamertag, PSN online ID or Nintendo Switch name. Non-ASCII names are accepted as-is. |
{
"type": "object",
"fields": {
"lifetime": "object of lifetime totals: wins, goals, mvps, saves, assists, shots, goal_shot_ratio (percent), season_reward_level, season_reward_rank_name, season_reward_wins, trn_score",
"platform": "platform slug the profile was resolved on",
"player_id": "platform account identifier as resolved by the site",
"playlists": "array of current-season playlist records: playlist_id, playlist_name, season, rating (MMR), rating_percentile (nullable), tier (integer index) and tier_name (e.g. Champion I), division (0-3 index) and division_name, division_delta_up/down (MMR to next/previous division, nullable), matches_played, win_streak with win_streak_type (win|loss), peak_rating and peak_tier_name (nullable), rank_icon_url",
"ranked_1v1": "current-season playlist record for Ranked Duel 1v1 (same shape as playlists[]), null when absent",
"ranked_2v2": "current-season playlist record for Ranked Doubles 2v2, null when absent",
"ranked_3v3": "current-season playlist record for Ranked Standard 3v3, null when absent",
"country_code": "ISO country code of the player, may be null",
"last_updated": "ISO timestamp of the last profile refresh",
"peak_ratings": "array of all-time peak MMR per playlist: playlist_id, playlist_name, season, season_label, peak_rating, tier_name, division_name",
"player_handle": "display handle shown on the profile",
"current_season": "integer, the site's current competitive season number",
"platform_user_id": "site-reported platform account UUID/ID, may be null",
"playlist_averages": "array of per-game averages per playlist with match data: playlist_id, playlist_name, matches, rating, avg_goals_per_game, avg_shots_per_game, avg_saves_per_game, avg_assists_per_game, avg_mvps_per_game, shot_accuracy_pct, goals_per_save, assists_per_goal"
},
"sample": {
"data": {
"xp_tier": 1,
"lifetime": {
"mvps": 1146,
"wins": 2391,
"goals": 7138,
"saves": 4143,
"shots": 13932,
"assists": 2155,
"trn_score": 871918.239009009,
"goal_shot_ratio": 51.23456790123457,
"season_reward_wins": 4,
"season_reward_level": 2,
"season_reward_rank_name": "Silver"
},
"platform": "epic",
"pageviews": 150,
"player_id": "térhajlítópocok",
"playlists": [
{
"tier": 11,
"rating": 700,
"season": 38,
"division": 1,
"tier_name": "Platinum II",
"win_streak": 2,
"peak_rating": null,
"playlist_id": 10,
"division_name": "Division II",
"playlist_name": "Ranked Duel 1v1",
"rank_icon_url": "https://trackercdn.com/cdn/tracker.gg/rocket-league/ranks/s4-11.png",
"matches_played": 0,
"peak_tier_name": null,
"win_streak_type": "loss",
"division_delta_up": 17,
"rating_percentile": null,
"division_delta_down": 20
},
{
"tier": 0,
"rating": 1225,
"season": 38,
"division": 0,
"tier_name": "Unranked",
"win_streak": 0,
"peak_rating": null,
"playlist_id": 0,
"division_name": "Division I",
"playlist_name": "Casual",
"rank_icon_url": "https://trackercdn.com/cdn/tracker.gg/rocket-league/ranks/s4-0.png",
"matches_played": 0,
"peak_tier_name": null,
"win_streak_type": "win",
"division_delta_up": null,
"rating_percentile": null,
"division_delta_down": null
}
],
"avatar_url": null,
"is_premium": false,
"ranked_1v1": {
"tier": 11,
"rating": 700,
"season": 38,
"division": 1,
"tier_name": "Platinum II",
"win_streak": 2,
"peak_rating": null,
"playlist_id": 10,
"division_name": "Division II",
"playlist_name": "Ranked Duel 1v1",
"rank_icon_url": "https://trackercdn.com/cdn/tracker.gg/rocket-league/ranks/s4-11.png",
"matches_played": 0,
"peak_tier_name": null,
"win_streak_type": "loss",
"division_delta_up": 17,
"rating_percentile": null,
"division_delta_down": 20
},
"ranked_2v2": {
"tier": 16,
"rating": 1081,
"season": 38,
"division": 0,
"tier_name": "Champion I",
"win_streak": 2,
"peak_rating": 1099,
"playlist_id": 11,
"division_name": "Division I",
"playlist_name": "Ranked Doubles 2v2",
"rank_icon_url": "https://trackercdn.com/cdn/tracker.gg/rocket-league/ranks/s4-16.png",
"matches_played": 43,
"peak_tier_name": "Champion I",
"win_streak_type": "win",
"division_delta_up": 14,
"rating_percentile": 68,
"division_delta_down": 6
},
"ranked_3v3": {
"tier": 12,
"rating": 826,
"season": 38,
"division": 3,
"tier_name": "Platinum III",
"win_streak": 1,
"peak_rating": null,
"playlist_id": 13,
"division_name": "Division IV",
"playlist_name": "Ranked Standard 3v3",
"rank_icon_url": "https://trackercdn.com/cdn/tracker.gg/rocket-league/ranks/s4-12.png",
"matches_played": 0,
"peak_tier_name": null,
"win_streak_type": "win",
"division_delta_up": 8,
"rating_percentile": 55,
"division_delta_down": 66
},
"is_verified": false,
"country_code": "HU",
"last_updated": "2026-10-18T13:38:25.7026809+00:00",
"peak_ratings": [
{
"season": 38,
"tier_name": "Champion I",
"peak_rating": 1099,
"playlist_id": 11,
"season_label": "Season 24 (38)",
"division_name": "Division II",
"playlist_name": "Ranked Doubles 2v2"
}
],
"player_handle": "térhajlítópocok",
"current_season": 38,
"platform_user_id": "53a626a1-fee1-4b72-8923-5579d3d774b1",
"playlist_averages": [
{
"rating": 1081,
"matches": 277,
"playlist_id": 11,
"playlist_name": "Ranked Doubles 2v2",
"goals_per_save": 1.2433234421364985,
"assists_per_goal": 0.3914081145584726,
"avg_mvps_per_game": 0.2924187725631769,
"shot_accuracy_pct": 43.37474120082816,
"avg_goals_per_game": 1.5126353790613718,
"avg_saves_per_game": 1.2166064981949458,
"avg_shots_per_game": 3.487364620938628,
"avg_assists_per_game": 0.592057761732852
}
]
},
"status": "success"
}
}About the Tracker API
What the API Returns
The get_player_stats endpoint accepts a player_id (Epic display name, Steam64 ID, Xbox gamertag, or PSN online ID) and an optional platform slug. The response combines two main sections: a lifetime object and a playlists array. The lifetime object includes cumulative totals — wins, goals, saves, assists, shots, mvps, goal_shot_ratio (as a percentage), season_reward_level, and the Tracker Network Score. These are cross-season aggregates, not per-season breakdowns.
Competitive Rank and MMR
The playlists array contains one record per tracked playlist for the current season. Each record carries playlist_id, playlist_name, season, rating (the raw MMR value), rating_percentile (nullable), tier (integer), tier_name (e.g. "Diamond III"), and division_name. Three convenience top-level fields — ranked_1v1, ranked_2v2, and ranked_3v3 — surface the Ranked Duel 1v1, Ranked Doubles 2v2, and Ranked Standard 3v3 records directly without needing to iterate the array. All three are null when the player has no current-season placement in that playlist.
Peak Ratings and Profile Metadata
The peak_ratings array lists all-time peak MMR per playlist, each entry including playlist_id, playlist_name, season, season_label, peak_rating, tier_name, and division_name. Additional top-level fields include country_code (ISO, nullable), last_updated (ISO timestamp indicating when the profile data was last refreshed), and platform confirming the resolved platform slug.
The Tracker API is a managed, monitored endpoint for rocketleague.tracker.gg — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rocketleague.tracker.gg changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official rocketleague.tracker.gg API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display a player's current Ranked 3v3 MMR and tier on a team dashboard using
ranked_3v3.ratingandranked_3v3.tier_name. - Build a rank eligibility checker that gates tournament sign-ups based on
ranked_2v2.tierthresholds. - Track a player's all-time peak MMR progression using the
peak_ratingsarray across seasons. - Populate leaderboards with lifetime
goals,saves,assists, andmvpsfrom thelifetimeobject. - Show a player's rank percentile within their playlist using
rating_percentilefrom theplaylistsarray. - Verify platform identity (Epic, Steam, Xbox, PSN) by inspecting the resolved
platformfield before processing stats. - Alert systems that monitor
last_updatedto determine whether a profile needs a manual refresh before surfacing data.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Tracker Network have an official developer API?+
What does `ranked_1v1` return versus the `playlists` array?+
ranked_1v1 is a convenience shortcut that directly surfaces the current-season Ranked Duel 1v1 record — including rating, tier_name, division_name, and rating_percentile — without iterating the full playlists array. The playlists array contains the same data for all tracked playlists in a single list, which is more convenient when you need to process all modes in a loop.How current is the data returned by `get_player_stats`?+
last_updated field in the response indicates when the profile was last refreshed on Tracker Network. Tracker Network updates profiles when they are visited or triggered; there is no guaranteed real-time cadence. For very recently played matches, there may be a lag between in-game results and what the endpoint returns.Does the API return per-season historical stats beyond peak ratings?+
playlists and all-time peak MMR per playlist via peak_ratings, but does not expose per-season stat breakdowns (e.g. goals or wins segmented by season). You can fork this API on Parse and revise it to add an endpoint targeting historical season data.