VLRdevAPI

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",
) -> PlayersStats

With curried access:

vlrdevapi.series(series_id).players(game_id: int | str = "all") -> PlayersStats

Parameters

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

On this page