api reference
Official vrs.bar API — CS2 rankings, rosters, and player data. · Base URL: https://api.vrs.bar
Authentication required
Every request must include your API key in the Authorization header. To get a key, create a free account with your Discord or GitHub, then generate a key from your developer dashboard.
required header on every request
Authorization: Bearer vrs_your_api_key_here
Base URL: https://api.vrs.bar
Rankings
/rankings/latestGet latest official ranking
query parameters
pageDefault: 0
limitRange: 1–50
Default: 0
example request
import requests
API_KEY = "vrs_your_api_key_here"
BASE = "https://api.vrs.bar"
resp = requests.get(
f"{BASE}/rankings/latest",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"page": 1, "limit": 20},
)
data = resp.json()
for entry in data["data"]["teams"]:
print(f"#{entry['position']} {entry['team']['name']} — {entry['points']} pts")responses
{
"success": true,
"data": {
"id": "ranking_abc123",
"name": "Valve Rankings",
"date": "2026-04-07T00:00:00.000Z",
"isLatestOfficial": true,
"page": 1,
"pageSize": 20,
"total": 847,
"totalPages": 43,
"teams": [
{
"position": 1,
"points": 2077,
"team": { "id": "JRvZYJ", "name": "Vitality", "region": "Europe" },
"players": [{ "id": "4D9dvJ", "nickname": "ZywOo", "country": { "name": "France", "code": "FR" } }]
}
// ...
]
}
}{
"success": false,
"error": {
"message": "Missing or invalid API key."
}
}{
"success": false,
"error": {
"message": "An unexpected error occurred."
}
}/rankings/{date}Get ranking by date
Date format: YYYY-MM-DD
path parameters
datereqDate in YYYY-MM-DD format
Pattern: ^\d{4}-\d{2}-\d{2}$
query parameters
pageDefault: 0
limitRange: 1–50
Default: 0
example request
import requests
API_KEY = "vrs_your_api_key_here"
resp = requests.get(
"https://api.vrs.bar/rankings/2025-01-06",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"limit": 10},
)
data = resp.json()
print(data["data"]["date"], data["data"]["isLatestOfficial"])responses
{
"success": true,
"data": {
"date": "2025-01-06T00:00:00.000Z",
"isLatestOfficial": false,
"total": 847,
"teams": [/* same shape as /rankings/latest */]
}
}{
"success": false,
"error": {
"message": "Missing or invalid API key."
}
}{
"success": false,
"error": {
"message": "No ranking found for date 2020-01-01."
}
}/rankings/team/{teamId}/historyGet team ranking history
path parameters
teamIdreqPath parameter. Required.
query parameters
pageDefault: 0
limitRange: 1–50
Default: 0
example request
import requests
API_KEY = "vrs_your_api_key_here"
team_id = "JRvZYJ" # Vitality
resp = requests.get(
f"https://api.vrs.bar/rankings/team/{team_id}/history",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"limit": 10},
)
data = resp.json()
for entry in data["data"]:
print(entry["date"], f"#{entry['position']}", entry["points"])responses
{
"success": true,
"data": [
{ "date": "2026-04-07", "rankingId": "ranking_abc", "position": 1, "points": 2077 },
{ "date": "2026-03-31", "rankingId": "ranking_xyz", "position": 2, "points": 2012 }
// ...
],
"meta": { "page": 1, "pageSize": 10, "total": 48 }
}{
"success": false,
"error": {
"message": "Missing or invalid API key."
}
}/rankings/team/{teamId}/rosterGet team roster
Returns roster active at the given date, or latest if no date provided.
path parameters
teamIdreqPath parameter. Required.
query parameters
dateDate in YYYY-MM-DD format
Pattern: ^\d{4}-\d{2}-\d{2}$
example request
import requests
API_KEY = "vrs_your_api_key_here"
team_id = "JRvZYJ" # Vitality
resp = requests.get(
f"https://api.vrs.bar/rankings/team/{team_id}/roster",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"date": "2025-01-06"}, # optional
)
roster = resp.json()["data"]
print(roster["teamName"], "—", roster["validFrom"])
for player in roster["players"]:
print(" -", player["nickname"], f'({player["country"]["code"]})')responses
{
"success": true,
"data": {
"id": "roster_abc",
"teamId": "JRvZYJ",
"teamName": "Vitality",
"validFrom": "2024-11-01",
"validUntil": null,
"players": [
{ "id": "4D9dvJ", "nickname": "ZywOo", "name": "Mathieu Herbaut", "country": { "name": "France", "code": "FR" } },
// ...
]
}
}{
"success": false,
"error": {
"message": "Missing or invalid API key."
}
}Me
/me/api-keyGet your API key
/me/api-keyApply for an API key
Creates a free-tier API key linked to your account. Only one key per user.
/me/usageYour usage stats (today / week / month)
example request
import requests
API_KEY = "vrs_your_api_key_here"
resp = requests.get(
"https://api.vrs.bar/me/usage",
headers={"Authorization": f"Bearer {API_KEY}"},
)
usage = resp.json()["data"]
print("Today:", usage["today"]["requests"], "requests")
print("This month:", usage["thisMonth"]["requests"], "requests")responses
{
"success": true,
"data": {
"keyId": "key_abc123",
"tier": "free",
"today": { "requests": 142, "errors": 3, "rateLimited": 0, "avgLatencyMs": 48 },
"thisWeek": { "requests": 891, "errors": 12, "rateLimited": 2, "avgLatencyMs": 51 },
"thisMonth": { "requests": 4821, "errors": 38, "rateLimited": 5, "avgLatencyMs": 49 },
"lastSeenAt": "2026-04-19T14:22:00.000Z"
}
}{
"success": false,
"error": {
"message": "Missing or invalid API key."
}
}/me/rate-limitYour current rate limit window