The HLTV API alternatives, compared.
HLTV offers no API, and its terms of use forbid scraping the site. The practical alternatives are a documented CS2 API with a free key (results, HLTV-style ratings, rankings, live scores), enterprise feeds such as GRID and PandaScore, Valve's own ranking repository on GitHub, and Steam for your own matchmaking games.
- 6 options
- Facts dated 7 Oct 2026
- We run the CS2 API
{ "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 serverWho wrote this comparison?
Cito API, which runs the CS2 API, wrote it. We say where another option is the better fit, use only facts each project or vendor publishes (read on 7 October 2026), and write "not published" rather than guess. CS2 API is independent and not affiliated with HLTV.
How do the HLTV API alternatives compare?
The choice comes down to three questions: do you need live and per-map player data, can you sign a sales contract, and can you live with code that breaks when a website changes.
| CS2 API | Scraper libraries | PandaScore | GRID | Valve VRS repo | Steam Web API | |
|---|---|---|---|---|---|---|
| Official / documented | Yes, REST + OpenAPI | No, parses HTML | Yes | Yes | Yes (Valve) | Yes (Valve) |
| Self-serve key | Yes, free tier | No key | Yes, free static tier | No, sales | No key needed | Yes |
| Results and schedule | Yes | While unblocked | Yes | Yes | No | No |
| Per-map player stats | Yes, HLTV-style rating | While unblocked | Not published | Not published | No | Own games via demos |
| Team ranking | World + VRS | While unblocked | Not published | Not published | VRS only | No |
| Live scores | Yes, REST, SSE, WebSocket | Scorebot, often blocked | Live plans from €1,000/mo | Yes | No | No |
| Main risk | Plan limits (published) | Cloudflare challenge, markup changes | Price | Sales process | Parsing Markdown files | Own games only |
1. A documented CS2 API (best for most developers)
Sign up, get a key, and call REST endpoints for the same jobs people scrape HLTV for: results, HLTV-style player ratings, the world ranking and VRS, live scores, teams and transfers. Free covers 500 requests a month; Pro at $59 a month adds real-time live data. It does not include odds.
| Entity | Count |
|---|---|
| Matches | 15,315 |
| Teams | 4,507 |
| Players | 8,828 |
| Tournaments | 1,534 |
| Match demos tracked | 38,086 |
| Roster changes | 150,825 |
| Teams in the world ranking | 250 |
| Teams in the VRS | 349 |
2. HLTV scraper libraries (free, but blocked and against the terms)
The hltv npm package and the Python HLTV libraries download hltv.org pages and parse them. hltv.org now answers scripted requests with a Cloudflare challenge (403, "Just a moment..."), and HLTV's terms of use, effective 27 January 2025, prohibit data mining or web scraping of the site in clause 2.2.
- hltv (npm): latest release 3.5.0 on 20 September 2023, about 1,000 downloads a week; it throws "Access denied | www.hltv.org used Cloudflare to restrict access" when challenged.
- hltv-async-api (PyPI): latest release 0.8.3 on 3 June 2024.
- hltv-data (PyPI): latest release 0.4.0 on 9 March 2024.
- Forks that drive a real browser to pass the challenge exist, but they add a browser to your stack and remain subject to the same terms.
Language guides without a scraper: HLTV API in Python and HLTV API in JavaScript.
3. PandaScore (best for many esports at once)
PandaScore covers many esports with a self-serve free tier for static and pre-match data. Historical plans start at €400 a month per game and live plans at €1,000; odds are sold separately through sales.
4. GRID (best for official licensed in-play data)
GRID distributes official CS2 data from tournament organisers including ESL, BLAST and CCT, over WebSocket or Kafka. It is sales-only with custom pricing, which suits operators and broadcasters more than individual developers.
5. Valve's Regional Standings repository (best free source for VRS only)
Valve publishes its Regional Standings on GitHub as Markdown files, with new snapshots on the first Monday of each month. It is official and free, but it is rankings only and you parse the files yourself; GET /cs2/rankings/vrs returns the same kind of table as JSON.
6. Steam Web API (only for your own matchmaking games)
Steam returns the share codes of one account's own matchmaking games, one at a time, with that player's game authentication code; stats then come from the replay demo. It has no professional match data.
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 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
What the self-serve option covers: results, players, 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
Choosing an HLTV API alternative
Can't find what you're looking for? Contact our customer support team
HLTV API guides
- HLTV APIIs there an HLTV API? No official one. What to use instead.
- 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.
Replace HLTV scraping with one API key
Free to test, no sales call.