Series API

The series module provides detailed match information including map picks/bans, player statistics, and round-by-round data.

Overview

Get in-depth match analytics including series info, map picks and bans, detailed player statistics, and round results.

Series/match-related API endpoints and models.

class vlrdevapi.series.TeamInfo(name: str, id: int | None = None, short: str | None = None, country: str | None = None, country_code: str | None = None, score: int | None = None)[source]

Bases: object

Team information in a series.

name: str
id: int | None = None
short: str | None = None
country: str | None = None
country_code: str | None = None
score: int | None = None
__init__(name: str, id: int | None = None, short: str | None = None, country: str | None = None, country_code: str | None = None, score: int | None = None) None
class vlrdevapi.series.MapAction(action: str, team: str, map: str)[source]

Bases: object

Map pick/ban action.

action: str
team: str
map: str
__init__(action: str, team: str, map: str) None
class vlrdevapi.series.Info(match_id: int, teams: tuple[~vlrdevapi.series.models.TeamInfo, ~vlrdevapi.series.models.TeamInfo], score: tuple[int | None, int | None], status_note: str, event: str, event_phase: str, best_of: str | None = None, date: ~datetime.date | None = None, time: ~datetime.time | None = None, patch: str | None = None, map_actions: list[~vlrdevapi.series.models.MapAction] = <factory>, picks: list[~vlrdevapi.series.models.MapAction] = <factory>, bans: list[~vlrdevapi.series.models.MapAction] = <factory>, remaining: str | None = None)[source]

Bases: object

Series information.

match_id: int
teams: tuple[TeamInfo, TeamInfo]
score: tuple[int | None, int | None]
status_note: str
event: str
event_phase: str
best_of: str | None = None
date: date | None = None
time: time | None = None
patch: str | None = None
map_actions: list[MapAction]
picks: list[MapAction]
bans: list[MapAction]
remaining: str | None = None
__init__(match_id: int, teams: tuple[~vlrdevapi.series.models.TeamInfo, ~vlrdevapi.series.models.TeamInfo], score: tuple[int | None, int | None], status_note: str, event: str, event_phase: str, best_of: str | None = None, date: ~datetime.date | None = None, time: ~datetime.time | None = None, patch: str | None = None, map_actions: list[~vlrdevapi.series.models.MapAction] = <factory>, picks: list[~vlrdevapi.series.models.MapAction] = <factory>, bans: list[~vlrdevapi.series.models.MapAction] = <factory>, remaining: str | None = None) None
class vlrdevapi.series.PlayerStats(name: str, country: str | None = None, team_short: str | None = None, team_id: int | None = None, player_id: int | None = None, agents: list[str] = <factory>, r: float | None = None, acs: int | None = None, k: int | None = None, d: int | None = None, a: int | None = None, kd_diff: int | None = None, kast: float | None = None, adr: float | None = None, hs_pct: float | None = None, fk: int | None = None, fd: int | None = None, fk_diff: int | None = None)[source]

Bases: object

Player statistics in a map.

name: str
country: str | None = None
team_short: str | None = None
team_id: int | None = None
player_id: int | None = None
agents: list[str]
r: float | None = None
acs: int | None = None
k: int | None = None
d: int | None = None
a: int | None = None
kd_diff: int | None = None
kast: float | None = None
adr: float | None = None
hs_pct: float | None = None
fk: int | None = None
fd: int | None = None
fk_diff: int | None = None
__init__(name: str, country: str | None = None, team_short: str | None = None, team_id: int | None = None, player_id: int | None = None, agents: list[str] = <factory>, r: float | None = None, acs: int | None = None, k: int | None = None, d: int | None = None, a: int | None = None, kd_diff: int | None = None, kast: float | None = None, adr: float | None = None, hs_pct: float | None = None, fk: int | None = None, fd: int | None = None, fk_diff: int | None = None) None
class vlrdevapi.series.MapTeamScore(is_winner: bool, id: int | None = None, name: str | None = None, short: str | None = None, score: int | None = None, attacker_rounds: int | None = None, defender_rounds: int | None = None)[source]

Bases: object

Team score for a specific map.

is_winner: bool
id: int | None = None
name: str | None = None
short: str | None = None
score: int | None = None
attacker_rounds: int | None = None
defender_rounds: int | None = None
__init__(is_winner: bool, id: int | None = None, name: str | None = None, short: str | None = None, score: int | None = None, attacker_rounds: int | None = None, defender_rounds: int | None = None) None
class vlrdevapi.series.RoundResult(number: int, winner_side: str | None = None, method: str | None = None, score: tuple[int, int] | None = None, winner_team_id: int | None = None, winner_team_short: str | None = None, winner_team_name: str | None = None)[source]

Bases: object

Single round result.

number: int
winner_side: str | None = None
method: str | None = None
score: tuple[int, int] | None = None
winner_team_id: int | None = None
winner_team_short: str | None = None
winner_team_name: str | None = None
__init__(number: int, winner_side: str | None = None, method: str | None = None, score: tuple[int, int] | None = None, winner_team_id: int | None = None, winner_team_short: str | None = None, winner_team_name: str | None = None) None
class vlrdevapi.series.MapPlayers(game_id: int | str | None = None, map_name: str | None = None, players: list[PlayerStats] = <factory>, teams: tuple[~vlrdevapi.series.models.MapTeamScore, ~vlrdevapi.series.models.MapTeamScore] | None=None, rounds: list[RoundResult] | None = None)[source]

Bases: object

Map statistics with player data.

game_id: int | str | None = None
map_name: str | None = None
players: list[PlayerStats]
teams: tuple[MapTeamScore, MapTeamScore] | None = None
rounds: list[RoundResult] | None = None
__init__(game_id: int | str | None = None, map_name: str | None = None, players: list[PlayerStats] = <factory>, teams: tuple[~vlrdevapi.series.models.MapTeamScore, ~vlrdevapi.series.models.MapTeamScore] | None=None, rounds: list[RoundResult] | None = None) None
vlrdevapi.series.info(match_id: int, timeout: float | None = None) Info | None[source]

Get series information.

Parameters:
  • match_id – Match ID

  • timeout – Request timeout in seconds

Returns:

Series information or None if not found

Example

>>> import vlrdevapi as vlr
>>> info = vlr.series.info(match_id=12345)
>>> print(f"{info.teams[0].name} vs {info.teams[1].name}")
>>> print(f"Score: {info.score[0]}-{info.score[1]}")
vlrdevapi.series.matches(series_id: int, limit: int | None = None, timeout: float | None = None) list[MapPlayers][source]

Get detailed match statistics for a series.

Parameters:
  • series_id – Series/match ID

  • limit – Maximum number of maps to return (optional)

  • timeout – Request timeout in seconds

Returns:

List of map statistics with player data

Example

>>> import vlrdevapi as vlr
>>> maps = vlr.series.matches(series_id=12345, limit=3)
>>> for map_data in maps:
...     print(f"Map: {map_data.map_name}")
...     for player in map_data.players:
...         print(f"  {player.name}: {player.acs} ACS")

Functions

info

vlrdevapi.series.info(match_id: int, timeout: float | None = None) Info | None[source]

Get series information.

Parameters:
  • match_id – Match ID

  • timeout – Request timeout in seconds

Returns:

Series information or None if not found

Example

>>> import vlrdevapi as vlr
>>> info = vlr.series.info(match_id=12345)
>>> print(f"{info.teams[0].name} vs {info.teams[1].name}")
>>> print(f"Score: {info.score[0]}-{info.score[1]}")

matches

vlrdevapi.series.matches(series_id: int, limit: int | None = None, timeout: float | None = None) list[MapPlayers][source]

Get detailed match statistics for a series.

Parameters:
  • series_id – Series/match ID

  • limit – Maximum number of maps to return (optional)

  • timeout – Request timeout in seconds

Returns:

List of map statistics with player data

Example

>>> import vlrdevapi as vlr
>>> maps = vlr.series.matches(series_id=12345, limit=3)
>>> for map_data in maps:
...     print(f"Map: {map_data.map_name}")
...     for player in map_data.players:
...         print(f"  {player.name}: {player.acs} ACS")

Data Models

TeamInfo

class vlrdevapi.series.TeamInfo(name: str, id: int | None = None, short: str | None = None, country: str | None = None, country_code: str | None = None, score: int | None = None)[source]

Team information in a series.

name: str
id: int | None = None
short: str | None = None
country: str | None = None
country_code: str | None = None
score: int | None = None
__init__(name: str, id: int | None = None, short: str | None = None, country: str | None = None, country_code: str | None = None, score: int | None = None) None

MapAction

class vlrdevapi.series.MapAction(action: str, team: str, map: str)[source]

Map pick/ban action.

action: str
team: str
map: str
__init__(action: str, team: str, map: str) None

Info

class vlrdevapi.series.Info(match_id: int, teams: tuple[~vlrdevapi.series.models.TeamInfo, ~vlrdevapi.series.models.TeamInfo], score: tuple[int | None, int | None], status_note: str, event: str, event_phase: str, best_of: str | None = None, date: ~datetime.date | None = None, time: ~datetime.time | None = None, patch: str | None = None, map_actions: list[~vlrdevapi.series.models.MapAction] = <factory>, picks: list[~vlrdevapi.series.models.MapAction] = <factory>, bans: list[~vlrdevapi.series.models.MapAction] = <factory>, remaining: str | None = None)[source]

Series information.

match_id: int
teams: tuple[TeamInfo, TeamInfo]
score: tuple[int | None, int | None]
status_note: str
event: str
event_phase: str
best_of: str | None = None
date: date | None = None
time: time | None = None
patch: str | None = None
map_actions: list[MapAction]
picks: list[MapAction]
bans: list[MapAction]
remaining: str | None = None
__init__(match_id: int, teams: tuple[~vlrdevapi.series.models.TeamInfo, ~vlrdevapi.series.models.TeamInfo], score: tuple[int | None, int | None], status_note: str, event: str, event_phase: str, best_of: str | None = None, date: ~datetime.date | None = None, time: ~datetime.time | None = None, patch: str | None = None, map_actions: list[~vlrdevapi.series.models.MapAction] = <factory>, picks: list[~vlrdevapi.series.models.MapAction] = <factory>, bans: list[~vlrdevapi.series.models.MapAction] = <factory>, remaining: str | None = None) None

PlayerStats

class vlrdevapi.series.PlayerStats(name: str, country: str | None = None, team_short: str | None = None, team_id: int | None = None, player_id: int | None = None, agents: list[str] = <factory>, r: float | None = None, acs: int | None = None, k: int | None = None, d: int | None = None, a: int | None = None, kd_diff: int | None = None, kast: float | None = None, adr: float | None = None, hs_pct: float | None = None, fk: int | None = None, fd: int | None = None, fk_diff: int | None = None)[source]

Player statistics in a map.

name: str
country: str | None = None
team_short: str | None = None
team_id: int | None = None
player_id: int | None = None
agents: list[str]
r: float | None = None
acs: int | None = None
k: int | None = None
d: int | None = None
a: int | None = None
kd_diff: int | None = None
kast: float | None = None
adr: float | None = None
hs_pct: float | None = None
fk: int | None = None
fd: int | None = None
fk_diff: int | None = None
__init__(name: str, country: str | None = None, team_short: str | None = None, team_id: int | None = None, player_id: int | None = None, agents: list[str] = <factory>, r: float | None = None, acs: int | None = None, k: int | None = None, d: int | None = None, a: int | None = None, kd_diff: int | None = None, kast: float | None = None, adr: float | None = None, hs_pct: float | None = None, fk: int | None = None, fd: int | None = None, fk_diff: int | None = None) None

MapTeamScore

class vlrdevapi.series.MapTeamScore(is_winner: bool, id: int | None = None, name: str | None = None, short: str | None = None, score: int | None = None, attacker_rounds: int | None = None, defender_rounds: int | None = None)[source]

Team score for a specific map.

is_winner: bool
id: int | None = None
name: str | None = None
short: str | None = None
score: int | None = None
attacker_rounds: int | None = None
defender_rounds: int | None = None
__init__(is_winner: bool, id: int | None = None, name: str | None = None, short: str | None = None, score: int | None = None, attacker_rounds: int | None = None, defender_rounds: int | None = None) None

RoundResult

class vlrdevapi.series.RoundResult(number: int, winner_side: str | None = None, method: str | None = None, score: tuple[int, int] | None = None, winner_team_id: int | None = None, winner_team_short: str | None = None, winner_team_name: str | None = None)[source]

Single round result.

number: int
winner_side: str | None = None
method: str | None = None
score: tuple[int, int] | None = None
winner_team_id: int | None = None
winner_team_short: str | None = None
winner_team_name: str | None = None
__init__(number: int, winner_side: str | None = None, method: str | None = None, score: tuple[int, int] | None = None, winner_team_id: int | None = None, winner_team_short: str | None = None, winner_team_name: str | None = None) None

MapPlayers

class vlrdevapi.series.MapPlayers(game_id: int | str | None = None, map_name: str | None = None, players: list[PlayerStats] = <factory>, teams: tuple[~vlrdevapi.series.models.MapTeamScore, ~vlrdevapi.series.models.MapTeamScore] | None=None, rounds: list[RoundResult] | None = None)[source]

Map statistics with player data.

game_id: int | str | None = None
map_name: str | None = None
players: list[PlayerStats]
teams: tuple[MapTeamScore, MapTeamScore] | None = None
rounds: list[RoundResult] | None = None
__init__(game_id: int | str | None = None, map_name: str | None = None, players: list[PlayerStats] = <factory>, teams: tuple[~vlrdevapi.series.models.MapTeamScore, ~vlrdevapi.series.models.MapTeamScore] | None=None, rounds: list[RoundResult] | None = None) None

Usage Examples

Get Series Information

import vlrdevapi as vlr

# Get match/series info
info = vlr.series.info(match_id=530935)

print(f"{info.teams[0].name} vs {info.teams[1].name}")
print(f"Score: {info.score[0]}-{info.score[1]}")
print(f"Event: {info.event} - {info.event_phase}")
print(f"Format: {info.best_of}")
print(f"Date: {info.date}")

Map Picks and Bans

import vlrdevapi as vlr

info = vlr.series.info(match_id=530935)

# Show map picks
print("Map Picks:")
for pick in info.picks:
    print(f"  {pick.team} picked {pick.map}")

# Show map bans
print("\nMap Bans:")
for ban in info.bans:
    print(f"  {ban.team} banned {ban.map}")

Get Detailed Map Statistics

import vlrdevapi as vlr

# Get per-map statistics
maps = vlr.series.matches(series_id=530935)

for i, map_data in enumerate(maps, 1):
    print(f"\nMap {i}: {map_data.map_name}")

    # Team scores
    if map_data.teams:
        team1, team2 = map_data.teams
        print(f"{team1.name} {team1.score} - {team2.score} {team2.name}")
        winner = team1.name if team1.is_winner else team2.name
        print(f"Winner: {winner}")

    # Player statistics
    print("\nPlayer Stats:")
    for player in map_data.players:
        print(f"  {player.name} ({player.team_short})")
        print(f"    K/D/A: {player.k}/{player.d}/{player.a}")
        print(f"    Rating: {player.r}, ACS: {player.acs}")
        print(f"    ADR: {player.adr}, KAST: {player.kast}")

Round-by-Round Results

import vlrdevapi as vlr

maps = vlr.series.matches(series_id=530935)

for map_data in maps:
    if map_data.rounds:
        print(f"\n{map_data.map_name} - Round Results:")
        for round_result in map_data.rounds:
            print(f"  Round {round_result.number}: {round_result.winner_team_short} ({round_result.method})")
            if round_result.score:
                print(f"    Score: {round_result.score[0]}-{round_result.score[1]}")

Top Performers

import vlrdevapi as vlr

maps = vlr.series.matches(series_id=530935)

for map_data in maps:
    # Sort by ACS
    sorted_players = sorted(
        map_data.players,
        key=lambda p: p.acs or 0,
        reverse=True
    )

    print(f"\n{map_data.map_name} - Top 3 Performers:")
    for player in sorted_players[:3]:
        print(f"  {player.name}: {player.acs} ACS, {player.k}/{player.d}/{player.a}")

See more examples: Usage Examples