Teams API

The teams module provides access to team information, rosters, matches, tournament placements, and transaction history.

Overview

Get comprehensive team data including team info, current rosters, match schedules, tournament placement history, and player transactions (joins, leaves, status changes).

Team-related API endpoints and models.

Bases: object

Team social media link.

label: str
url: str
__init__(label: str, url: str) None
class vlrdevapi.teams.PreviousTeam(team_id: int | None = None, name: str | None = None)[source]

Bases: object

Information about a team’s previous name/identity.

team_id: int | None = None
name: str | None = None
__init__(team_id: int | None = None, name: str | None = None) None
class vlrdevapi.teams.SuccessorTeam(team_id: int | None = None, name: str | None = None)[source]

Bases: object

Information about a team’s successor/current banner identity.

team_id: int | None = None
name: str | None = None
__init__(team_id: int | None = None, name: str | None = None) None
class vlrdevapi.teams.RosterMember(role: str, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, is_captain: bool = False, photo_url: str | None = None)[source]

Bases: object

Team roster member (player or staff).

role: str
player_id: int | None = None
ign: str | None = None
real_name: str | None = None
country: str | None = None
is_captain: bool = False
photo_url: str | None = None
__init__(role: str, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, is_captain: bool = False, photo_url: str | None = None) None
class vlrdevapi.teams.TeamInfo(team_id: int, name: str | None = None, tag: str | None = None, logo_url: str | None = None, logo_url_light: str | None = None, logo_url_dark: str | None = None, country: str | None = None, is_active: bool = True, socials: list[SocialLink] = <factory>, previous_team: PreviousTeam | None = None, current_team: SuccessorTeam | None = None)[source]

Bases: object

Team information.

team_id: int
name: str | None = None
tag: str | None = None
logo_url: str | None = None
logo_url_light: str | None = None
logo_url_dark: str | None = None
country: str | None = None
is_active: bool = True
socials: list[SocialLink]
previous_team: PreviousTeam | None = None
current_team: SuccessorTeam | None = None
__init__(team_id: int, name: str | None = None, tag: str | None = None, logo_url: str | None = None, logo_url_light: str | None = None, logo_url_dark: str | None = None, country: str | None = None, is_active: bool = True, socials: list[SocialLink] = <factory>, previous_team: PreviousTeam | None = None, current_team: SuccessorTeam | None = None) None
class vlrdevapi.teams.MatchTeam(team_id: int | None = None, name: str | None = None, tag: str | None = None, logo: str | None = None, score: int | None = None)[source]

Bases: object

Team information in a match context.

team_id: int | None = None
name: str | None = None
tag: str | None = None
score: int | None = None
__init__(team_id: int | None = None, name: str | None = None, tag: str | None = None, logo: str | None = None, score: int | None = None) None
class vlrdevapi.teams.TeamMatch(team1: MatchTeam, team2: MatchTeam, match_id: int | None = None, match_url: str | None = None, tournament_name: str | None = None, phase: str | None = None, series: str | None = None, match_datetime: datetime | None = None)[source]

Bases: object

Team match information.

team1: MatchTeam
team2: MatchTeam
match_id: int | None = None
match_url: str | None = None
tournament_name: str | None = None
phase: str | None = None
series: str | None = None
match_datetime: datetime | None = None
__init__(team1: MatchTeam, team2: MatchTeam, match_id: int | None = None, match_url: str | None = None, tournament_name: str | None = None, phase: str | None = None, series: str | None = None, match_datetime: datetime | None = None) None
class vlrdevapi.teams.EventPlacement(event_id: int | None = None, event_name: str | None = None, event_url: str | None = None, placements: list[PlacementDetail] = <factory>, year: str | None = None)[source]

Bases: object

Team event placement information.

event_id: int | None = None
event_name: str | None = None
event_url: str | None = None
placements: list[PlacementDetail]
year: str | None = None
__init__(event_id: int | None = None, event_name: str | None = None, event_url: str | None = None, placements: list[PlacementDetail] = <factory>, year: str | None = None) None
class vlrdevapi.teams.PlacementDetail(series: str | None = None, place: str | None = None, prize_money: str | None = None)[source]

Bases: object

Individual placement detail within an event.

series: str | None = None
place: str | None = None
prize_money: str | None = None
__init__(series: str | None = None, place: str | None = None, prize_money: str | None = None) None
class vlrdevapi.teams.PlayerTransaction(date: date | None = None, action: str | None = None, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, position: str | None = None, reference_url: str | None = None)[source]

Bases: object

Individual player transaction record.

date: date | None = None
action: str | None = None
player_id: int | None = None
ign: str | None = None
real_name: str | None = None
country: str | None = None
position: str | None = None
reference_url: str | None = None
__init__(date: date | None = None, action: str | None = None, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, position: str | None = None, reference_url: str | None = None) None
class vlrdevapi.teams.PreviousPlayer(status: str, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, position: str | None = None, join_date: date | None = None, leave_date: date | None = None, transactions: list[PlayerTransaction] = <factory>)[source]

Bases: object

Previous player with calculated status.

status: str
player_id: int | None = None
ign: str | None = None
real_name: str | None = None
country: str | None = None
position: str | None = None
join_date: date | None = None
leave_date: date | None = None
transactions: list[PlayerTransaction]
__init__(status: str, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, position: str | None = None, join_date: date | None = None, leave_date: date | None = None, transactions: list[PlayerTransaction] = <factory>) None
vlrdevapi.teams.info(team_id: int, timeout: float | None = None) TeamInfo | None[source]

Get team information.

Parameters:
  • team_id – Team ID

  • timeout – Request timeout in seconds

Returns:

Team information or None if not found

Example

>>> import vlrdevapi as vlr
>>> team = vlr.teams.info(team_id=1034)
>>> print(f"{team.name} ({team.tag}) - {team.country}")
vlrdevapi.teams.roster(team_id: int, timeout: float | None = None) list[RosterMember][source]

Get current team roster (active players and staff).

Parameters:
  • team_id – Team ID

  • timeout – Request timeout in seconds

Returns:

List of current roster members (players and staff)

Example

>>> import vlrdevapi as vlr
>>> roster = vlr.teams.roster(team_id=1034)
>>> for member in roster:
...     print(f"{member.ign} ({member.role}) - {member.country}")
vlrdevapi.teams.upcoming_matches(team_id: int, limit: int | None = None, timeout: float | None = None) list[TeamMatch][source]

Get upcoming matches for a team.

Parameters:
  • team_id – Team ID

  • limit – Maximum number of matches to return (fetches across pages if needed)

  • timeout – Request timeout in seconds

Returns:

List of upcoming matches

Example

>>> import vlrdevapi as vlr
>>> matches = vlr.teams.upcoming_matches(team_id=799, limit=10)
>>> for match in matches:
...     if match.match_datetime:
...         print(f"{match.team1.name} vs {match.team2.name} - {match.match_datetime.strftime('%B %d, %Y')}")
...     else:
...         print(f"{match.team1.name} vs {match.team2.name}")
vlrdevapi.teams.completed_matches(team_id: int, limit: int | None = None, timeout: float | None = None) list[TeamMatch][source]

Get completed matches for a team.

Parameters:
  • team_id – Team ID

  • limit – Maximum number of matches to return (fetches across pages if needed)

  • timeout – Request timeout in seconds

Returns:

List of completed matches

Example

>>> import vlrdevapi as vlr
>>> matches = vlr.teams.completed_matches(team_id=799, limit=20)
>>> for match in matches:
...     print(f"{match.team1.name} {match.team1.score}:{match.team2.score} {match.team2.name}")
...     if match.match_datetime:
...         print(f"  Date: {match.match_datetime.strftime('%B %d, %Y')}")
vlrdevapi.teams.placements(team_id: int, timeout: float | None = None) list[EventPlacement][source]

Get event placements for a team.

Parameters:
  • team_id – Team ID

  • timeout – Request timeout in seconds

Returns:

List of event placements

Example

>>> import vlrdevapi as vlr
>>> placements = vlr.teams.placements(team_id=799)
>>> for placement in placements:
...     print(f"{placement.event_name} ({placement.year})")
...     for detail in placement.placements:
...         print(f"  {detail.series} - {detail.place}: {detail.prize_money}")
vlrdevapi.teams.transactions(team_id: int, timeout: float | None = None) list[PlayerTransaction][source]

Get all team transactions (joins, leaves, inactive status changes, etc.).

Retrieves the complete transaction history for a team from the VLR.gg transactions page. Each transaction includes the date, action type, player information, position, and reference URL.

Parameters:
  • team_id – Team ID from VLR.gg (e.g., 1034 for NRG)

  • timeout – Request timeout in seconds (default: 5.0)

Returns:

List of PlayerTransaction objects, ordered by date (most recent first). Returns empty list if team not found or has no transactions.

Raises:

NetworkError – If the request fails after retries

Example

>>> import vlrdevapi as vlr
>>>
>>> # Get all transactions for NRG
>>> txns = vlr.teams.transactions(team_id=1034)
>>>
>>> # Display recent transactions
>>> for txn in txns[:5]:
...     if txn.date:
...         print(f"{txn.date.strftime('%Y/%m/%d')}: {txn.ign} - {txn.action} ({txn.position})")
...     else:
...         print(f"Unknown: {txn.ign} - {txn.action} ({txn.position})")
2025/10/02: FiNESSE - leave (Player)
2025/05/09: skuba - join (Player)
>>> # Filter by action type
>>> joins = [t for t in txns if t.action == "join"]
>>> leaves = [t for t in txns if t.action == "leave"]

Note

Transaction actions include: ‘join’, ‘leave’, ‘inactive’, and others. All text fields are cleaned of extra whitespace, tabs, and newlines.

vlrdevapi.teams.previous_players(team_id: int, timeout: float | None = None) list[PreviousPlayer][source]

Get all previous and current players with their status calculated from transaction history.

This function analyzes all team transactions to determine each player’s current status, join/leave dates, and complete transaction history. Players are grouped by their player_id and their status is calculated based on their most recent transactions.

Status Determination Logic:
  • Active: Player has joined and has no subsequent leave/inactive action

  • Left: Player has a ‘leave’ action as their most recent status change

  • Inactive: Player has an ‘inactive’ action as their most recent status change

  • Unknown: Cannot determine status from available transactions

Parameters:
  • team_id – Team ID from VLR.gg (e.g., 1034 for NRG)

  • timeout – Request timeout in seconds (default: 5.0)

Returns:

List of PreviousPlayer objects, sorted by most recent activity (latest transaction first). Each player includes: - Basic info (IGN, real name, country, position) - Calculated status - Join and leave dates - Complete transaction history

Returns empty list if team not found or has no transactions.

Raises:

NetworkError – If the request fails after retries

Example

>>> import vlrdevapi as vlr
>>>
>>> # Get all players
>>> players = vlr.teams.previous_players(team_id=1034)
>>>
>>> # Display player status
>>> for player in players[:5]:
...     print(f"{player.ign} - {player.status} ({player.position})")
...     join_str = player.join_date.strftime('%Y/%m/%d') if player.join_date else 'Unknown'
...     leave_str = player.leave_date.strftime('%Y/%m/%d') if player.leave_date else 'None'
...     print(f"  Joined: {join_str}, Left: {leave_str}")
mada - Active (Player)
  Joined: 2024/10/10, Left: None
FiNESSE - Left (Player)
  Joined: 2024/05/09, Left: 2025/10/02
>>> # Filter by status
>>> active = [p for p in players if p.status == "Active"]
>>> left = [p for p in players if p.status == "Left"]
>>>
>>> # Filter by position
>>> coaches = [p for p in players if p.position and "coach" in p.position.lower()]
>>>
>>> # Access transaction history
>>> player = players[0]
>>> for txn in player.transactions:
...     print(f"{txn.date}: {txn.action}")

Note

  • Players without a player_id are excluded from results

  • Transaction dates are date objects or None if not available

  • Players can have multiple join/leave cycles (rejoining after leaving)

  • Status is calculated from the most recent transaction

  • All text fields are cleaned of extra whitespace

Functions

info

vlrdevapi.teams.info(team_id: int, timeout: float | None = None) TeamInfo | None[source]

Get team information.

Parameters:
  • team_id – Team ID

  • timeout – Request timeout in seconds

Returns:

Team information or None if not found

Example

>>> import vlrdevapi as vlr
>>> team = vlr.teams.info(team_id=1034)
>>> print(f"{team.name} ({team.tag}) - {team.country}")

roster

vlrdevapi.teams.roster(team_id: int, timeout: float | None = None) list[RosterMember][source]

Get current team roster (active players and staff).

Parameters:
  • team_id – Team ID

  • timeout – Request timeout in seconds

Returns:

List of current roster members (players and staff)

Example

>>> import vlrdevapi as vlr
>>> roster = vlr.teams.roster(team_id=1034)
>>> for member in roster:
...     print(f"{member.ign} ({member.role}) - {member.country}")

upcoming_matches

vlrdevapi.teams.upcoming_matches(team_id: int, limit: int | None = None, timeout: float | None = None) list[TeamMatch][source]

Get upcoming matches for a team.

Parameters:
  • team_id – Team ID

  • limit – Maximum number of matches to return (fetches across pages if needed)

  • timeout – Request timeout in seconds

Returns:

List of upcoming matches

Example

>>> import vlrdevapi as vlr
>>> matches = vlr.teams.upcoming_matches(team_id=799, limit=10)
>>> for match in matches:
...     if match.match_datetime:
...         print(f"{match.team1.name} vs {match.team2.name} - {match.match_datetime.strftime('%B %d, %Y')}")
...     else:
...         print(f"{match.team1.name} vs {match.team2.name}")

completed_matches

vlrdevapi.teams.completed_matches(team_id: int, limit: int | None = None, timeout: float | None = None) list[TeamMatch][source]

Get completed matches for a team.

Parameters:
  • team_id – Team ID

  • limit – Maximum number of matches to return (fetches across pages if needed)

  • timeout – Request timeout in seconds

Returns:

List of completed matches

Example

>>> import vlrdevapi as vlr
>>> matches = vlr.teams.completed_matches(team_id=799, limit=20)
>>> for match in matches:
...     print(f"{match.team1.name} {match.team1.score}:{match.team2.score} {match.team2.name}")
...     if match.match_datetime:
...         print(f"  Date: {match.match_datetime.strftime('%B %d, %Y')}")

placements

vlrdevapi.teams.placements(team_id: int, timeout: float | None = None) list[EventPlacement][source]

Get event placements for a team.

Parameters:
  • team_id – Team ID

  • timeout – Request timeout in seconds

Returns:

List of event placements

Example

>>> import vlrdevapi as vlr
>>> placements = vlr.teams.placements(team_id=799)
>>> for placement in placements:
...     print(f"{placement.event_name} ({placement.year})")
...     for detail in placement.placements:
...         print(f"  {detail.series} - {detail.place}: {detail.prize_money}")

transactions

vlrdevapi.teams.transactions(team_id: int, timeout: float | None = None) list[PlayerTransaction][source]

Get all team transactions (joins, leaves, inactive status changes, etc.).

Retrieves the complete transaction history for a team from the VLR.gg transactions page. Each transaction includes the date, action type, player information, position, and reference URL.

Parameters:
  • team_id – Team ID from VLR.gg (e.g., 1034 for NRG)

  • timeout – Request timeout in seconds (default: 5.0)

Returns:

List of PlayerTransaction objects, ordered by date (most recent first). Returns empty list if team not found or has no transactions.

Raises:

NetworkError – If the request fails after retries

Example

>>> import vlrdevapi as vlr
>>>
>>> # Get all transactions for NRG
>>> txns = vlr.teams.transactions(team_id=1034)
>>>
>>> # Display recent transactions
>>> for txn in txns[:5]:
...     if txn.date:
...         print(f"{txn.date.strftime('%Y/%m/%d')}: {txn.ign} - {txn.action} ({txn.position})")
...     else:
...         print(f"Unknown: {txn.ign} - {txn.action} ({txn.position})")
2025/10/02: FiNESSE - leave (Player)
2025/05/09: skuba - join (Player)
>>> # Filter by action type
>>> joins = [t for t in txns if t.action == "join"]
>>> leaves = [t for t in txns if t.action == "leave"]

Note

Transaction actions include: ‘join’, ‘leave’, ‘inactive’, and others. All text fields are cleaned of extra whitespace, tabs, and newlines.

previous_players

vlrdevapi.teams.previous_players(team_id: int, timeout: float | None = None) list[PreviousPlayer][source]

Get all previous and current players with their status calculated from transaction history.

This function analyzes all team transactions to determine each player’s current status, join/leave dates, and complete transaction history. Players are grouped by their player_id and their status is calculated based on their most recent transactions.

Status Determination Logic:
  • Active: Player has joined and has no subsequent leave/inactive action

  • Left: Player has a ‘leave’ action as their most recent status change

  • Inactive: Player has an ‘inactive’ action as their most recent status change

  • Unknown: Cannot determine status from available transactions

Parameters:
  • team_id – Team ID from VLR.gg (e.g., 1034 for NRG)

  • timeout – Request timeout in seconds (default: 5.0)

Returns:

List of PreviousPlayer objects, sorted by most recent activity (latest transaction first). Each player includes: - Basic info (IGN, real name, country, position) - Calculated status - Join and leave dates - Complete transaction history

Returns empty list if team not found or has no transactions.

Raises:

NetworkError – If the request fails after retries

Example

>>> import vlrdevapi as vlr
>>>
>>> # Get all players
>>> players = vlr.teams.previous_players(team_id=1034)
>>>
>>> # Display player status
>>> for player in players[:5]:
...     print(f"{player.ign} - {player.status} ({player.position})")
...     join_str = player.join_date.strftime('%Y/%m/%d') if player.join_date else 'Unknown'
...     leave_str = player.leave_date.strftime('%Y/%m/%d') if player.leave_date else 'None'
...     print(f"  Joined: {join_str}, Left: {leave_str}")
mada - Active (Player)
  Joined: 2024/10/10, Left: None
FiNESSE - Left (Player)
  Joined: 2024/05/09, Left: 2025/10/02
>>> # Filter by status
>>> active = [p for p in players if p.status == "Active"]
>>> left = [p for p in players if p.status == "Left"]
>>>
>>> # Filter by position
>>> coaches = [p for p in players if p.position and "coach" in p.position.lower()]
>>>
>>> # Access transaction history
>>> player = players[0]
>>> for txn in player.transactions:
...     print(f"{txn.date}: {txn.action}")

Note

  • Players without a player_id are excluded from results

  • Transaction dates are date objects or None if not available

  • Players can have multiple join/leave cycles (rejoining after leaving)

  • Status is calculated from the most recent transaction

  • All text fields are cleaned of extra whitespace

Data Models

TeamInfo

class vlrdevapi.teams.TeamInfo(team_id: int, name: str | None = None, tag: str | None = None, logo_url: str | None = None, logo_url_light: str | None = None, logo_url_dark: str | None = None, country: str | None = None, is_active: bool = True, socials: list[SocialLink] = <factory>, previous_team: PreviousTeam | None = None, current_team: SuccessorTeam | None = None)[source]

Team information.

team_id: int
name: str | None = None
tag: str | None = None
logo_url: str | None = None
logo_url_light: str | None = None
logo_url_dark: str | None = None
country: str | None = None
is_active: bool = True
socials: list[SocialLink]
previous_team: PreviousTeam | None = None
current_team: SuccessorTeam | None = None
__init__(team_id: int, name: str | None = None, tag: str | None = None, logo_url: str | None = None, logo_url_light: str | None = None, logo_url_dark: str | None = None, country: str | None = None, is_active: bool = True, socials: list[SocialLink] = <factory>, previous_team: PreviousTeam | None = None, current_team: SuccessorTeam | None = None) None

PreviousTeam

class vlrdevapi.teams.PreviousTeam(team_id: int | None = None, name: str | None = None)[source]

Information about a team’s previous name/identity.

team_id: int | None = None
name: str | None = None
__init__(team_id: int | None = None, name: str | None = None) None

SuccessorTeam

class vlrdevapi.teams.SuccessorTeam(team_id: int | None = None, name: str | None = None)[source]

Information about a team’s successor/current banner identity.

team_id: int | None = None
name: str | None = None
__init__(team_id: int | None = None, name: str | None = None) None

RosterMember

class vlrdevapi.teams.RosterMember(role: str, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, is_captain: bool = False, photo_url: str | None = None)[source]

Team roster member (player or staff).

role: str
player_id: int | None = None
ign: str | None = None
real_name: str | None = None
country: str | None = None
is_captain: bool = False
photo_url: str | None = None
__init__(role: str, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, is_captain: bool = False, photo_url: str | None = None) None

MatchTeam

class vlrdevapi.teams.MatchTeam(team_id: int | None = None, name: str | None = None, tag: str | None = None, logo: str | None = None, score: int | None = None)[source]

Team information in a match context.

team_id: int | None = None
name: str | None = None
tag: str | None = None
logo: str | None = None
score: int | None = None
__init__(team_id: int | None = None, name: str | None = None, tag: str | None = None, logo: str | None = None, score: int | None = None) None

TeamMatch

class vlrdevapi.teams.TeamMatch(team1: MatchTeam, team2: MatchTeam, match_id: int | None = None, match_url: str | None = None, tournament_name: str | None = None, phase: str | None = None, series: str | None = None, match_datetime: datetime | None = None)[source]

Team match information.

team1: MatchTeam
team2: MatchTeam
match_id: int | None = None
match_url: str | None = None
tournament_name: str | None = None
phase: str | None = None
series: str | None = None
match_datetime: datetime | None = None
__init__(team1: MatchTeam, team2: MatchTeam, match_id: int | None = None, match_url: str | None = None, tournament_name: str | None = None, phase: str | None = None, series: str | None = None, match_datetime: datetime | None = None) None

EventPlacement

class vlrdevapi.teams.EventPlacement(event_id: int | None = None, event_name: str | None = None, event_url: str | None = None, placements: list[PlacementDetail] = <factory>, year: str | None = None)[source]

Team event placement information.

event_id: int | None = None
event_name: str | None = None
event_url: str | None = None
placements: list[PlacementDetail]
year: str | None = None
__init__(event_id: int | None = None, event_name: str | None = None, event_url: str | None = None, placements: list[PlacementDetail] = <factory>, year: str | None = None) None

PlacementDetail

class vlrdevapi.teams.PlacementDetail(series: str | None = None, place: str | None = None, prize_money: str | None = None)[source]

Individual placement detail within an event.

series: str | None = None
place: str | None = None
prize_money: str | None = None
__init__(series: str | None = None, place: str | None = None, prize_money: str | None = None) None

PlayerTransaction

class vlrdevapi.teams.PlayerTransaction(date: date | None = None, action: str | None = None, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, position: str | None = None, reference_url: str | None = None)[source]

Individual player transaction record.

date: date | None = None
action: str | None = None
player_id: int | None = None
ign: str | None = None
real_name: str | None = None
country: str | None = None
position: str | None = None
reference_url: str | None = None
__init__(date: date | None = None, action: str | None = None, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, position: str | None = None, reference_url: str | None = None) None

PreviousPlayer

class vlrdevapi.teams.PreviousPlayer(status: str, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, position: str | None = None, join_date: date | None = None, leave_date: date | None = None, transactions: list[PlayerTransaction] = <factory>)[source]

Previous player with calculated status.

status: str
player_id: int | None = None
ign: str | None = None
real_name: str | None = None
country: str | None = None
position: str | None = None
join_date: date | None = None
leave_date: date | None = None
transactions: list[PlayerTransaction]
__init__(status: str, player_id: int | None = None, ign: str | None = None, real_name: str | None = None, country: str | None = None, position: str | None = None, join_date: date | None = None, leave_date: date | None = None, transactions: list[PlayerTransaction] = <factory>) None

Usage Examples

Get Team Information

import vlrdevapi as vlr

# Get team information
team_info = vlr.teams.info(team_id=799)
if team_info:
    print(f"{team_info.name} ({team_info.tag})")
    print(f"Country: {team_info.country}")
    print(f"Active: {team_info.is_active}")
else:
    print("Team not found")

# Access social links
if team_info and team_info.socials:
    for social in team_info.socials:
        print(f"{social.label}: {social.url}")

Get Team Logos

import vlrdevapi as vlr

# Get team information
team_info = vlr.teams.info(team_id=799)
if team_info:
    print(f"{team_info.name} ({team_info.tag})")

    # Access logo URLs for different modes
    print(f"Logo (light mode): {team_info.logo_url_light}")
    print(f"Logo (dark mode): {team_info.logo_url_dark}")

    # logo_url is kept for backward compatibility (same as logo_url_light)
    print(f"Logo (default): {team_info.logo_url}")

Get Team Roster

import vlrdevapi as vlr

# Get current roster
roster = vlr.teams.roster(team_id=799)

for member in roster:
    print(f"{member.ign} - {member.real_name or 'N/A'}")
    print(f"  Role: {member.role}")
    if member.country:
        print(f"  Country: {member.country}")

Get Team Matches

import vlrdevapi as vlr

# Get upcoming matches (with pagination)
upcoming = vlr.teams.upcoming_matches(team_id=799, limit=10)

for match in upcoming:
    print(f"{match.team1.name} vs {match.team2.name}")
    print(f"Tournament: {match.tournament_name}")
    if match.match_datetime:
        print(f"Date: {match.match_datetime.strftime('%B %d, %Y at %I:%M %p')}")

# Get completed matches (with pagination)
completed = vlr.teams.completed_matches(team_id=799, limit=20)

for match in completed:
    print(f"{match.team1.name} {match.team1.score} - {match.team2.score} {match.team2.name}")
    print(f"Tournament: {match.tournament_name}")

Get Event Placements

import vlrdevapi as vlr

# Get all event placements for a team
placements = vlr.teams.placements(team_id=799)

for placement in placements:
    print(f"\n{placement.event_name} ({placement.year})")
    print(f"Event ID: {placement.event_id}")

    # Each event can have multiple placements (e.g., groups, playoffs)
    for detail in placement.placements:
        print(f"  {detail.series} - {detail.place}")
        if detail.prize_money:
            print(f"    Prize: {detail.prize_money}")

Get Team Transactions

import vlrdevapi as vlr

# Get all transactions for a team
txns = vlr.teams.transactions(team_id=1034)

for txn in txns[:5]:
    if txn.date:
        print(f"{txn.date.strftime('%Y/%m/%d')}: {txn.ign} - {txn.action} ({txn.position})")
    else:
        print(f"Unknown: {txn.ign} - {txn.action} ({txn.position})")

Get Previous Players

import vlrdevapi as vlr

# Get all previous/current players with calculated status
players = vlr.teams.previous_players(team_id=1034)

# Filter by status
active = [p for p in players if p.status == "Active"]
left = [p for p in players if p.status == "Left"]

print(f"Active: {len(active)}, Left: {len(left)}")

# Display player details
for player in active:
    print(f"{player.ign} - {player.position}")
    if player.join_date:
        print(f"  Joined: {player.join_date.strftime('%Y/%m/%d')}")
    else:
        print(f"  Joined: Unknown")

# Players can rejoin after leaving - status is based on most recent action
for player in players:
    if len([t for t in player.transactions if t.action == "join"]) > 1:
        print(f"{player.ign} has rejoined the team")

Pagination

import vlrdevapi as vlr

# Get specific number of matches
matches_2 = vlr.teams.completed_matches(team_id=799, limit=2)
matches_5 = vlr.teams.completed_matches(team_id=799, limit=5)

print(f"Retrieved {len(matches_2)} matches")
print(f"Retrieved {len(matches_5)} matches")

See more examples: Usage Examples