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
free100 req / 60s
premium1 000 req / 60s

Base URL: https://api.vrs.bar

Rankings

GET
/rankings/latest

Get latest official ranking

query parameters

page
number

Default: 0

limit
number

Range: 150

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

200Success
{
  "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" } }]
      }
      // ...
    ]
  }
}
401Unauthorized
{
  "success": false,
  "error": {
    "message": "Missing or invalid API key."
  }
}
500Server error
{
  "success": false,
  "error": {
    "message": "An unexpected error occurred."
  }
}
GET
/rankings/{date}

Get ranking by date

Date format: YYYY-MM-DD

path parameters

datereq
string

Date in YYYY-MM-DD format

Pattern: ^\d{4}-\d{2}-\d{2}$

query parameters

page
number

Default: 0

limit
number

Range: 150

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

200Success
{
  "success": true,
  "data": {
    "date": "2025-01-06T00:00:00.000Z",
    "isLatestOfficial": false,
    "total": 847,
    "teams": [/* same shape as /rankings/latest */]
  }
}
401Unauthorized
{
  "success": false,
  "error": {
    "message": "Missing or invalid API key."
  }
}
500No ranking for date
{
  "success": false,
  "error": {
    "message": "No ranking found for date 2020-01-01."
  }
}
GET
/rankings/team/{teamId}/history

Get team ranking history

path parameters

teamIdreq
string

Path parameter. Required.

query parameters

page
number

Default: 0

limit
number

Range: 150

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

200Success
{
  "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 }
}
401Unauthorized
{
  "success": false,
  "error": {
    "message": "Missing or invalid API key."
  }
}
GET
/rankings/team/{teamId}/roster

Get team roster

Returns roster active at the given date, or latest if no date provided.

path parameters

teamIdreq
string

Path parameter. Required.

query parameters

date
string

Date 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

200Success
{
  "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" } },
      // ...
    ]
  }
}
401Unauthorized
{
  "success": false,
  "error": {
    "message": "Missing or invalid API key."
  }
}

Me

GET
/me/api-key

Get your API key

POST
/me/api-key

Apply for an API key

Creates a free-tier API key linked to your account. Only one key per user.

GET
/me/usage

Your 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

200Success
{
  "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"
  }
}
401Unauthorized
{
  "success": false,
  "error": {
    "message": "Missing or invalid API key."
  }
}
GET
/me/rate-limit

Your current rate limit window