Get Player
Player profile + deep per-map stats from HLTV
GET
/
cs2
/
v1
/
players
/
{hltv_id}
CS2 player profile + per-map stats
curl --request GET \
--url https://ticktock.bet/cs2/v1/players/{hltv_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://ticktock.bet/cs2/v1/players/{hltv_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://ticktock.bet/cs2/v1/players/{hltv_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ticktock.bet/cs2/v1/players/{hltv_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://ticktock.bet/cs2/v1/players/{hltv_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://ticktock.bet/cs2/v1/players/{hltv_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://ticktock.bet/cs2/v1/players/{hltv_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"hltv_id": 7998,
"nickname": "s1mple",
"current_team_name": "FaZe",
"time_filter": "3months",
"map_filter": "all",
"map_stats": [
{
"map_name": "all",
"rating": 1.31,
"kd_ratio": 1.42,
"headshot_pct": 0.498,
"adr": 89.1,
"kast": 0.762,
"impact": 1.21
}
]
}
}{
"detail": "Missing X-API-Key or $x$access-token header"
}{
"detail": "Required scope 'cs2:matches:detail' is not granted to this API key. Contact your account manager to extend the key's scopes."
}{
"detail": "Match not found"
}{
"detail": [
{
"type": "enum",
"loc": [
"query",
"time_filter"
],
"msg": "Input should be one of: 3m, 6m, 1y, all",
"input": "2w"
}
]
}{
"detail": "Rate limit exceeded (600 req/min)"
}What it returns
Player identity (name, age, country, current team) plus the deepmap_stats block.
Top-level per-row fields
| Field | Meaning |
|---|---|
map_name, time_filter | Row keys |
rating, kd_ratio, headshot_pct, adr, kpr, dpr | Standard HLTV stats |
maps_played, total_kills, total_deaths, rounds_played | Volume |
kast, impact | Advanced |
ct_kpr, t_kpr | Per-side KPR |
opening_kpr, opening_dpr, opening_kill_ratio | Opening duel volume |
win_pct_after_opening_kill | Team win % when this player gets the opening kill |
weapon_kills.{ct,t}.{rifle,sniper,smg,pistol,grenade,other} | Per-side weapon-category counts |
detailed_weapons | Per-specific-weapon breakdown (ak-47, awp, m4a4, …) when scraped |
Nested JSONB blocks
| Field | Shape |
|---|---|
role_stats | {firepower, opening, sniping, clutching, entrying, trading, utility}.{score, metrics} |
individual_stats | {overall, round_stats, opening_stats, weapon_stats}.{ct, t} |
clutch_stats | {ct, t}.{1v1, 1v2, 1v3, 1v4, 1v5}.{w, l} |
multikill_stats | {ct, t}.{2k, 3k, 4k, 5k, 2k_fast, 3k_fast, …} |
Required scope
- Minimum:
cs2:players:read
Query
| Param | Default | Description |
|---|---|---|
map | all | Filter to one map. Accepts all, de_inferno, inferno (without prefix), etc. |
time_filter | 3m | Window. Accepts 3m, 6m, 1y, all. |
Example
curl -H "X-API-Key: $TT_KEY" \
"https://ticktock.bet/cs2/v1/players/7998?map=de_mirage&time_filter=6m"
Authorizations
XAPIKeyHeaderXAccessTokenHeaderUOFAccessTokenHeader
Tenant API key issued during onboarding
Path Parameters
Query Parameters
Map filter: all or any HLTV map slug (e.g. de_inferno or inferno).
Window for map_stats: 3m, 6m, 1y, all.
Response
Successful Response
The response is of type Response Get Player Cs2 V1 Players Hltv Id Get · object.
Last modified on May 10, 2026
⌘I
CS2 player profile + per-map stats
curl --request GET \
--url https://ticktock.bet/cs2/v1/players/{hltv_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://ticktock.bet/cs2/v1/players/{hltv_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://ticktock.bet/cs2/v1/players/{hltv_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ticktock.bet/cs2/v1/players/{hltv_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://ticktock.bet/cs2/v1/players/{hltv_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://ticktock.bet/cs2/v1/players/{hltv_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://ticktock.bet/cs2/v1/players/{hltv_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"hltv_id": 7998,
"nickname": "s1mple",
"current_team_name": "FaZe",
"time_filter": "3months",
"map_filter": "all",
"map_stats": [
{
"map_name": "all",
"rating": 1.31,
"kd_ratio": 1.42,
"headshot_pct": 0.498,
"adr": 89.1,
"kast": 0.762,
"impact": 1.21
}
]
}
}{
"detail": "Missing X-API-Key or $x$access-token header"
}{
"detail": "Required scope 'cs2:matches:detail' is not granted to this API key. Contact your account manager to extend the key's scopes."
}{
"detail": "Match not found"
}{
"detail": [
{
"type": "enum",
"loc": [
"query",
"time_filter"
],
"msg": "Input should be one of: 3m, 6m, 1y, all",
"input": "2w"
}
]
}{
"detail": "Rate limit exceeded (600 req/min)"
}