HLTV API alternative for CS2

, 9 min read

Bottom line: there is no official HLTV API, and HLTV answers scripts with a Cloudflare challenge. EsportsOdds is a stable, supported, independent CS2 data API (matches, players, teams, tournaments, plus a market line), self-serve at $99/month. Other no-scraper options, some with a free plan, are compared below.

The short version

If you have searched for an "HLTV API", you have probably found the bad news already: HLTV has no official API. Most "HLTV API" projects on GitHub are unofficial scrapers. The hltv Node wrapper says it is no longer actively maintained. HLTV blocks automated access behind Cloudflare.

EsportsOdds is a stable, supported, independent CS2 data API. It is documented, key-authenticated and self-serve, and it returns the kind of Counter-Strike data developers go to HLTV for: matches, results, players, teams and tournaments, as clean JSON. It is not affiliated with HLTV and does not re-serve HLTV's data. It is an independent source you can build on.

The stats you'd scrape HLTV for: of 27,132 completed Counter-Strike matches, 23,401 (86.2%) carry per-player statistics, available as structured JSON, as of 17 October 2026.

Is there an HLTV API?

HLTV is the community's system of record for CS2 results, player numbers and rankings. But it is a media and stats site owned by a sports-betting media group, so its incentive is traffic to its own pages, not a developer data feed. There is no official API, no documented developer program, and no keys.

That leaves scraping, and scraping HLTV has become a losing game on reliability alone:

  • The hltv Node wrapper says it is no longer actively maintained. Its README also warns: "Abusing this library will likely result in an IP ban from HLTV simply because of Cloudflare bot protection." Its last commit was on 3 March 2025, and its latest npm release, 3.5.0, came out on 20 September 2023.
  • HLTV actively blocks bots. Requests from anything that isn't a real browser are met with Cloudflare challenges and 403s, and sustained scripted requests can get IP-banned. On 2 November 2026, a plain script request to www.hltv.org got HTTP 403 and the header Cf-Mitigated: challenge.
  • Beating it is a full-time cat-and-mouse. A scraper that works today has to get past the browser check, and it breaks without warning whenever the check or the site changes.

The result is infrastructure that can break on any redesign.

Scraping HLTV needs a headless browser, rotating proxies, a CAPTCHA solver and an HTML parser, and still breaks on redesigns; EsportsOdds is one authenticated GET that returns normalized JSON.

Other ways to get CS2 data without scraping HLTV

As of 2 November 2026, here are three other options. Each row follows that option's own pages (pricing, API docs or package listing), and terms change, so check before you build.

OptionWhat its own page offersAccess and price as stated
Cito APILive scores, results, player stats (rating, ADR, KAST, K/D), teams and rosters, rankings, schedules, tournaments, round-by-round economy data, opening duels and map vetoes. REST JSON and an MCP server.Free plan: no card, 500 requests a month, 10 a minute, 60-second live-data delay, not for commercial products. Commercial use starts at Starter: $15 a month, 10,000 requests, one product. Pro: $59 a month, 250,000 requests, undelayed live data. Scale: $100 a month, 1,000,000 requests, WebSockets included. Pro and Scale cost less a month when billed yearly. Enterprise: custom.
GGScorePlayed match results, upcoming fixtures, player box scores (kills, deaths, assists, ADR, a rating when available), scores per map, teams, events and maps. REST.Free key: no card needed, 3 requests per day. Premium: 100 a day. Elite: unlimited. Enterprise: custom. Paid plans are listed on its pricing page. The key goes in an X-API-Key header.
A Python wrapper (cs2api)Wraps a third-party stats site's professional match statistics, offered as an alternative to HLTV. Live matches, player and team stats, transfers, predictions, async support.Python package, version 0.1.3, released 3 July 2025. No price stated.
EsportsOddsMatches and per-map results, player stats (including KAST), team stats with round-level economy, duels and bomb events, rankings (not HLTV's) and one combined market line (since July 2026, not on every match). REST and WebSocket on paid plans, not a second-by-second feed during a match. Official Python client. Coverage varies by event tier; see what is in the data.Current data needs a paid plan. Standard is $99 a month or $990 a year and covers 50,000 requests each month. Pro is $299 a month or $2,990 a year and covers 150,000 requests each month. The sandbox key needs no card and returns a fixed sample of earlier matches, capped at 2,000 requests overall.

How to choose. The options that list a free API plan or key are Cito API, whose free plan is not for commercial products, and GGScore, whose free key is capped at 3 requests per day. Check the terms of the site the cs2api wrapper reads. Compare each row's data list with what you need to build, and its request limits with your volume. To see the EsportsOdds response shape before you pay, use the sandbox key.

What developers actually want from an "HLTV API"

When people search for an HLTV API, they're after a predictable set of CS2 data:

  • Match schedules and results — upcoming, live and completed matches, scores, best-of format.
  • Player stats and performance — per-player numbers to rank and compare form.
  • Teams and rosters — who's playing, current lineups.
  • Events and tournaments — calendars, brackets, participants, results.
  • Maps — per-map results and statistics.

None of that requires scraping a website. It requires a data API.

One call, not a scraper stack

With EsportsOdds you make one authenticated request and get normalized JSON back, with no headless browser, no proxy pool and no HTML parsing:

bash
curl -H "Authorization: Bearer $ESPORTSODDS_API_KEY" \
  "https://api.esportsodds.gg/v1/cs2/matches?status=completed&limit=1"

Using a sandbox key or the shared public sample key instead of a paid key? Add &tournament=019f23d2-5a32-71d0-ac4b-dfc7eb5dd3f0 to the URL. Those keys read only a small, fixed set of past matches and answer 403 with the code sandbox_scope for anything else, without counting the call. The sandbox guide lists the sample events and every call that works.

json
{
  "data": [
    {
      "id": "0191f2c8-8a1e-7c3a-9f5e-2b6d4e8a1c00",
      "status": "completed",
      "team_a_name": "Natus Vincere",
      "team_b_name": "FaZe Clan",
      "score_a": 2,
      "score_b": 1,
      "tournament_name": "IEM Cologne 2026",
      "scheduled_at": "2026-07-08T17:00:00Z"
    }
  ],
  "meta": { "count": 1, "next_cursor": null }
}

Each list row already carries the team and tournament names, so you can render a scoreboard straight from it with no extra lookups. The id fields are stable UUIDs you join across matches, teams, players and tournaments; the single-match detail endpoint returns those bare IDs, which you resolve against /teams. The full endpoint reference lives in the docs.

One list call returns render-ready rows: a single GET to /v1/cs2/matches returns rows that already carry team and tournament names plus scheduled_at, so a scoreboard renders with no extra lookups.

Scraping HLTV vs a supported API

Scraping HLTV (unofficial)EsportsOdds API
InterfaceScrape HTML pagesDocumented REST + JSON
AccessFragile scrapers, IP-ban rouletteAPI key, published rate limits
ReliabilityBreaks on redesigns / CloudflareSupported, maintained service
MaintenanceProxies, browser spoofing, CAPTCHAsOne endpoint and a key
Data shapeParsed HTML blobsNormalized, joinable JSON with stable IDs
OddsNoneA de-vigged market line included

What a stable CS2 data API should give you

EsportsOdds is built to be everything the scraper path isn't:

A real, documented API. Versioned REST endpoints, JSON, and predictable schemas, so there's no HTML parsing that shatters when a page is redesigned.

Proper access, not IP-ban roulette. An API key, published rate limits and quotas you can plan against. No proxies, no browser spoofing, no CAPTCHAs.

Clean, normalized data. Matches, players, teams and tournaments as joinable records with stable IDs, so you query relationships instead of stitching scraped pages together.

A market line, too. Beyond stats, EsportsOdds serves a de-vigged market line: a market-implied win probability combined from multiple bookmakers and exchanges, with the margin removed and no book named, which no HLTV scraper gives you.

A note on honesty: EsportsOdds is not "official", and it is not HLTV. It's an independent CS2 data provider. Its data refreshes on a fast cadence, and a live tier is on the roadmap, so if you need second-by-second updates during a match today, plan around the current freshness rather than assuming it.

The core difference

There is no official HLTV API. The hltv Node wrapper says it is no longer actively maintained, and HLTV answers scripts with a Cloudflare challenge. EsportsOdds is a stable, supported, independent CS2 data API (matches, players, teams, tournaments and a market line) self-serve at $99/month.

The ratings-and-rankings question

The thing developers most often want from HLTV is its player rating and its world ranking, both of which are HLTV's own proprietary metrics. EsportsOdds does not, and will not, republish those numbers; they belong to HLTV. What it gives you instead is the raw material: per-match, per-player statistics as clean structured data, so you can compute and publish your own performance and ranking models rather than copying someone else's. For most products that's the better position anyway: a metric you control and can explain, not a scraped number you can neither reproduce nor rely on staying available.

Who this is for

Anyone who has tried to build on scraped HLTV data and been burned: indie developers, stats and media tools, fantasy platforms, and analysts who need reliable CS2 match, player and team data without maintaining a scraper or risking an IP ban. It won't hand you HLTV's brand or its proprietary metrics, but it will hand you data you can actually build a product on, without the cat-and-mouse. For a paid alternative in the same space, see the PandaScore comparison; for the wider field, the best esports data APIs roundup.

Get your API key

Start free with a sandbox key: a fixed sample of past matches, no card.

Get a sandbox key