Series Players
Fetch per-game player statistics including combat score, K/D, ADR, KAST, and headshot percentage.
series.players(series_id, game_id) returns detailed player statistics for a specific game within a series, or aggregated across all games.
Signature
series.players(
series_id: int,
game_id: int | str = "all",
) -> PlayersStatsWith curried access:
vlrdevapi.series(series_id).players(game_id: int | str = "all") -> PlayersStatsParameters
Prop
Type
Returns - PlayersStats
Prop
Type
TeamPlayers Fields
Prop
Type
PlayerGameStats Fields
Prop
Type
PlayerStats and SideStats Fields
PlayerStats contains three SideStats objects: overall, attack, and defend. Each SideStats has the following fields:
Prop
Type
Examples
Player stats for a specific game
Fetch player statistics for a specific game within the series (game 1). Stats include overall, attack-side, and defense-side breakdowns for each player.
import vlrdevapi
stats = vlrdevapi.series.players(series_id=670471, game_id=1)
print(f"Map: {stats.map_name}")
for team in [stats.team1, stats.team2]:
print(f"\n--- {team.team_name} ({team.team_short}) ---")
for player in team.players:
s = player.stats.overall
print(f"{player.name} ({', '.join(player.agents)})")
print(f" Rating: {s.rating} | ACS: {s.acs} | K/D: {s.kills}/{s.deaths}")
print(f" ADR: {s.adr} | KAST: {s.kast}% | HS: {s.hs_percent}%")Aggregate stats across all games
Use game_id="all" to get combined stats across every map in the series. This is useful for computing series-level player performance.
import vlrdevapi
stats = vlrdevapi.series.players(series_id=670471, game_id="all")
for team in [stats.team1, stats.team2]:
print(f"--- {team.team_name} ---")
for player in team.players:
s = player.stats.overall
diff = s.kd_diff if s.kd_diff is not None else 0
print(f"{player.name}: {s.kills}/{s.deaths} ({diff:+d}) | ACS: {s.acs}")Attack vs defense breakdown
Each player's stats are split by side, allowing you to compare performance on attack versus defense.
import vlrdevapi
stats = vlrdevapi.series.players(series_id=670471, game_id="all")
for team in [stats.team1, stats.team2]:
for player in team.players:
atk = player.stats.attack
def_ = player.stats.defend
print(f"{player.name}:")
print(f" Attack: {atk.kills}/{atk.deaths} ({atk.adr} ADR)")
print(f" Defense: {def_.kills}/{def_.deaths} ({def_.adr} ADR)")Curried access
Access player stats using the curried pattern and compute custom aggregates across both teams.
import vlrdevapi
series = vlrdevapi.series(670471)
stats = series.players(game_id="all")
top_fragger = max(
stats.team1.players + stats.team2.players,
key=lambda p: p.stats.overall.kills or 0,
)
print(f"Top fragger: {top_fragger.name} - {top_fragger.stats.overall.kills} kills")Last updated on