HLTVEvery HLTV API guide

HLTV-style CS2 stats, from an API.

HLTV has no stats API. The CS2 API serves the same kinds of numbers as JSON: an HLTV-style rating where 1.00 is average, ADR, KAST, K/D and opening duels per map, plus career, recent form and 90-day leaderboards. GET /cs2/leaderboards/rating returns the top-rated players; a free key covers 500 requests a month.

  • Rating, ADR, KAST, K/D
  • Per map, career, form
  • 500 free requests / month
GET /cs2/leaderboards/rating?limit=2200 OK
$ curl "https://api.citoapi.com/api/v1/cs2/leaderboards/rating?limit=2" \ -H "x-api-key: $CITO_API_KEY"
{  "success": true,  "data": [    {      "playerName": "donk",      "teamName": "Spirit",      "maps": 572,      "rating": 1.45,      "adr": 97    },    {      "playerName": "ZywOo",      "teamName": "Vitality",      "maps": 636,      "rating": 1.39,      "adr": 88    },    "__more__"  ]}

Seamless Integration with our MCP Server

Give Claude, Cursor, and ChatGPT the CS2 data. One command writes the MCP config; agents call live scoreboard, team map stat, opening duel, and transfer tools instead of inventing match IDs, and your key stays on your machine.

MCPInstall the Cito MCP server
Claude
Cursor
OpenAI
Python
Cito API
Next.js
Discord
Slack
GitHub

Who are the top-rated CS2 players right now?

GET /cs2/stats/players at build time, players with at least 200 maps, sorted by rating. Your code gets the same rows, so a leaderboard on your site matches this one.

Career leaders by rating, minimum 200 maps, from GET /cs2/stats/players. KAST in percent. Fetched from the production CS2 API on 12 Oct 2026, 13:15 UTC.
PlayerTeamRatingADRKASTK/DMaps
donkSpirit1.4597.076.8%1.36572
ZywOoVitality1.3988.078.0%1.46636
m0NESYFalcons1.2982.476.2%1.35603
insaniMIBR1.2384.873.1%1.11550
JamYoungTYLOO1.2381.874.0%1.16510
lattoLegacy1.2380.776.4%1.20534
sh1roSpirit1.2378.077.1%1.41489
KSCERATOFURIA1.2180.775.7%1.18660
blameFBIG1.2185.276.1%1.26432
NiKoFalcons1.2082.173.9%1.14630

Which endpoint replaces each HLTV stats page?

The stats people copy from HLTV come at four levels: a player, the top-players list, a team and a single match. Each has its own endpoint, and every row uses stable IDs and slugs such as zywoo or vitality.

Stats you wantEndpointKey fields
A player's careerGET /cs2/players/{slug}rating, mapsPlayed, primaryRole
A player's per-map linesGET /cs2/players/{slug}/matchesrating, adr, kast, kills, deaths, firstKills
A player's recent formGET /cs2/players/{slug}/formthe latest maps, newest first
Top players (90 days, 20+ maps)GET /cs2/leaderboards/rating, /adr, /kastrating, adr, kast, kd, openingKills
All-time player tableGET /cs2/stats/playersrating, adr, kast, kdRatio, openingDuelSuccessRate
A team's mapsGET /cs2/teams/{slug}/map-statswin rate per map
One match's box scoreGET /cs2/matches/{matchId}/player-statsevery player's line per map
Clutches and opening duelsGET /cs2/stats/clutches, /cs2/stats/opening-duelsattempts, wins, success rate

Is the rating the same as HLTV Rating?

It is an HLTV-style performance rating on the familiar scale where about 1.00 is an average performance and higher is better. Per-map rows say which rating version they carry in ratingVersion, and career and leaderboard numbers are averages over the maps counted. CS2 API is independent and not affiliated with HLTV.

  • ADR: average damage per round.
  • KAST: share of rounds with a kill, an assist, survival or a trade (0.75 means 75%).
  • K/D: kills divided by deaths; plusMinus is kills minus deaths on a map.
  • Opening duels: firstKills and firstDeaths per map, openingDuelSuccessRate in the all-time table.

How do I pull player stats in code?

Leaderboards take a metric in the path and return players with at least 20 maps in the last 90 days; per-player calls take the slug. Both are a single GET with your key in the x-api-key header.

Python: 90-day rating leaderboard
import os, requests

API = "https://api.citoapi.com/api/v1/cs2"
H = {"x-api-key": os.environ["CITO_API_KEY"]}

r = requests.get(f"{API}/leaderboards/rating", headers=H, params={"limit": 20}, timeout=10)
r.raise_for_status()
for i, p in enumerate(r.json()["data"], 1):
    print(f"{i:>2}. {p['playerName']:<14} {p['teamName'] or '-':<14} "
          f"rating {p['rating']:.2f}  ADR {p['adr']:.1f}  KAST {p['kast']:.0%}  maps {p['maps']}")
Node.js 18+: a player's last 10 maps
const res = await fetch("https://api.citoapi.com/api/v1/cs2/players/zywoo/matches?limit=10", {
  headers: { "x-api-key": process.env.CITO_API_KEY },
})
const { data } = await res.json()
for (const m of data) {
  console.log(m.map?.mapName, `${m.kills}-${m.deaths}`, "ADR", m.adr, "rating", m.rating)
}

How much CS2 data is behind it?

Measured on production, with the date each figure was taken.

  • On the CS2 API's career leaderboard (minimum 200 maps), donk leads with a 1.45 rating over 572 maps (as of 12 October 2026).
  • The CS2 API indexes 15,315 Counter-Strike 2 matches, 4,507 teams and 8,828 players across 1,534 tournaments (as of 12 October 2026).
  • The CS2 API tracks 38,086 match demos and 150,825 roster changes (as of 12 October 2026).
  • The CS2 API answered 197,791 requests in the 24 hours to 3 October 2026 with a median server response time of 227 ms.

Endpoints you can ship with

Start on players: profiles, per-map lines, form and leaderboards.

Player stats

Rating, ADR, KAST and K/D for every map a player has played, rolled up into career, yearly and recent-form views.

View docs
  • GET/api/v1/cs2/players/{playerIdOrSlug}

    Nickname, real name, photo, country, team, role and headline stats.

  • GET/api/v1/cs2/players/{playerIdOrSlug}/stats

    Career totals plus a stat line for every map played.

  • GET/api/v1/cs2/players/{playerIdOrSlug}/seasons

    A player's stats by year.

  • GET/api/v1/cs2/players/{playerIdOrSlug}/form

    The most recent maps with kills, deaths, ADR, KAST and rating.

  • GET/api/v1/cs2/leaderboards/{metric}

    Top players by rating, ADR, KAST, K/D, kills or opening kills.

  • GET/api/v1/cs2/players/search?q={name}

    Find a player by nickname or real name.

FAQs

Ratings, ADR, KAST and leaderboards

Can't find what you're looking for? Contact our customer support team

Read the CS2 docs

Build stat sites

Create a free key and pull the leaderboard in one call.