StatsRating, ADR and KAST per map

Looking for an HLTV API?

HLTV does not publish an official public API, so wrappers scrape its pages and break when the markup changes. This API serves the same kinds of CS2 data as documented, versioned REST endpoints.

  • No scraping to maintain
  • Stable IDs and slugs
  • 500 free requests / month
GET /cs2/leaderboards/rating?limit=3200 OK
$ curl "https://api.citoapi.com/api/v1/cs2/leaderboards/rating?limit=3" \ -H "x-api-key: $CITO_API_KEY"
{  "data": [    ...    {      "playerName": "ZywOo",      "teamName": "Vitality",      "maps": 32,      "rating": 1.43,      "adr": 96,      "kast": 0.778,      "kd": 1.42    }  ],  "meta": { "windowDays": 90, "minMaps": 20 }}

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

What people use an HLTV scraper for

The data behind stat bots, prediction models and fan sites, without the scraper.

Match results

Series and map scores with every player's line.

Player ratings

Rating, ADR, KAST and K/D per map, career and form.

Rankings

The world ranking and Valve Regional Standings.

Live scores

Round-by-round live scores, polled or pushed.

Teams and transfers

Rosters, lineup history and player moves.

A contract, not markup

Documented JSON that does not change when a website redesigns.

HLTV scraping vs a CS2 API

Why teams move off scrapers once a project is real.

Scraping HLTVCS2 API (Cito)
Official public APINoneYes, REST with an OpenAPI spec
AccessHeadless browsers, anti-bot challengesOne API key in a header
When the site changesThe scraper breaksSame JSON contract
Live scoresParse the scorebot page/cs2/live, SSE and WebSocket
Player ratingsParse stat tablesPer map, career and form endpoints
Skin pricesNot on HLTVPer marketplace with daily history
Commercial useGoverned by the site's termsIncluded on paid plans

Moving an HLTV scraper to the API

Most HLTV scrapers pull four things: results, a player's stats, the ranking and live scores. Those map to /cs2/matches/recent, /cs2/players/{slug}/stats, /cs2/rankings/world and /cs2/live.

Players, teams and events use slugs you already know, such as zywoo or vitality, so the lookup code stays simple. Store the returned IDs for anything you persist.

CS2 API is independent and not affiliated with HLTV.

Endpoints you can ship with

The HLTV-style jobs: results, player stats, rankings and live.

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

HLTV, scraping and the alternative

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

See pricing

Stop scraping CS2 results

Swap the scraper for one key. Free to test.