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: Cito 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": "ZywOo",      "teamName": "Vitality",      "maps": 636,      "rating": 1.24,      "adr": 88    },    {      "playerName": "donk",      "teamName": "Spirit",      "maps": 572,      "rating": 1.22,      "adr": 97    },    "__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 17 Oct 2026, 13:15 UTC.
PlayerTeamRatingADRKASTK/DMaps
ZywOoVitality1.2488.078.1%1.46636
donkSpirit1.2297.076.8%1.36572
sh1roSpirit1.1977.977.1%1.41489
m0NESYFalcons1.1881.475.8%1.35608
blameFBIG1.1785.576.1%1.26625
ArtFr0st1win1.1572.876.0%1.31686
slaxz-M801.1574.675.9%1.29536
FenomeNINOX Division1.1475.976.0%1.28667
gr1ksBIG1.1478.274.0%1.28576
lattoLegacy1.1480.676.4%1.20542

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?

No. The API serves Cito Rating 1.0, its own rating computed from each map's kills, deaths, assists, ADR and KAST per round, on a scale where about 1.00 is an average performance. It will not match HLTV's numbers. Per-map rows carry ratingVersion "cito_rating_1", 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), ZywOo leads with a 1.24 rating over 636 maps (as of 17 October 2026).
  • The CS2 API indexes 22,342 Counter-Strike 2 matches, 4,742 teams and 9,119 players across 1,806 tournaments (as of 17 October 2026).
  • The CS2 API tracks 38,812 match demos and 150,955 roster changes (as of 17 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.