Looking for an HLTV API?
HLTV does not publish an API, its terms of use forbid scraping, and the site answers scripts with a Cloudflare 403. The Cito CS2 API serves the same kinds of data as documented REST endpoints with a free key.
- No scraping to maintain
- Stable IDs and slugs
- 500 free requests / month
{ "success": true, "data": [ { "playerName": "jks", "teamName": "FlyQuest", "maps": 35, "rating": 1.48, "adr": 91.8, "kast": 0.814, "kd": 1.56 }, "..." ], "meta": { "metric": "rating", "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 serverDoes HLTV have an API?
No. HLTV offers no official public API and no developer program. Packages called "HLTV API" download hltv.org pages and parse the HTML, which HLTV's terms of use (effective 27 January 2025, clause 2.2) prohibit, and which now fails on a Cloudflare challenge.
The exact error and how to detect it: HLTV scraper alternative. Every option side by side: HLTV API alternative.
HLTV scraping or a CS2 API?
Teams move off scrapers once a project is real: the API is a contract, a scraper is a guess about someone else's HTML.
| Scraping HLTV | Cito CS2 API | |
|---|---|---|
| Official public API | None | Yes, REST with an OpenAPI spec |
| Access | Cloudflare challenge (403 "Just a moment...") | One API key in a header |
| Terms | Scraping prohibited (clause 2.2) | Commercial use on paid plans |
| When the site changes | The scraper breaks | Same JSON contract |
| Live scores | Scorebot, often blocked | /cs2/matches/live, SSE and WebSocket |
| Player ratings | Parse stat tables | Per map, career, form and leaderboards |
| Skin prices | Not on HLTV | Per marketplace with daily history |
Which endpoint replaces each HLTV page?
HLTV-style code nearly always does the same jobs. Each one is a single GET, and players and teams take the slugs you already know, such as zywoo or vitality.
| HLTV page | Endpoint |
|---|---|
| Results | GET /cs2/matches/results |
| Matches (upcoming) | GET /cs2/matches/upcoming |
| Live scorebot | GET /cs2/matches/live or the /cs2/live/stream SSE stream |
| Player profile and stats | GET /cs2/players/{slug} and /cs2/players/{slug}/matches |
| Top players | GET /cs2/leaderboards/rating |
| Team ranking | GET /cs2/rankings/world and /cs2/rankings/vrs |
| Team page | GET /cs2/teams/{slug}, /results and /map-stats |
Which HLTV API guide do I need?
One page per question, each with working code checked against production.
| You want | Read |
|---|---|
| Compare every way to get HLTV-style data | HLTV API alternative |
| HLTV data in Python | HLTV API in Python |
| HLTV data in JavaScript or Node.js | HLTV API in JavaScript |
| Fix a scraper getting 403 "Just a moment..." | HLTV scraper alternative |
| The team ranking as JSON | HLTV rankings API |
| Player ratings, ADR and KAST as JSON | HLTV stats API |
All of it is part of the Counter-Strike 2 API. CS2 API is independent and not affiliated with HLTV.
How much CS2 data is behind it?
Measured on production, with the date each figure was taken.
- 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).
- Live CS2 match data on the CS2 API refreshes every 15 seconds at the median, measured over 22,479 live sync runs in the 7 days to 3 October 2026.
- The CS2 API serves the world ranking (250 teams) and the Valve Regional Standings (349 teams), updated 12 October 2026.
- The free CS2 API plan includes 500 requests a month, 10 requests a minute and live data on a 60-second delay, with no credit card.
Endpoints you can ship with
The HLTV-style jobs: results, player stats, rankings and live.
Live matches
Poll the live list for every match in progress, open one match for its round, timer, bomb and players, or keep an SSE stream open and get each update pushed.
- GET
/api/v1/cs2/liveMatches in progress: series score, map in play, map score, current round.
- GET
/api/v1/cs2/live/{matchId}/stateOne live match: score, round, round timer, bomb status and players.
- GET
/api/v1/cs2/live/{matchId}/scoreboardSeries score, current map and round, and each player's kills, deaths, money and equipment.
- GET
/api/v1/cs2/live/{matchId}/roundsRound-by-round results so far: winner, side and how each round ended.
- GET
/api/v1/cs2/live/streamServer-Sent Events push of every live update. Every plan; counts like polling.
- GET
/api/v1/cs2/live/wsWebSocket with a room per match. Scale and Enterprise.
Results
Finished matches with the series score and winner, every map and its score, and the player lines behind them.
- GET
/api/v1/cs2/matches/recentFinished matches with final series score and winner, newest first.
- GET
/api/v1/cs2/matches/{matchId}One match: event, teams, series score, and maps.
- GET
/api/v1/cs2/matches/{matchId}/mapsEach map: name, score, winner, and the team that picked it.
- GET
/api/v1/cs2/matches/{matchId}/player-statsPer-player stats for each map: kills, deaths, ADR, KAST and rating.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/resultsOne team's finished matches, newest first.
- GET
/api/v1/cs2/events/{eventIdOrSlug}/resultsFinal placements and prize money of a tournament.
Schedule
What is on next: upcoming matches soonest first, today's slate, one team's fixtures, and the tournament calendar.
- GET
/api/v1/cs2/matches/upcomingScheduled matches, soonest first.
- GET
/api/v1/cs2/matches/todayMatches scheduled, live or finished today (UTC).
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/upcomingOne team's scheduled matches.
- GET
/api/v1/cs2/events/upcomingScheduled tournaments, soonest first.
- GET
/api/v1/cs2/events/calendarTournaments in a date range, with from and to.
- GET
/api/v1/cs2/matches/{matchId}/streamsBroadcast links for a match, when known.
Player stats
Rating, ADR, KAST and K/D for every map a player has played, rolled up into career, yearly and recent-form views.
- GET
/api/v1/cs2/players/{playerIdOrSlug}Nickname, real name, photo, country, team, role and headline stats.
- GET
/api/v1/cs2/players/{playerIdOrSlug}/statsCareer totals plus a stat line for every map played.
- GET
/api/v1/cs2/players/{playerIdOrSlug}/seasonsA player's stats by year.
- GET
/api/v1/cs2/players/{playerIdOrSlug}/formThe 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.
Teams & rosters
Team profiles with the current roster, every past lineup, player moves between teams, and how each team plays each map.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}Name, logo, country, region, world ranking and current roster.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/roster-historyEvery player who has played for the team, with start and end dates.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/map-statsPer-map win rate, rounds and pick/ban tendencies.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/vs/{opponentIdOrSlug}Record and past matches between two teams.
- GET
/api/v1/cs2/roster-changes/recentPlayers joining and leaving teams, newest first.
- GET
/api/v1/cs2/transfers/recentPlayer moves between teams, newest first.
Rankings
The world team ranking and the Valve Regional Standings, with points and movement, plus one table per region.
- GET
/api/v1/cs2/rankings/worldThe latest world team ranking.
- GET
/api/v1/cs2/rankings/vrsThe latest Valve Regional Standings (VRS).
- GET
/api/v1/cs2/rankings/region/{region}One region, with each team's world and regional rank.
- GET
/api/v1/cs2/rankingsOne row per team, with points and change since the previous ranking.
Skin prices
The current price of a skin on each marketplace, its daily price history, sell listings across markets, and the week's biggest movers.
- GET
/api/v1/cs2/skins?q={name}Search skins by name, weapon, rarity or price range.
- GET
/api/v1/cs2/skins/{skinIdOrSlug}/pricesThe current price on each marketplace, cheapest first, with offer counts.
- GET
/api/v1/cs2/skins/{skinIdOrSlug}/historyDaily cheapest price across marketplaces, years back on long-listed skins.
- GET
/api/v1/cs2/skins/{skinIdOrSlug}/order-bookSell listings per marketplace with counts, and the lowest ask.
- GET
/api/v1/cs2/skins/trendingBiggest gainers and losers over 1 day to 1 year, with sparklines.
- GET
/api/v1/cs2/skins/{skinIdOrSlug}One skin: weapon, rarity, collection, image and price summary.
Tournaments
Tournaments with dates, prize pool, tier and format, plus every match, the standings and the bracket.
- GET
/api/v1/cs2/events/liveTournaments being played now.
- GET
/api/v1/cs2/events/{eventIdOrSlug}Dates, location, prize pool, tier, teams and format.
- GET
/api/v1/cs2/events/{eventIdOrSlug}/matchesEvery match of the tournament.
- GET
/api/v1/cs2/events/{eventIdOrSlug}/standingsTeams with seed, final placement and prize.
- GET
/api/v1/cs2/events/{eventIdOrSlug}/bracketBracket, groups, play-in and Swiss, each slot with teams, scores and winner.
FAQs
HLTV, scraping and the alternative
Can't find what you're looking for? Contact our customer support team
HLTV API guides
Each page answers one question with working code.
- HLTV API alternativeEvery way to get HLTV-style CS2 data, compared.
- HLTV API in PythonResults, player stats, rankings and live scores in Python.
- HLTV API in JavaScriptHLTV-style CS2 data in Node.js and TypeScript.
- HLTV scraper alternativeWhy HLTV answers scrapers with a 403 challenge, and the fix.
- HLTV rankings APIThe CS2 world ranking and VRS as JSON.
- HLTV stats APIHLTV-style ratings, ADR, KAST and K/D as JSON.
- CS2 APILive scores, results, player stats, rankings, and skin prices in one API.
- Free CS2 APIWhat a free key includes, with every limit stated.
Stop scraping CS2Â results
Swap the scraper for one key. Free to test.