Valorant API
Welcome to the BALLDONTLIE Valorant API. The API provides regions, teams, players, tournaments, matches, live snapshots, maps, rounds, and player statistics. An API key is required. Create a free account at app.balldontlie.io.
Take a look at our other APIs.
Join us on Discord.
OpenAPI Specification
The complete, machine-readable OpenAPI specification is available at:
https://www.balldontlie.io/openapi/valorant.yml
You can give this URL to an API client or AI assistant to generate an integration.
Data Availability
Reference and tournament data update throughout the competitive calendar. Match schedules and status updates are available through Matches. Live Matches returns the latest snapshot for matches with active live coverage.
During live coverage, Player Match Map Stats and
Rounds can return provisional rows. A provisional row has
is_final: false and a populated snapshot_at; completion-only fields can be
null. Finalized rows have is_final: true.
Player Match Stats,
Player Round Stats,
Team Round Stats, and
Player Match Weapon Stats are completion-only and
can return an empty data array while a match is live.
Account Tiers
Paid tiers apply per sport. ALL-ACCESS includes GOAT access to every sport.
| Endpoint | Free | ALL-STAR | GOAT |
|---|---|---|---|
| Regions | Yes | Yes | Yes |
| Countries | Yes | Yes | Yes |
| Series | Yes | Yes | Yes |
| Maps | Yes | Yes | Yes |
| Agents | Yes | Yes | Yes |
| Weapons | Yes | Yes | Yes |
| Teams | Yes | Yes | Yes |
| Players | Yes | Yes | Yes |
| Player Profiles | Yes | Yes | Yes |
| Player Crosshairs | Yes | Yes | Yes |
| Agent Stats | No | Yes | Yes |
| Player Transfers | No | Yes | Yes |
| Tournaments | No | Yes | Yes |
| Tournament Stages | No | Yes | Yes |
| Tournament Teams | No | Yes | Yes |
| Tournament Prizes | No | Yes | Yes |
| Tournament Roster | No | Yes | Yes |
| Matches | No | No | Yes |
| Match Maps | No | No | Yes |
| Live Matches | No | No | Yes |
| Player Overall Stats | No | No | Yes |
| Player Match Stats | No | No | Yes |
| Player Match Map Stats | No | No | Yes |
| Rounds | No | No | Yes |
| Player Round Stats | No | No | Yes |
| Team Round Stats | No | No | Yes |
| Player Match Weapon Stats | No | No | Yes |
| Tier | Requests / Min | USD / Month |
|---|---|---|
| Free | 5 | $0 |
| ALL-STAR | 60 | $9.99 |
| GOAT | 600 | $39.99 |
48-hour free trial
Paid sport subscriptions offer a 48-hour GOAT trial with a payment method on file. Trial requests are capped at 5 per minute. One trial is available per sport per account.
Authentication
Include your API key in the Authorization request header:
Authorization: YOUR_API_KEY
Never expose an API key in client-side code or public source control.
Pagination
Paginated endpoints return a meta object. Pass meta.next_cursor as the
cursor query parameter to request the next page. per_page defaults to 25
and cannot exceed 100. The Countries response below shows a
literal paginated response from the API.
Errors
| Status | Meaning |
|---|---|
| 400 | One or more query parameters are invalid. |
| 401 | The API key is missing, invalid, or does not have the required tier. |
| 404 | The requested parent resource was not found. |
| 429 | The API key exceeded its rate limit. |
| 500 | The server could not complete the request. |
Regions
List Valorant regions
Returns the available competitive regions.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/regions" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/regions", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/regions",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 8,
"name": "Africa",
"slug": "africa"
},
{
"id": 5,
"name": "Asia",
"slug": "asia"
},
{
"id": 4,
"name": "CIS",
"slug": "cis"
},
{
"id": 3,
"name": "Europe",
"slug": "europe"
},
{
"id": 1,
"name": "North America",
"slug": "north-america"
},
{
"id": 6,
"name": "Oceania",
"slug": "oceania"
},
{
"id": 7,
"name": "Other",
"slug": "other"
},
{
"id": 2,
"name": "South America",
"slug": "south-america"
}
]
}
Countries
List countries
Returns countries and their competitive regions.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/countries?per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/countries?per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/countries?per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 1,
"code": "CA",
"name": "Canada",
"region": {
"id": 1,
"name": "North America"
}
}
],
"meta": {
"next_cursor": 1,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
region_ids[] |
No | Filter by one or more region IDs. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Series
List tournament series
Returns tournament series.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/series?per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/series?per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/series?per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 1,
"name": "VCL",
"slug": "valorant-vcl"
}
],
"meta": {
"next_cursor": 1,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
search |
No | Case-insensitive series-name search. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Maps
List maps
Returns Valorant maps and map-pool metadata.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/maps" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/maps", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/maps",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 16,
"name": "Abyss",
"slug": "abyss",
"scenario": "Bomb defusal",
"alternative_names": [
"abyss",
"Infinity"
],
"in_map_pool": false
},
{
"id": 1,
"name": "Ascent",
"slug": "ascent",
"scenario": "Bomb defusal",
"alternative_names": [
"ascent",
"Ascent"
],
"in_map_pool": true
},
{
"id": 17,
"name": "Basic Training",
"slug": "basic-training",
"scenario": "Bomb defusal",
"alternative_names": [
"basic-training",
"NPEV2"
],
"in_map_pool": false
},
{
"id": 4,
"name": "Bind",
"slug": "bind",
"scenario": "Bomb defusal",
"alternative_names": [
"bind",
"Duality"
],
"in_map_pool": false
},
{
"id": 5,
"name": "Breeze",
"slug": "breeze",
"scenario": "Bomb defusal",
"alternative_names": [
"breeze",
"Foxtrot"
],
"in_map_pool": false
},
{
"id": 19,
"name": "Corrode",
"slug": "corrode",
"scenario": "Bomb defusal",
"alternative_names": [
"corrode",
"Rook"
],
"in_map_pool": false
},
{
"id": 11,
"name": "District",
"slug": "district",
"scenario": "Bomb defusal",
"alternative_names": [
"district",
"HURM_Alley"
],
"in_map_pool": false
},
{
"id": 15,
"name": "Drift",
"slug": "drift",
"scenario": "Bomb defusal",
"alternative_names": [
"drift",
"HURM_Helix"
],
"in_map_pool": false
},
{
"id": 3,
"name": "Fracture",
"slug": "fracture",
"scenario": "Bomb defusal",
"alternative_names": [
"fracture",
"Canyon"
],
"in_map_pool": true
},
{
"id": 18,
"name": "Glitch",
"slug": "glitch",
"scenario": "Bomb defusal",
"alternative_names": [
"glitch",
"HURM_HighTide"
],
"in_map_pool": false
},
{
"id": 10,
"name": "Haven",
"slug": "haven",
"scenario": "Bomb defusal",
"alternative_names": [
"haven",
"Triad"
],
"in_map_pool": true
},
{
"id": 8,
"name": "Icebox",
"slug": "icebox",
"scenario": "Bomb defusal",
"alternative_names": [
"icebox",
"Port"
],
"in_map_pool": true
},
{
"id": 12,
"name": "Kasbah",
"slug": "kasbah",
"scenario": "Bomb defusal",
"alternative_names": [
"kasbah",
"HURM_Bowl"
],
"in_map_pool": false
},
{
"id": 6,
"name": "Lotus",
"slug": "lotus",
"scenario": "Bomb defusal",
"alternative_names": [
"lotus",
"Jam"
],
"in_map_pool": true
},
{
"id": 7,
"name": "Pearl",
"slug": "pearl",
"scenario": "Bomb defusal",
"alternative_names": [
"pearl",
"Pitt"
],
"in_map_pool": true
},
{
"id": 13,
"name": "Piazza",
"slug": "piazza",
"scenario": "Bomb defusal",
"alternative_names": [
"piazza",
"HURM_Yard"
],
"in_map_pool": false
},
{
"id": 20,
"name": "Skirmish A",
"slug": "skirmish-a",
"scenario": "Bomb defusal",
"alternative_names": [
"skirmish-a",
"Skirmish_A"
],
"in_map_pool": false
},
{
"id": 21,
"name": "Skirmish B",
"slug": "skirmish-b",
"scenario": "Bomb defusal",
"alternative_names": [
"skirmish-b",
"Skirmish_B"
],
"in_map_pool": false
},
{
"id": 22,
"name": "Skirmish C",
"slug": "skirmish-c",
"scenario": "Bomb defusal",
"alternative_names": [
"skirmish-c",
"Skirmish_C"
],
"in_map_pool": false
},
{
"id": 24,
"name": "Skirmish D",
"slug": "skirmish-d",
"scenario": "Bomb defusal",
"alternative_names": [
"skirmish-d",
"Skirmish_D"
],
"in_map_pool": false
},
{
"id": 23,
"name": "Skirmish E",
"slug": "skirmish-e",
"scenario": "Bomb defusal",
"alternative_names": [
"skirmish-e",
"Skirmish_E"
],
"in_map_pool": false
},
{
"id": 2,
"name": "Split",
"slug": "split",
"scenario": "Bomb defusal",
"alternative_names": [
"split",
"Bonsai"
],
"in_map_pool": true
},
{
"id": 25,
"name": "Summit",
"slug": "summit",
"scenario": "Bomb defusal",
"alternative_names": [
"summit",
"Plummet"
],
"in_map_pool": false
},
{
"id": 14,
"name": "Sunset",
"slug": "sunset",
"scenario": "Bomb defusal",
"alternative_names": [
"sunset",
"Juliett"
],
"in_map_pool": false
},
{
"id": 9,
"name": "The Range",
"slug": "the_range",
"scenario": "Bomb defusal",
"alternative_names": [
"the_range",
"Range"
],
"in_map_pool": false
}
]
}
Agents
List agents
Returns Valorant agents.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/agents" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/agents", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/agents",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 14,
"name": "astra",
"icon_url": "https://media.valorant-api.com/agents/41fb69c1-4189-7b37-f117-bcaf1e96f1bf/displayicon.png"
},
{
"id": 3,
"name": "Breach",
"icon_url": "https://media.valorant-api.com/agents/5f8d3a7f-467b-97f3-062c-13acf203c006/displayicon.png"
},
{
"id": 15,
"name": "Brimstone",
"icon_url": "https://media.valorant-api.com/agents/9f0d8ba9-4140-b941-57d3-a7ad57c6b417/displayicon.png"
},
{
"id": 5,
"name": "chamber",
"icon_url": "https://media.valorant-api.com/agents/22697a3d-45bf-8dd7-4fec-84a9e28c69d7/displayicon.png"
},
{
"id": 24,
"name": "clove",
"icon_url": "https://media.valorant-api.com/agents/1dbf2edd-4729-0984-3115-daa5eed44993/displayicon.png"
},
{
"id": 8,
"name": "cypher",
"icon_url": "https://media.valorant-api.com/agents/117ed9e3-49f3-6512-3ccf-0cada7e3823b/displayicon.png"
},
{
"id": 22,
"name": "deadlock",
"icon_url": "https://media.valorant-api.com/agents/cc8b64c8-4b25-4ff9-6e7f-37b4da43d235/displayicon.png"
},
{
"id": 2,
"name": "fade",
"icon_url": "https://media.valorant-api.com/agents/dade69b4-4f5a-8528-247b-219e5a1facd6/displayicon.png"
},
{
"id": 1,
"name": "Gekko",
"icon_url": "https://media.valorant-api.com/agents/e370fa57-4757-3604-3648-499e1f642d3f/displayicon.png"
},
{
"id": 11,
"name": "harbor",
"icon_url": "https://media.valorant-api.com/agents/95b78ed7-4637-86d9-7e41-71ba8c293152/displayicon.png"
},
{
"id": 23,
"name": "iso",
"icon_url": "https://media.valorant-api.com/agents/0e38b510-41a8-5780-5e8f-568b2a4f2d6c/displayicon.png"
},
{
"id": 21,
"name": "jett",
"icon_url": "https://media.valorant-api.com/agents/add6443a-41bd-e414-f6ad-e58d267f4e95/displayicon.png"
},
{
"id": 6,
"name": "kay/o",
"icon_url": "https://media.valorant-api.com/agents/601dbbe7-43ce-be57-2a40-4abd24953621/displayicon.png"
},
{
"id": 10,
"name": "Killjoy",
"icon_url": "https://media.valorant-api.com/agents/1e58de9c-4950-5125-93e9-a0aee9f98746/displayicon.png"
},
{
"id": 29,
"name": "Miks",
"icon_url": "https://media.valorant-api.com/agents/7c8a4701-4de6-9355-b254-e09bc2a34b72/displayicon.png"
},
{
"id": 16,
"name": "neon",
"icon_url": "https://media.valorant-api.com/agents/bb2a4828-46eb-8cd1-e765-15848195d751/displayicon.png"
},
{
"id": 20,
"name": "omen",
"icon_url": "https://media.valorant-api.com/agents/8e253930-4c05-31dd-1b6c-968525494517/displayicon.png"
},
{
"id": 13,
"name": "phoenix",
"icon_url": "https://media.valorant-api.com/agents/eb93336a-449b-9c1b-0a54-a891f7921d69/displayicon.png"
},
{
"id": 4,
"name": "raze",
"icon_url": "https://media.valorant-api.com/agents/f94c3b30-42be-e959-889c-5aa313dba261/displayicon.png"
},
{
"id": 19,
"name": "Reyna",
"icon_url": "https://media.valorant-api.com/agents/a3bfb853-43b2-7238-a4f1-ad90e9e46bcc/displayicon.png"
},
{
"id": 18,
"name": "sage",
"icon_url": "https://media.valorant-api.com/agents/569fdd95-4d10-43ab-ca70-79becc718b46/displayicon.png"
},
{
"id": 7,
"name": "skye",
"icon_url": "https://media.valorant-api.com/agents/6f2a04ca-43e0-be17-7f36-b3908627744d/displayicon.png"
},
{
"id": 9,
"name": "sova",
"icon_url": "https://media.valorant-api.com/agents/320b2a48-4d9b-a075-30f1-1f93a9b638fa/displayicon.png"
},
{
"id": 26,
"name": "tejo",
"icon_url": "https://media.valorant-api.com/agents/b444168c-4e35-8076-db47-ef9bf368f384/displayicon.png"
},
{
"id": 28,
"name": "veto",
"icon_url": "https://media.valorant-api.com/agents/92eeef5d-43b5-1d4a-8d03-b3927a09034b/displayicon.png"
},
{
"id": 12,
"name": "viper",
"icon_url": "https://media.valorant-api.com/agents/707eab51-4836-f488-046a-cda6bf494859/displayicon.png"
},
{
"id": 25,
"name": "vyse",
"icon_url": "https://media.valorant-api.com/agents/efba5359-4016-a1e5-7626-b1ae76895940/displayicon.png"
},
{
"id": 27,
"name": "waylay",
"icon_url": "https://media.valorant-api.com/agents/df1cb487-4902-002e-5c17-d28e83e78588/displayicon.png"
},
{
"id": 17,
"name": "Yoru",
"icon_url": "https://media.valorant-api.com/agents/7f94d92c-4234-0a36-9646-3a87eb8b5c89/displayicon.png"
}
]
}
Weapons
List weapons
Returns Valorant weapons.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/weapons" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/weapons", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/weapons",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 262,
"name": "Ares",
"category": "Heavy",
"slug": "ares"
},
{
"id": 231869,
"name": "Bandit",
"category": "Sidearm",
"slug": "bandit"
},
{
"id": 78,
"name": "Bucky",
"category": "Shotgun",
"slug": "bucky"
},
{
"id": 13,
"name": "Bulldog",
"category": "Rifle",
"slug": "bulldog"
},
{
"id": 4,
"name": "Classic",
"category": "Sidearm",
"slug": "classic"
},
{
"id": 3,
"name": "Frenzy",
"category": "Sidearm",
"slug": "frenzy"
},
{
"id": 5,
"name": "Ghost",
"category": "Sidearm",
"slug": "ghost"
},
{
"id": 19,
"name": "Guardian",
"category": "Rifle",
"slug": "guardian"
},
{
"id": 277,
"name": "Judge",
"category": "Shotgun",
"slug": "judge"
},
{
"id": 8,
"name": "Marshal",
"category": "Sniper",
"slug": "marshal"
},
{
"id": 11,
"name": "Melee",
"category": "Melee",
"slug": "melee"
},
{
"id": 147,
"name": "Odin",
"category": "Heavy",
"slug": "odin"
},
{
"id": 7,
"name": "Operator",
"category": "Sniper",
"slug": "operator"
},
{
"id": 83226,
"name": "Outlaw",
"category": "Sniper",
"slug": "outlaw"
},
{
"id": 2,
"name": "Phantom",
"category": "Rifle",
"slug": "phantom"
},
{
"id": 6,
"name": "Sheriff",
"category": "Sidearm",
"slug": "sheriff"
},
{
"id": 94,
"name": "Shorty",
"category": "Sidearm",
"slug": "shorty"
},
{
"id": 9,
"name": "Spectre",
"category": "SMG",
"slug": "spectre"
},
{
"id": 10,
"name": "Stinger",
"category": "SMG",
"slug": "stinger"
},
{
"id": 1,
"name": "Vandal",
"category": "Rifle",
"slug": "vandal"
}
]
}
Teams
List teams
Returns Valorant teams.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/teams?per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/teams?per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/teams?per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 1,
"name": "Springroll",
"acronym": null,
"slug": "springroll",
"image_url": null,
"country": null,
"rank": null,
"six_month_earnings": null,
"total_earnings": null,
"tournament_wins": null
}
],
"meta": {
"next_cursor": 1,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
search |
No | Case-insensitive team-name search. |
country_ids[] |
No | Filter by one or more country IDs. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Players
List players
Returns Valorant players.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/players?per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/players?per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/players?per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 1,
"nickname": "dimasick",
"first_name": "Dmitry",
"last_name": "Matvienko",
"slug": "dimasick",
"image_url": "https://files.bo3.gg/uploads/player/17798/image/webp-8bdb5b6fc71e16c0c6d83be9aa4f1009.webp",
"birthday": "1996-07-06",
"country": {
"id": 53,
"code": "KZ",
"name": "Kazakhstan"
},
"team": null,
"is_coach": true,
"joined_team_at": null,
"total_prize": 137,
"rank": null
}
],
"meta": {
"next_cursor": 1,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
search |
No | Case-insensitive player-name search. |
team_ids[] |
No | Filter by one or more team IDs. |
country_ids[] |
No | Filter by one or more country IDs. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Player Profiles
List player profiles
Returns competitive profiles linked to players when known.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/player_profiles?per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/player_profiles?per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/player_profiles?per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 1,
"game_name": "WLG Maggos",
"tag_line": "eProd",
"player": {
"id": 26,
"nickname": "Maggos",
"first_name": "Dimitris",
"last_name": "Maggos"
},
"region": "esports",
"nickname": "Maggos",
"acronym": "WLG"
}
],
"meta": {
"next_cursor": 1,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
player_ids[] |
No | Filter by one or more player IDs. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Player Crosshairs
List player crosshairs
Returns published player crosshair codes.
Minimum tier: Free
curl "https://api.balldontlie.io/valorant/v1/player_crosshairs?per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/player_crosshairs?per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/player_crosshairs?per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 1,
"player": {
"id": 3281,
"nickname": "zekken",
"first_name": "Zachary",
"last_name": "Patrone"
},
"code": "0;s;1;p;0;P;0a;1;0b;1;0e;1;0f;0;0g;0;0l;1;0m;0;0o;1;0s;1;0t;2;0v;6;1a;0.35;1b;0;1e;1;1f;1;1g;0;1l;2;1m;1;1o;10;1s;1;1t;2;1v;2;a;1;c;0;d;1;h;1;m;0;o;1;t;2;z;2;f;1;s;1;b;1;u;FFFFFF;A;0a;0.8;0b;1;0e;1;0f;1;0g;0;0l;6;0m;0;0o;3;0s;1;0t;2;0v;6;1a;0.35;1b;1;1e;1;1f;1;1g;0;1l;2;1m;1;1o;10;1s;1;1t;2;1v;2;a;1;b;1;c;8;d;0;h;1;m;0;o;0.5;t;1;u;FFFFFF;z;2;f;1;s;1;S;c;8;s;1;o;0.75;d;1;t;000000",
"popular": true,
"current": false
}
],
"meta": {
"next_cursor": 1,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
player_ids[] |
No | Filter by one or more player IDs. |
popular |
No | Filter by popular status. |
current |
No | Filter by current status. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Agent Stats
List aggregate agent statistics
Returns aggregate performance statistics by agent.
Minimum tier: ALL-STAR
curl "https://api.balldontlie.io/valorant/v1/agent_stats" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/agent_stats", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/agent_stats",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 1,
"agent": {
"id": 1,
"name": "Gekko"
},
"picks_count": 3025,
"picks_rate": 0.12928455423540475,
"rounds_count": 63664,
"average_combat_score": 181.9512283236994,
"kd_ratio": 0.9396733822427147,
"kda_ratio": 1.3211892702205466,
"damage_per_round": 120.33497738125158,
"kills_per_round": 0.649833500879618,
"deaths_per_round": 0.6915525257602413,
"assists_per_round": 0.2638382759487308,
"first_kills_per_round": 0.07132759487308368,
"first_kill_success_rate": 0.4640302472920499,
"clutch_count": 1037,
"clutch_attempts": 6964,
"clutch_success_rate": 0.14890867317633544
},
{
"id": 2,
"agent": {
"id": 2,
"name": "fade"
},
"picks_count": 11028,
"picks_rate": 0.4713223352423284,
"rounds_count": 231900,
"average_combat_score": 181.80566192324278,
"kd_ratio": 0.9490463736684315,
"kda_ratio": 1.404956305415577,
"damage_per_round": 119.00214747736094,
"kills_per_round": 0.6415782664941785,
"deaths_per_round": 0.6760241483398016,
"assists_per_round": 0.30820612332902114,
"first_kills_per_round": 0.06184131090987494,
"first_kill_success_rate": 0.4585744891759665,
"clutch_count": 3944,
"clutch_attempts": 27823,
"clutch_success_rate": 0.14175322574848148
},
{
"id": 3,
"agent": {
"id": 3,
"name": "Breach"
},
"picks_count": 12354,
"picks_rate": 0.5279938456278315,
"rounds_count": 259514,
"average_combat_score": 177.64359148254044,
"kd_ratio": 0.9224477465615613,
"kda_ratio": 1.5863841817570379,
"damage_per_round": 115.14232758155629,
"kills_per_round": 0.6236156816202594,
"deaths_per_round": 0.676044452322418,
"assists_per_round": 0.4488505437086246,
"first_kills_per_round": 0.052448037485453576,
"first_kill_success_rate": 0.4581902645930115,
"clutch_count": 4261,
"clutch_attempts": 30506,
"clutch_success_rate": 0.1396774405035075
},
{
"id": 4,
"agent": {
"id": 4,
"name": "raze"
},
"picks_count": 14262,
"picks_rate": 0.6095392768612702,
"rounds_count": 299850,
"average_combat_score": 232.50127730531932,
"kd_ratio": 1.0730962773248682,
"kda_ratio": 1.3333949570738042,
"damage_per_round": 154.11219943304985,
"kills_per_round": 0.7936868434217108,
"deaths_per_round": 0.7396231449057862,
"assists_per_round": 0.19252292813073205,
"first_kills_per_round": 0.1694714023678506,
"first_kill_success_rate": 0.5127646263445743,
"clutch_count": 3099,
"clutch_attempts": 21550,
"clutch_success_rate": 0.14380510440835267
},
{
"id": 5,
"agent": {
"id": 5,
"name": "chamber"
},
"picks_count": 2830,
"picks_rate": 0.12095050859047782,
"rounds_count": 59199,
"average_combat_score": 211.29855234041116,
"kd_ratio": 1.143501352840966,
"kda_ratio": 1.3180679426796271,
"damage_per_round": 137.23971688710958,
"kills_per_round": 0.7710265376104326,
"deaths_per_round": 0.6742681464213922,
"assists_per_round": 0.11770469095761753,
"first_kills_per_round": 0.16277301981452388,
"first_kill_success_rate": 0.5715641497123198,
"clutch_count": 1021,
"clutch_attempts": 8343,
"clutch_success_rate": 0.1223780414718926
},
{
"id": 6,
"agent": {
"id": 6,
"name": "kay/o"
},
"picks_count": 9098,
"picks_rate": 0.38883665270535944,
"rounds_count": 190539,
"average_combat_score": 191.59553687171655,
"kd_ratio": 0.931067931962763,
"kda_ratio": 1.6757327839020648,
"damage_per_round": 123.83022898199319,
"kills_per_round": 0.6498354667548376,
"deaths_per_round": 0.6979463521903653,
"assists_per_round": 0.5197361170154141,
"first_kills_per_round": 0.0736909504091026,
"first_kill_success_rate": 0.46410392014279106,
"clutch_count": 2492,
"clutch_attempts": 19295,
"clutch_success_rate": 0.12915263021508164
},
{
"id": 7,
"agent": {
"id": 7,
"name": "skye"
},
"picks_count": 8542,
"picks_rate": 0.365073937943414,
"rounds_count": 180402,
"average_combat_score": 182.39881486901476,
"kd_ratio": 0.9442186621926488,
"kda_ratio": 1.5066336544961436,
"damage_per_round": 118.3685324996397,
"kills_per_round": 0.6426425427656013,
"deaths_per_round": 0.6806077537943038,
"assists_per_round": 0.38278400461192225,
"first_kills_per_round": 0.0675269675502489,
"first_kill_success_rate": 0.4633172327235386,
"clutch_count": 2866,
"clutch_attempts": 20406,
"clutch_success_rate": 0.1404488875820837
},
{
"id": 8,
"agent": {
"id": 8,
"name": "cypher"
},
"picks_count": 14188,
"picks_rate": 0.6063766133857594,
"rounds_count": 297462,
"average_combat_score": 191.60189200637393,
"kd_ratio": 1.014985958389368,
"kda_ratio": 1.3153725971046595,
"damage_per_round": 127.12062381077247,
"kills_per_round": 0.6901284870000202,
"deaths_per_round": 0.6799389501852338,
"assists_per_round": 0.2042445757777464,
"first_kills_per_round": 0.08626648109674513,
"first_kill_success_rate": 0.5009859237422151,
"clutch_count": 5337,
"clutch_attempts": 40301,
"clutch_success_rate": 0.13242847572020544
},
{
"id": 9,
"agent": {
"id": 9,
"name": "sova"
},
"picks_count": 21298,
"picks_rate": 0.9102487392084794,
"rounds_count": 445376,
"average_combat_score": 192.21159424845524,
"kd_ratio": 1.0006603610651117,
"kda_ratio": 1.4216998032462673,
"damage_per_round": 131.06510903147003,
"kills_per_round": 0.6634573933036356,
"deaths_per_round": 0.6630195610001437,
"assists_per_round": 0.2791573861186952,
"first_kills_per_round": 0.06710734300905302,
"first_kill_success_rate": 0.49703984567285303,
"clutch_count": 8399,
"clutch_attempts": 59179,
"clutch_success_rate": 0.14192534513932306
},
{
"id": 10,
"agent": {
"id": 10,
"name": "Killjoy"
},
"picks_count": 16107,
"picks_rate": 0.6883921702709633,
"rounds_count": 337503,
"average_combat_score": 199.20521299069935,
"kd_ratio": 1.053509929084293,
"kda_ratio": 1.2886649963258403,
"damage_per_round": 135.7031967123255,
"kills_per_round": 0.7051492875618883,
"deaths_per_round": 0.6693333096298403,
"assists_per_round": 0.15739711943301243,
"first_kills_per_round": 0.08525257553266193,
"first_kill_success_rate": 0.505658852061439,
"clutch_count": 6585,
"clutch_attempts": 45826,
"clutch_success_rate": 0.1436957185877013
},
{
"id": 11,
"agent": {
"id": 11,
"name": "harbor"
},
"picks_count": 2198,
"picks_rate": 0.0939396529617916,
"rounds_count": 46266,
"average_combat_score": 177.31016297064798,
"kd_ratio": 0.9184828491917075,
"kda_ratio": 1.3840717926268722,
"damage_per_round": 115.40883153935935,
"kills_per_round": 0.6348938745515065,
"deaths_per_round": 0.6912419487312498,
"assists_per_round": 0.3218346085678468,
"first_kills_per_round": 0.0661392815458436,
"first_kill_success_rate": 0.44194107452339687,
"clutch_count": 700,
"clutch_attempts": 4946,
"clutch_success_rate": 0.14152850788515972
},
{
"id": 12,
"agent": {
"id": 12,
"name": "viper"
},
"picks_count": 18303,
"picks_rate": 0.782246345841525,
"rounds_count": 385474,
"average_combat_score": 199.60806695133783,
"kd_ratio": 1.026650503258176,
"kda_ratio": 1.4192415945176982,
"damage_per_round": 132.46583167736344,
"kills_per_round": 0.6964542355645258,
"deaths_per_round": 0.6783751952142039,
"assists_per_round": 0.2663240581725356,
"first_kills_per_round": 0.08586571338144726,
"first_kill_success_rate": 0.49185662911998096,
"clutch_count": 7166,
"clutch_attempts": 50451,
"clutch_success_rate": 0.14203880993439177
},
{
"id": 13,
"agent": {
"id": 13,
"name": "phoenix"
},
"picks_count": 2368,
"picks_rate": 0.10120523121634328,
"rounds_count": 49543,
"average_combat_score": 221.88702743071676,
"kd_ratio": 1.0695191684741274,
"kda_ratio": 1.4906622348666234,
"damage_per_round": 147.53959186968896,
"kills_per_round": 0.7663847566760188,
"deaths_per_round": 0.7165694447247846,
"assists_per_round": 0.3017782532345639,
"first_kills_per_round": 0.12243909331287972,
"first_kill_success_rate": 0.5047428856714927,
"clutch_count": 590,
"clutch_attempts": 3872,
"clutch_success_rate": 0.15237603305785125
},
{
"id": 14,
"agent": {
"id": 14,
"name": "astra"
},
"picks_count": 9239,
"picks_rate": 0.3948628087870758,
"rounds_count": 193876,
"average_combat_score": 186.17934143473147,
"kd_ratio": 1.0138197681743732,
"kda_ratio": 1.5633976943429508,
"damage_per_round": 121.36190657946317,
"kills_per_round": 0.6640687862345004,
"deaths_per_round": 0.6550166085539211,
"assists_per_round": 0.3599826693350389,
"first_kills_per_round": 0.06757927747632507,
"first_kill_success_rate": 0.4931496537187594,
"clutch_count": 4356,
"clutch_attempts": 28691,
"clutch_success_rate": 0.15182461399044997
},
{
"id": 15,
"agent": {
"id": 15,
"name": "Brimstone"
},
"picks_count": 5669,
"picks_rate": 0.24228566544149072,
"rounds_count": 119373,
"average_combat_score": 196.30397996196794,
"kd_ratio": 1.0071718504868392,
"kda_ratio": 1.6533481086734567,
"damage_per_round": 127.33613128596919,
"kills_per_round": 0.6776239183064847,
"deaths_per_round": 0.6727987065751887,
"assists_per_round": 0.4347465507275515,
"first_kills_per_round": 0.06989017617049081,
"first_kill_success_rate": 0.4995210154472518,
"clutch_count": 2248,
"clutch_attempts": 14188,
"clutch_success_rate": 0.1584437552861573
},
{
"id": 16,
"agent": {
"id": 16,
"name": "neon"
},
"picks_count": 10474,
"picks_rate": 0.44764509787161294,
"rounds_count": 220177,
"average_combat_score": 222.92291656258374,
"kd_ratio": 1.0282142192946144,
"kda_ratio": 1.3037512973261582,
"damage_per_round": 141.70927935252092,
"kills_per_round": 0.778428264532626,
"deaths_per_round": 0.7570681769667131,
"assists_per_round": 0.20860035335207583,
"first_kills_per_round": 0.17660336910758162,
"first_kill_success_rate": 0.4970281083430266,
"clutch_count": 2084,
"clutch_attempts": 13285,
"clutch_success_rate": 0.15686864885208882
},
{
"id": 17,
"agent": {
"id": 17,
"name": "Yoru"
},
"picks_count": 8192,
"picks_rate": 0.35011539447816054,
"rounds_count": 171795,
"average_combat_score": 215.64117698419628,
"kd_ratio": 1.061901645701544,
"kda_ratio": 1.3473585561130097,
"damage_per_round": 138.6238947582875,
"kills_per_round": 0.7650921156028988,
"deaths_per_round": 0.720492447393696,
"assists_per_round": 0.2056695480078,
"first_kills_per_round": 0.16372420617596553,
"first_kill_success_rate": 0.5260136146020347,
"clutch_count": 2127,
"clutch_attempts": 14424,
"clutch_success_rate": 0.14746256239600666
},
{
"id": 18,
"agent": {
"id": 18,
"name": "sage"
},
"picks_count": 3189,
"picks_rate": 0.13629370031626634,
"rounds_count": 66488,
"average_combat_score": 187.24437492479845,
"kd_ratio": 0.9794700512135381,
"kda_ratio": 1.4838343353373413,
"damage_per_round": 121.32059920587173,
"kills_per_round": 0.6615930694260619,
"deaths_per_round": 0.6754602334255806,
"assists_per_round": 0.34067801708578993,
"first_kills_per_round": 0.08096197810131152,
"first_kill_success_rate": 0.47120098039215685,
"clutch_count": 1034,
"clutch_attempts": 6921,
"clutch_success_rate": 0.14940037566825604
},
{
"id": 19,
"agent": {
"id": 19,
"name": "Reyna"
},
"picks_count": 879,
"picks_rate": 0.03756731344559364,
"rounds_count": 18033,
"average_combat_score": 224.74064215604724,
"kd_ratio": 1.0766101694915253,
"kda_ratio": 1.3496798493408664,
"damage_per_round": 147.38867631564355,
"kills_per_round": 0.7925469971718516,
"deaths_per_round": 0.7361503909499252,
"assists_per_round": 0.20102035157766318,
"first_kills_per_round": 0.14894914878278712,
"first_kill_success_rate": 0.5051720895241678,
"clutch_count": 210,
"clutch_attempts": 1454,
"clutch_success_rate": 0.14442916093535077
},
{
"id": 20,
"agent": {
"id": 20,
"name": "omen"
},
"picks_count": 27605,
"picks_rate": 1.1798016924523465,
"rounds_count": 580260,
"average_combat_score": 187.61943783821044,
"kd_ratio": 0.9702418512143041,
"kda_ratio": 1.5508336824888818,
"damage_per_round": 120.84461965325889,
"kills_per_round": 0.6624685485816703,
"deaths_per_round": 0.6827870265053597,
"assists_per_round": 0.39642057008927034,
"first_kills_per_round": 0.07557301899148658,
"first_kill_success_rate": 0.4787597576286915,
"clutch_count": 9548,
"clutch_attempts": 69505,
"clutch_success_rate": 0.13737141212862383
},
{
"id": 21,
"agent": {
"id": 21,
"name": "jett"
},
"picks_count": 16912,
"picks_rate": 0.7227968202410462,
"rounds_count": 354738,
"average_combat_score": 227.62145583501064,
"kd_ratio": 1.1134018617578783,
"kda_ratio": 1.3188629146836641,
"damage_per_round": 146.3378549802953,
"kills_per_round": 0.8085375685717346,
"deaths_per_round": 0.726186650429331,
"assists_per_round": 0.14920307381785994,
"first_kills_per_round": 0.19604609599197154,
"first_kill_success_rate": 0.5344024712608348,
"clutch_count": 3790,
"clutch_attempts": 27552,
"clutch_success_rate": 0.13755807200929152
},
{
"id": 22,
"agent": {
"id": 22,
"name": "deadlock"
},
"picks_count": 1663,
"picks_rate": 0.07107445080776134,
"rounds_count": 34876,
"average_combat_score": 188.4655637114348,
"kd_ratio": 0.9720716280597995,
"kda_ratio": 1.3227369804501397,
"damage_per_round": 121.77807087968804,
"kills_per_round": 0.6786328707420576,
"deaths_per_round": 0.6981305195549948,
"assists_per_round": 0.24481018465420346,
"first_kills_per_round": 0.0771590778759032,
"first_kill_success_rate": 0.449323760227083,
"clutch_count": 559,
"clutch_attempts": 3780,
"clutch_success_rate": 0.1478835978835979
},
{
"id": 23,
"agent": {
"id": 23,
"name": "iso"
},
"picks_count": 1243,
"picks_rate": 0.05312419864945722,
"rounds_count": 25934,
"average_combat_score": 225.85625048199276,
"kd_ratio": 1.066742845270867,
"kda_ratio": 1.371007115774165,
"damage_per_round": 149.98685123775738,
"kills_per_round": 0.7919333693221254,
"deaths_per_round": 0.7423845145369014,
"assists_per_round": 0.22588108274851545,
"first_kills_per_round": 0.14320968612632065,
"first_kill_success_rate": 0.5262113913289884,
"clutch_count": 251,
"clutch_attempts": 1615,
"clutch_success_rate": 0.15541795665634675
},
{
"id": 24,
"agent": {
"id": 24,
"name": "clove"
},
"picks_count": 704,
"picks_rate": 0.03008804171296692,
"rounds_count": 14641,
"average_combat_score": 222.15934703913666,
"kd_ratio": 0.9520750988142292,
"kda_ratio": 1.3157938076416338,
"damage_per_round": 145.77610818933132,
"kills_per_round": 0.7897001570930947,
"deaths_per_round": 0.8294515401953418,
"assists_per_round": 0.3016870432347517,
"first_kills_per_round": 0.10504746943514787,
"first_kill_success_rate": 0.49951282884053266,
"clutch_count": 237,
"clutch_attempts": 1467,
"clutch_success_rate": 0.16155419222903886
},
{
"id": 25,
"agent": {
"id": 25,
"name": "vyse"
},
"picks_count": 4296,
"picks_rate": 0.18360543636208224,
"rounds_count": 90351,
"average_combat_score": 196.80413055749244,
"kd_ratio": 1.0188065863688822,
"kda_ratio": 1.3675330374993904,
"damage_per_round": 131.62798419497295,
"kills_per_round": 0.6937167269869731,
"deaths_per_round": 0.6809111133247003,
"assists_per_round": 0.2374517160850461,
"first_kills_per_round": 0.08374008035328884,
"first_kill_success_rate": 0.5039632318657163,
"clutch_count": 1596,
"clutch_attempts": 12374,
"clutch_success_rate": 0.1289801196056247
},
{
"id": 26,
"agent": {
"id": 26,
"name": "tejo"
},
"picks_count": 4214,
"picks_rate": 0.18010086332165143,
"rounds_count": 89116,
"average_combat_score": 188.09319314152341,
"kd_ratio": 0.9633882645873604,
"kda_ratio": 1.310618222324149,
"damage_per_round": 128.33088334305847,
"kills_per_round": 0.6599376094079626,
"deaths_per_round": 0.6850172808474349,
"assists_per_round": 0.23785852147762468,
"first_kills_per_round": 0.06869697921809775,
"first_kill_success_rate": 0.4945072697899838,
"clutch_count": 1645,
"clutch_attempts": 10997,
"clutch_success_rate": 0.14958625079567156
},
{
"id": 27,
"agent": {
"id": 27,
"name": "waylay"
},
"picks_count": 3661,
"picks_rate": 0.15646636464655098,
"rounds_count": 77212,
"average_combat_score": 210.65421178055226,
"kd_ratio": 1.0157748767863768,
"kda_ratio": 1.2822166086664664,
"damage_per_round": 135.45176915505363,
"kills_per_round": 0.744728798632337,
"deaths_per_round": 0.7331632388747863,
"assists_per_round": 0.195345283116614,
"first_kills_per_round": 0.1584209708335492,
"first_kill_success_rate": 0.5039344127219544,
"clutch_count": 825,
"clutch_attempts": 6127,
"clutch_success_rate": 0.13464991023339318
},
{
"id": 28,
"agent": {
"id": 28,
"name": "veto"
},
"picks_count": 395,
"picks_rate": 0.016881784767928884,
"rounds_count": 8348,
"average_combat_score": 199.30103018687112,
"kd_ratio": 1.0273224043715847,
"kda_ratio": 1.200136612021858,
"damage_per_round": 133.16854336367993,
"kills_per_round": 0.7206516530905606,
"deaths_per_round": 0.7014853857211308,
"assists_per_round": 0.12122664111164351,
"first_kills_per_round": 0.11104456157163392,
"first_kill_success_rate": 0.5085024684585847,
"clutch_count": 130,
"clutch_attempts": 948,
"clutch_success_rate": 0.1371308016877637
},
{
"id": 29,
"agent": {
"id": 29,
"name": "Miks"
},
"picks_count": 44,
"picks_rate": 0.0018805026070604326,
"rounds_count": 920,
"average_combat_score": 188.90434782608696,
"kd_ratio": 0.9488,
"kda_ratio": 1.7072,
"damage_per_round": 121.57282608695652,
"kills_per_round": 0.6445652173913043,
"deaths_per_round": 0.6793478260869565,
"assists_per_round": 0.5152173913043478,
"first_kills_per_round": 0.04456521739130435,
"first_kill_success_rate": 0.37272727272727274,
"clutch_count": 23,
"clutch_attempts": 111,
"clutch_success_rate": 0.2072072072072072
}
]
}
Player Transfers
List player transfers
Returns player and coach transfer history.
Minimum tier: ALL-STAR
curl "https://api.balldontlie.io/valorant/v1/player_transfers?per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/player_transfers?per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/player_transfers?per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 7,
"player": {
"id": 3860,
"nickname": "mazin",
"first_name": "Matheus",
"last_name": "Araújo"
},
"action_code": 3,
"action_date": "2023-08-30",
"from_team": {
"id": 1004,
"name": "FURIA",
"acronym": "FUR"
},
"to_team": null,
"is_coach": false
}
],
"meta": {
"next_cursor": 7,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
player_ids[] |
No | Filter by one or more player IDs. |
team_ids[] |
No | Filter by one or more source or destination team IDs. |
dates[] |
No | Filter by action dates in YYYY-MM-DD format. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Tournaments
List tournaments
Returns Valorant tournaments.
Minimum tier: ALL-STAR
curl "https://api.balldontlie.io/valorant/v1/tournaments?search=2026%20Americas%3A%20Last%20Chance%20Qualifier&per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/tournaments?search=2026%20Americas%3A%20Last%20Chance%20Qualifier&per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/tournaments?search=2026%20Americas%3A%20Last%20Chance%20Qualifier&per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 66170,
"slug": "valorant-challengers-2026-americas-last-chance-qualifier",
"name": "VALORANT Challengers 2026 Americas: Last Chance Qualifier",
"image_url": "https://files.bo3.gg/uploads/tournament/5970/image/webp-a6a4eb5911a0e823053c811148883260.webp",
"start_at": "2026-07-28T10:00:00.000Z",
"end_at": "2026-07-29T10:00:00.000Z",
"prize_pool": 0,
"event_type": "lan",
"status": "upcoming",
"region": {
"id": 1,
"name": "North America"
},
"series": {
"id": 1,
"name": "VCL"
}
}
],
"meta": {
"next_cursor": 66170,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
search |
No | Case-insensitive tournament-name search. |
region_ids[] |
No | Filter by one or more region IDs. |
series_ids[] |
No | Filter by one or more series IDs. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Tournament Stages
List tournament stages
Returns the stages for one tournament.
Minimum tier: ALL-STAR
curl "https://api.balldontlie.io/valorant/v1/tournament_stages?tournament_id=66170" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/tournament_stages?tournament_id=66170", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/tournament_stages?tournament_id=66170",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 4892,
"tournament_id": 66170,
"name": "VALORANT Challengers 2026 Americas: Last Chance Qualifier Group Stage",
"format": "group",
"status": "upcoming",
"start_at": "2026-07-28T19:00:00.000Z",
"end_at": "2026-07-29T04:00:00.000Z",
"sequence": 1,
"subgroup": 1,
"promotion_team_count": 2
},
{
"id": 4891,
"tournament_id": 66170,
"name": "VALORANT Challengers 2026 Americas: Last Chance Qualifier Playoffs",
"format": "playoff",
"status": "upcoming",
"start_at": "2026-07-28T19:00:00.000Z",
"end_at": "2026-07-29T22:00:00.000Z",
"sequence": 2,
"subgroup": 2,
"promotion_team_count": null
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
tournament_id |
Yes | Tournament ID. |
Tournament Teams
List tournament teams
Returns the teams participating in one tournament.
Minimum tier: ALL-STAR
curl "https://api.balldontlie.io/valorant/v1/tournament_teams?tournament_id=66170" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/tournament_teams?tournament_id=66170", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/tournament_teams?tournament_id=66170",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 42497,
"tournament_id": 66170,
"team": {
"id": 374,
"name": "Shopify Rebellion Black",
"acronym": "SR"
}
},
{
"id": 42498,
"tournament_id": 66170,
"team": {
"id": 2752,
"name": "2GAME Esports",
"acronym": null
}
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
tournament_id |
Yes | Tournament ID. |
Tournament Prizes
List tournament prizes
Returns placements and prizes for one tournament.
Minimum tier: ALL-STAR
curl "https://api.balldontlie.io/valorant/v1/tournament_prizes?tournament_id=66170" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/tournament_prizes?tournament_id=66170", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/tournament_prizes?tournament_id=66170",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 23921,
"tournament_id": 66170,
"team": null,
"placement": "1st",
"money": null,
"points": null,
"club_money": null,
"qualification_tournament": {
"id": 623,
"name": "VCT 2026: Americas Stage 2"
}
},
{
"id": 23922,
"tournament_id": 66170,
"team": null,
"placement": "2nd",
"money": null,
"points": null,
"club_money": null,
"qualification_tournament": null
},
{
"id": 23923,
"tournament_id": 66170,
"team": null,
"placement": "3rd",
"money": null,
"points": null,
"club_money": null,
"qualification_tournament": null
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
tournament_id |
Yes | Tournament ID. |
Tournament Roster
List a tournament roster
Returns players and coaches registered for one tournament.
Minimum tier: ALL-STAR
curl "https://api.balldontlie.io/valorant/v1/tournament_roster?tournament_id=66170" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/tournament_roster?tournament_id=66170", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/tournament_roster?tournament_id=66170",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 118612,
"tournament_id": 66170,
"team": {
"id": 374,
"name": "Shopify Rebellion Black",
"acronym": "SR"
},
"player": {
"id": 587,
"nickname": "satellite",
"first_name": "Derrick",
"last_name": "Xu"
},
"is_coach": false,
"money": null
},
{
"id": 118613,
"tournament_id": 66170,
"team": {
"id": 374,
"name": "Shopify Rebellion Black",
"acronym": "SR"
},
"player": {
"id": 598,
"nickname": "Smoke",
"first_name": null,
"last_name": null
},
"is_coach": false,
"money": null
},
{
"id": 118614,
"tournament_id": 66170,
"team": {
"id": 374,
"name": "Shopify Rebellion Black",
"acronym": "SR"
},
"player": {
"id": 2957,
"nickname": "Zander",
"first_name": "Alexander",
"last_name": "Dituri"
},
"is_coach": false,
"money": null
},
{
"id": 118615,
"tournament_id": 66170,
"team": {
"id": 374,
"name": "Shopify Rebellion Black",
"acronym": "SR"
},
"player": {
"id": 3631,
"nickname": "effys",
"first_name": "Loic",
"last_name": "Sauvageau"
},
"is_coach": true,
"money": null
},
{
"id": 118616,
"tournament_id": 66170,
"team": {
"id": 374,
"name": "Shopify Rebellion Black",
"acronym": "SR"
},
"player": {
"id": 15465,
"nickname": "NaturE",
"first_name": "Nicholas",
"last_name": "Garrison"
},
"is_coach": false,
"money": null
},
{
"id": 118617,
"tournament_id": 66170,
"team": {
"id": 374,
"name": "Shopify Rebellion Black",
"acronym": "SR"
},
"player": {
"id": 9335,
"nickname": "exa",
"first_name": "Kim",
"last_name": "Lee-hwan"
},
"is_coach": false,
"money": null
},
{
"id": 118618,
"tournament_id": 66170,
"team": {
"id": 2752,
"name": "2GAME Esports",
"acronym": null
},
"player": {
"id": 14171,
"nickname": "xenom",
"first_name": "Eduardo",
"last_name": "Soeiro"
},
"is_coach": false,
"money": null
},
{
"id": 118619,
"tournament_id": 66170,
"team": {
"id": 2752,
"name": "2GAME Esports",
"acronym": null
},
"player": {
"id": 1239,
"nickname": "goberA",
"first_name": "Vitor",
"last_name": "Gobo"
},
"is_coach": false,
"money": null
},
{
"id": 118620,
"tournament_id": 66170,
"team": {
"id": 2752,
"name": "2GAME Esports",
"acronym": null
},
"player": {
"id": 2722,
"nickname": "Brinks",
"first_name": "João",
"last_name": "Victor"
},
"is_coach": false,
"money": null
},
{
"id": 118621,
"tournament_id": 66170,
"team": {
"id": 2752,
"name": "2GAME Esports",
"acronym": null
},
"player": {
"id": 15428,
"nickname": "ambitioN",
"first_name": "Gabriel",
"last_name": "Lima"
},
"is_coach": false,
"money": null
},
{
"id": 118622,
"tournament_id": 66170,
"team": {
"id": 2752,
"name": "2GAME Esports",
"acronym": null
},
"player": {
"id": 3917,
"nickname": "gaabx",
"first_name": "Gabriel",
"last_name": "Carli"
},
"is_coach": true,
"money": null
},
{
"id": 118623,
"tournament_id": 66170,
"team": {
"id": 2752,
"name": "2GAME Esports",
"acronym": null
},
"player": {
"id": 3933,
"nickname": "frz",
"first_name": "Leandro",
"last_name": "Gomes"
},
"is_coach": false,
"money": null
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
tournament_id |
Yes | Tournament ID. |
team_id |
No | Optional team ID. |
Matches
List matches
Returns scheduled, current, and completed Valorant matches.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/matches?team_ids%5B%5D=1734&dates%5B%5D=2026-07-22&per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/matches?team_ids%5B%5D=1734&dates%5B%5D=2026-07-22&per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/matches?team_ids%5B%5D=1734&dates%5B%5D=2026-07-22&per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 180,
"slug": "twisted-minds-orchid-vs-alternate-attax-ruby-22-07-2026",
"tournament": {
"id": 659,
"name": "VCT 2026: Game Changers EMEA Stage 3"
},
"stage": {
"id": 1171,
"name": "VCT 2026: Game Changers EMEA Stage 3 Group Stage"
},
"start_at": "2026-07-22T18:15:00.000Z",
"end_at": "2026-07-22T19:40:48.000Z",
"status": "finished",
"team1": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"team2": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"team1_score": 2,
"team2_score": 0,
"position": null,
"points": null,
"live_coverage": false,
"live_updates": null
}
],
"meta": {
"next_cursor": 180,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
team_ids[] |
No | Filter by one or more participating team IDs. |
tournament_ids[] |
No | Filter by one or more tournament IDs. |
dates[] |
No | Filter by match dates in YYYY-MM-DD format. |
statuses[] |
No | Filter by one or more match statuses. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Match Maps
List maps for a match
Returns the individual maps played in one match.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/match_maps?match_id=180" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/match_maps?match_id=180", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/match_maps?match_id=180",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 521,
"match_id": 180,
"map": {
"id": 14,
"name": "Sunset"
},
"game_number": 1,
"begin_at": "2026-07-22T18:16:23.000Z",
"status": "finished",
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"winner_score": 13,
"loser_score": 9,
"overtime_count": 0
},
{
"id": 522,
"match_id": 180,
"map": {
"id": 6,
"name": "Lotus"
},
"game_number": 2,
"begin_at": "2026-07-22T19:10:23.000Z",
"status": "finished",
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"winner_score": 13,
"loser_score": 3,
"overtime_count": 0
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
match_id |
Yes | Match ID. |
Live Matches
List live match snapshots
Returns the latest available live snapshot for current matches, including player state. The collection is empty when no matching live snapshot is available.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/live_matches?match_ids%5B%5D=170" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/live_matches?match_ids%5B%5D=170", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/live_matches?match_ids%5B%5D=170",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 760,
"match": {
"id": 170,
"slug": "eternal-fire-1-vs-team-heretics-23-07-2026",
"tournament": {
"id": 628,
"name": "VCT 2026: EMEA Stage 2"
},
"stage": {
"id": 1170,
"name": "VCT 2026: EMEA Stage 2 Group Omega"
},
"start_at": "2026-07-23T15:00:00.000Z",
"end_at": null,
"status": "current",
"team1": {
"id": 652,
"name": "Eternal Fire",
"acronym": "EF"
},
"team2": {
"id": 954,
"name": "Team Heretics",
"acronym": "TH"
},
"winner": null,
"loser": null,
"team1_score": 0,
"team2_score": 1,
"position": null,
"points": null,
"live_coverage": true,
"live_updates": true
},
"current_match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"current_game_number": 2,
"current_round": 13,
"status": "finished",
"phase": "FINISHED",
"team1_score": 0,
"team2_score": 13,
"snapshot_at": "2026-07-23T16:51:26.201Z",
"players": [
{
"id": 7341,
"player": {
"id": 932,
"nickname": "benjyfishy",
"first_name": "Benjy",
"last_name": "Fish"
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 954,
"name": "Team Heretics",
"acronym": "TH"
},
"agent": {
"id": 25,
"name": "vyse"
},
"side": "DEFENDER",
"is_alive": true,
"health": 100,
"armor": 25,
"total_kills": 15,
"round_kills": 0,
"total_deaths": 6,
"round_deaths": 0,
"total_damage": 1536,
"round_damage": 0,
"total_assists": 7,
"round_assists": 0,
"average_damage_per_round": 128,
"opening_kills": 1,
"opening_deaths": 0,
"multikills": 4,
"clutches": 0,
"balance": 50,
"equipment_value": 800,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": {
"id": 4,
"name": "Classic",
"category": "Sidearm"
},
"snapshot_at": "2026-07-23T16:51:26.201Z"
},
{
"id": 7342,
"player": {
"id": 2364,
"nickname": "Wo0t",
"first_name": "Mert",
"last_name": "Alkan"
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 954,
"name": "Team Heretics",
"acronym": "TH"
},
"agent": {
"id": 5,
"name": "chamber"
},
"side": "DEFENDER",
"is_alive": true,
"health": 100,
"armor": 0,
"total_kills": 11,
"round_kills": 0,
"total_deaths": 5,
"round_deaths": 0,
"total_damage": 1750,
"round_damage": 0,
"total_assists": 4,
"round_assists": 0,
"average_damage_per_round": 145,
"opening_kills": 3,
"opening_deaths": 1,
"multikills": 4,
"clutches": 0,
"balance": 0,
"equipment_value": 600,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": {
"id": 4,
"name": "Classic",
"category": "Sidearm"
},
"snapshot_at": "2026-07-23T16:51:26.201Z"
},
{
"id": 7343,
"player": {
"id": 3012,
"nickname": "nekky",
"first_name": "Anıl",
"last_name": "Dağdeviren"
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 652,
"name": "Eternal Fire",
"acronym": "EF"
},
"agent": {
"id": 2,
"name": "fade"
},
"side": "ATTACKER",
"is_alive": false,
"health": 0,
"armor": 0,
"total_kills": 3,
"round_kills": 0,
"total_deaths": 11,
"round_deaths": 1,
"total_damage": 854,
"round_damage": 0,
"total_assists": 4,
"round_assists": 0,
"average_damage_per_round": 71,
"opening_kills": 0,
"opening_deaths": 1,
"multikills": 0,
"clutches": 0,
"balance": 50,
"equipment_value": 0,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": null,
"snapshot_at": "2026-07-23T16:51:26.201Z"
},
{
"id": 7344,
"player": {
"id": 3581,
"nickname": "RieNs",
"first_name": "Enes",
"last_name": "Ecirli"
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 954,
"name": "Team Heretics",
"acronym": "TH"
},
"agent": {
"id": 2,
"name": "fade"
},
"side": "DEFENDER",
"is_alive": true,
"health": 7,
"armor": 0,
"total_kills": 18,
"round_kills": 3,
"total_deaths": 2,
"round_deaths": 0,
"total_damage": 2169,
"round_damage": 240,
"total_assists": 7,
"round_assists": 0,
"average_damage_per_round": 160,
"opening_kills": 1,
"opening_deaths": 1,
"multikills": 6,
"clutches": 0,
"balance": 0,
"equipment_value": 600,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": {
"id": 231869,
"name": "Bandit",
"category": "Sidearm"
},
"snapshot_at": "2026-07-23T16:51:26.201Z"
},
{
"id": 7345,
"player": {
"id": 8077,
"nickname": "Boo",
"first_name": "Ričardas",
"last_name": "Lukaševičius"
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 954,
"name": "Team Heretics",
"acronym": "TH"
},
"agent": {
"id": 20,
"name": "omen"
},
"side": "DEFENDER",
"is_alive": true,
"health": 40,
"armor": 0,
"total_kills": 7,
"round_kills": 1,
"total_deaths": 6,
"round_deaths": 0,
"total_damage": 1010,
"round_damage": 160,
"total_assists": 8,
"round_assists": 3,
"average_damage_per_round": 70,
"opening_kills": 0,
"opening_deaths": 1,
"multikills": 1,
"clutches": 1,
"balance": 50,
"equipment_value": 500,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": {
"id": 5,
"name": "Ghost",
"category": "Sidearm"
},
"snapshot_at": "2026-07-23T16:51:26.201Z"
},
{
"id": 7346,
"player": {
"id": 8466,
"nickname": "audaz",
"first_name": "Soner",
"last_name": "Ekiz"
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 652,
"name": "Eternal Fire",
"acronym": "EF"
},
"agent": {
"id": 20,
"name": "omen"
},
"side": "ATTACKER",
"is_alive": false,
"health": 0,
"armor": 0,
"total_kills": 3,
"round_kills": 0,
"total_deaths": 12,
"round_deaths": 1,
"total_damage": 683,
"round_damage": 0,
"total_assists": 5,
"round_assists": 0,
"average_damage_per_round": 56,
"opening_kills": 1,
"opening_deaths": 1,
"multikills": 0,
"clutches": 0,
"balance": 0,
"equipment_value": 400,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": null,
"snapshot_at": "2026-07-23T16:51:26.201Z"
},
{
"id": 7347,
"player": {
"id": 10531,
"nickname": "Spear",
"first_name": "Arda",
"last_name": "Burak Kartal"
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 652,
"name": "Eternal Fire",
"acronym": "EF"
},
"agent": {
"id": 16,
"name": "neon"
},
"side": "ATTACKER",
"is_alive": false,
"health": 0,
"armor": 0,
"total_kills": 3,
"round_kills": 0,
"total_deaths": 13,
"round_deaths": 1,
"total_damage": 650,
"round_damage": 0,
"total_assists": 2,
"round_assists": 0,
"average_damage_per_round": 54,
"opening_kills": 0,
"opening_deaths": 4,
"multikills": 1,
"clutches": 0,
"balance": 100,
"equipment_value": 0,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": null,
"snapshot_at": "2026-07-23T16:51:26.201Z"
},
{
"id": 7348,
"player": {
"id": 10568,
"nickname": "Favian",
"first_name": "Enes",
"last_name": "Yiğiter"
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 652,
"name": "Eternal Fire",
"acronym": "EF"
},
"agent": {
"id": 13,
"name": "phoenix"
},
"side": "ATTACKER",
"is_alive": false,
"health": 0,
"armor": 0,
"total_kills": 11,
"round_kills": 1,
"total_deaths": 13,
"round_deaths": 1,
"total_damage": 1803,
"round_damage": 187,
"total_assists": 2,
"round_assists": 0,
"average_damage_per_round": 134,
"opening_kills": 0,
"opening_deaths": 1,
"multikills": 2,
"clutches": 0,
"balance": 50,
"equipment_value": 250,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": null,
"snapshot_at": "2026-07-23T16:51:26.201Z"
},
{
"id": 7349,
"player": {
"id": 11464,
"nickname": "ech0",
"first_name": null,
"last_name": null
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 652,
"name": "Eternal Fire",
"acronym": "EF"
},
"agent": {
"id": 8,
"name": "cypher"
},
"side": "ATTACKER",
"is_alive": false,
"health": 0,
"armor": 0,
"total_kills": 7,
"round_kills": 0,
"total_deaths": 13,
"round_deaths": 1,
"total_damage": 1183,
"round_damage": 90,
"total_assists": 2,
"round_assists": 0,
"average_damage_per_round": 91,
"opening_kills": 3,
"opening_deaths": 1,
"multikills": 0,
"clutches": 0,
"balance": 0,
"equipment_value": 0,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": null,
"snapshot_at": "2026-07-23T16:51:26.201Z"
},
{
"id": 7350,
"player": {
"id": 12769,
"nickname": "Koshmaras",
"first_name": "Martynas",
"last_name": "Namikas"
},
"match_map": {
"id": 495,
"match_id": 170,
"game_number": 2,
"map": null
},
"team": {
"id": 954,
"name": "Team Heretics",
"acronym": "TH"
},
"agent": {
"id": 16,
"name": "neon"
},
"side": "DEFENDER",
"is_alive": false,
"health": 0,
"armor": 0,
"total_kills": 11,
"round_kills": 1,
"total_deaths": 8,
"round_deaths": 1,
"total_damage": 1346,
"round_damage": 125,
"total_assists": 4,
"round_assists": 1,
"average_damage_per_round": 101,
"opening_kills": 3,
"opening_deaths": 1,
"multikills": 2,
"clutches": 0,
"balance": 200,
"equipment_value": 400,
"has_spike": false,
"primary_weapon": null,
"secondary_weapon": null,
"snapshot_at": "2026-07-23T16:51:26.201Z"
}
]
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
match_ids[] |
No | Filter by one or more match IDs. |
Player Overall Stats
List aggregate player statistics
Returns career aggregate statistics for competitive player profiles.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/player_overall_stats?per_page=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/player_overall_stats?per_page=1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/player_overall_stats?per_page=1",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 1,
"profile": {
"id": 1,
"game_name": "WLG Maggos",
"tag_line": "eProd"
},
"player": {
"id": 26,
"nickname": "Maggos",
"first_name": "Dimitris",
"last_name": "Maggos"
},
"games_count": 13,
"rounds_count": 262,
"total_combat_score": 40885,
"average_combat_score": 156.04961832061068,
"total_kills": 150,
"average_kills": 0.5725190839694656,
"total_deaths": 164,
"average_deaths": 0.6259541984732825,
"total_damage": 26357,
"average_damage": 100.59923664122137,
"total_assists": 109,
"average_assists": 0.41603053435114506,
"total_first_kills": 16,
"average_first_kills": 0.061068702290076333,
"total_first_deaths": 18,
"average_first_deaths": 0.06870229007633588,
"first_duel_rate": 0.1297709923664122,
"first_duel_success_rate": 0.47058823529411764,
"total_trade_kills": 29,
"average_trade_kills": 0.11068702290076336,
"total_trade_deaths": 36,
"average_trade_deaths": 0.13740458015267176,
"total_head_shots": 116,
"average_head_shots": 0.44274809160305345,
"head_shot_accuracy": 0.30687830687830686,
"total_body_shots": 249,
"average_body_shots": 0.950381679389313,
"body_shot_accuracy": 0.6587301587301587,
"total_leg_shots": 13,
"average_leg_shots": 0.04961832061068702,
"leg_shot_accuracy": 0.03439153439153439,
"multikills_2": 19,
"multikills_3": 9,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 4,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_success_rate": 0.1111111111111111,
"clutch_1_success_rate": 0.5714285714285714,
"clutch_2_success_rate": 0,
"clutch_3_success_rate": 0,
"clutch_4_success_rate": 0,
"clutch_5_success_rate": 0,
"total_loadout_value": 932350,
"average_loadout_value": 3558.587786259542,
"average_kill_cost": 6215.666666666667,
"average_100_damage_cost": 3537.390446560686
}
],
"meta": {
"next_cursor": 1,
"per_page": 1
}
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
player_ids[] |
No | Filter by one or more player IDs. |
cursor |
No | Cursor from the previous response's meta.next_cursor value. |
per_page |
No | Maximum number of results to return. Defaults to 25; maximum 100. |
Player Match Stats
List player statistics for a match
Returns finalized aggregate player statistics for one completed match.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/player_match_stats?match_id=180&player_ids%5B%5D=109" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/player_match_stats?match_id=180&player_ids%5B%5D=109", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/player_match_stats?match_id=180&player_ids%5B%5D=109",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 104637,
"match_id": 180,
"profile": null,
"player": {
"id": 109,
"nickname": "Karina",
"first_name": "Karina",
"last_name": "Wurm"
},
"team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"game_name": "ATN Karina",
"selected_agents": [
{
"id": 12,
"name": "viper"
},
{
"id": 25,
"name": "vyse"
}
],
"selected_maps": [
{
"id": 6,
"name": "Lotus"
},
{
"id": 14,
"name": "Sunset"
}
],
"maps_played": 2,
"rounds_count": 38,
"total_combat_score": 6421,
"average_combat_score": 168.97368421052633,
"total_kills": 22,
"average_kills": 0.5789473684210527,
"total_deaths": 34,
"average_deaths": 0.8947368421052632,
"total_damage": 4428,
"average_damage": 116.52631578947368,
"total_assists": 5,
"average_assists": 0.13157894736842105,
"total_first_kills": 2,
"average_first_kills": 0.05263157894736842,
"total_first_deaths": 7,
"average_first_deaths": 0.18421052631578946,
"first_duel_rate": 0.23684210526315788,
"first_duel_success_rate": 0.2222222222222222,
"total_trade_kills": 2,
"average_trade_kills": 0.05263157894736842,
"total_trade_deaths": 2,
"average_trade_deaths": 0.05263157894736842,
"total_head_shots": 21,
"average_head_shots": 0.5526315789473685,
"head_shot_accuracy": 0.375,
"total_body_shots": 30,
"average_body_shots": 0.7894736842105263,
"body_shot_accuracy": 0.5357142857142857,
"total_leg_shots": 5,
"average_leg_shots": 0.13157894736842105,
"leg_shot_accuracy": 0.08928571428571429,
"multikills_2": 3,
"multikills_3": 2,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_success_rate": 0,
"clutch_1_success_rate": 0,
"clutch_2_success_rate": null,
"clutch_3_success_rate": 0,
"clutch_4_success_rate": 0,
"clutch_5_success_rate": 0,
"total_loadout_value": 111800,
"average_loadout_value": 2942.1052631578946,
"average_kill_cost": 5081.818181818182,
"average_100_damage_cost": 2524.8419150858176
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
match_id |
Yes | Match ID. |
player_ids[] |
No | Filter by one or more player IDs. |
Player Match Map Stats
List player statistics for a match map
Returns player statistics for one match map. Live snapshots have is_final=false and snapshot_at populated; finalized rows have is_final=true.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/player_match_map_stats?match_map_id=521&player_ids%5B%5D=109" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/player_match_map_stats?match_map_id=521&player_ids%5B%5D=109", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/player_match_map_stats?match_map_id=521&player_ids%5B%5D=109",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 234042,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"profile": {
"id": 3336,
"game_name": "ATN Karina",
"tag_line": "epval"
},
"player": {
"id": 109,
"nickname": "Karina",
"first_name": "Karina",
"last_name": "Wurm"
},
"agent": {
"id": 12,
"name": "viper"
},
"team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"enemy_team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"rounds_count": 22,
"wins": 0,
"rating": 0,
"combat_score": 3352,
"side": null,
"kills": 11,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 19,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 5,
"leg_shots": 2,
"body_shots": 18,
"head_shots": 11,
"first_kills": 0,
"first_deaths": 5,
"trade_kills": 1,
"trade_deaths": 2,
"damage": 2498,
"damage_received": 3422,
"plants": 0,
"defuses": 0,
"money_spent": 55200,
"money_remaining": 34150,
"loadout_value": 69100,
"multikills_2": 2,
"multikills_3": 1,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 1,
"clutch_attempts_2": 0,
"clutch_attempts_3": 1,
"clutch_attempts_4": 1,
"clutch_attempts_5": 0,
"grenade_casts": 6,
"ability1_casts": 14,
"ability2_casts": 22,
"ultimate_casts": 2,
"fair_kills": 11,
"fair_assists": 5,
"fair_damage": 2498,
"average_damage_per_round": null,
"multikills": null,
"clutches": null,
"balance": null,
"equipment_value": null
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
match_map_id |
Yes | Match-map ID. |
player_ids[] |
No | Filter by one or more player IDs. |
Rounds
List rounds for a match map
Returns rounds for one match map. Live snapshots have is_final=false and snapshot_at populated; finalized rows have is_final=true.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/rounds?match_map_id=521" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/rounds?match_map_id=521", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/rounds?match_map_id=521",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 491305,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 1,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 0,
"loser_score": 1,
"duration_ms": 57684,
"is_overtime": false,
"is_pistol": true,
"winner": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"loser": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
}
},
{
"id": 491306,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 2,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 0,
"loser_side_code": 1,
"winner_score": 1,
"loser_score": 1,
"duration_ms": 54171,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491307,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 3,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 0,
"loser_side_code": 1,
"winner_score": 2,
"loser_score": 1,
"duration_ms": 86540,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491308,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 4,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 2,
"loser_score": 2,
"duration_ms": 56681,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"loser": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
}
},
{
"id": 491309,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 5,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 0,
"loser_side_code": 1,
"winner_score": 3,
"loser_score": 2,
"duration_ms": 120927,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491310,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 6,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 3,
"loser_score": 3,
"duration_ms": 30207,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"loser": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
}
},
{
"id": 491311,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 7,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 3,
"loser_score": 4,
"duration_ms": 99244,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"loser": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
}
},
{
"id": 491312,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 8,
"winner_side": null,
"win_reason": null,
"result_code": 2,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 3,
"loser_score": 5,
"duration_ms": 98080,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"loser": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
}
},
{
"id": 491313,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 9,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 0,
"loser_side_code": 1,
"winner_score": 4,
"loser_score": 5,
"duration_ms": 53381,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491314,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 10,
"winner_side": null,
"win_reason": null,
"result_code": 2,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 4,
"loser_score": 6,
"duration_ms": 71391,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"loser": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
}
},
{
"id": 491315,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 11,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 0,
"loser_side_code": 1,
"winner_score": 5,
"loser_score": 6,
"duration_ms": 56589,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491316,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 12,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 5,
"loser_score": 7,
"duration_ms": 71310,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"loser": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
}
},
{
"id": 491317,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 13,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 6,
"loser_score": 7,
"duration_ms": 59780,
"is_overtime": false,
"is_pistol": true,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491318,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 14,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 7,
"loser_score": 7,
"duration_ms": 65220,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491319,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 15,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 8,
"loser_score": 7,
"duration_ms": 45009,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491320,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 16,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 9,
"loser_score": 7,
"duration_ms": 52475,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491321,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 17,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 0,
"loser_side_code": 1,
"winner_score": 9,
"loser_score": 8,
"duration_ms": 82715,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"loser": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
}
},
{
"id": 491322,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 18,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 0,
"loser_side_code": 1,
"winner_score": 9,
"loser_score": 9,
"duration_ms": 93930,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"loser": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
}
},
{
"id": 491323,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 19,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 10,
"loser_score": 9,
"duration_ms": 47862,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491324,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 20,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 11,
"loser_score": 9,
"duration_ms": 78491,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491325,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 21,
"winner_side": null,
"win_reason": null,
"result_code": 1,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 12,
"loser_score": 9,
"duration_ms": 47853,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
},
{
"id": 491326,
"match_map_id": 521,
"is_final": true,
"snapshot_at": null,
"round_number": 22,
"winner_side": null,
"win_reason": null,
"result_code": 2,
"winner_side_code": 1,
"loser_side_code": 0,
"winner_score": 13,
"loser_score": 9,
"duration_ms": 100235,
"is_overtime": false,
"is_pistol": false,
"winner": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"loser": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
}
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
match_map_id |
Yes | Match-map ID. |
Player Round Stats
List player statistics for a round
Returns finalized player statistics for one round.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/player_round_stats?round_id=491305" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/player_round_stats?round_id=491305", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/player_round_stats?round_id=491305",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 4912521,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 58418,
"game_name": null,
"tag_line": null
},
"player": {
"id": 1062,
"nickname": "Blossi",
"first_name": "Evi",
"last_name": "Sutter"
},
"agent": {
"id": 11,
"name": "harbor"
},
"weapon": {
"id": 5,
"name": "Ghost",
"category": "Sidearm"
},
"team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"enemy_team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"round_number": 1,
"side_code": 1,
"is_overtime": false,
"is_pistol": true,
"win": true,
"game_win": false,
"rating_value": 0,
"combat_score": 71,
"economy_level": -1,
"average_enemy_loadout_value": 830,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 71,
"cumulative_kills": 1,
"cumulative_deaths": 0,
"cumulative_assists": 0,
"cumulative_damage": 30,
"cumulative_wins": 1,
"kills": 1,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 0,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 0,
"leg_shots": 0,
"body_shots": 1,
"head_shots": 0,
"first_kills": 0,
"first_deaths": 0,
"trade_kills": 0,
"trade_deaths": 0,
"damage": 30,
"damage_received": 0,
"plants": 0,
"defuses": 0,
"money_spent": 800,
"money_remaining": 0,
"loadout_value": 800,
"multikills_2": 0,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 1,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 1,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 1,
"fair_assists": 0,
"fair_damage": 30
},
{
"id": 4912522,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 3412,
"game_name": "TWIS ness2",
"tag_line": "epval"
},
"player": {
"id": 1768,
"nickname": "ness",
"first_name": "Neslişah",
"last_name": "Demir"
},
"agent": {
"id": 3,
"name": "Breach"
},
"weapon": {
"id": 4,
"name": "Classic",
"category": "Sidearm"
},
"team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"enemy_team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"round_number": 1,
"side_code": 0,
"is_overtime": false,
"is_pistol": true,
"win": false,
"game_win": true,
"rating_value": 0,
"combat_score": 230,
"economy_level": -1,
"average_enemy_loadout_value": 730,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 230,
"cumulative_kills": 1,
"cumulative_deaths": 1,
"cumulative_assists": 0,
"cumulative_damage": 104,
"cumulative_wins": 0,
"kills": 1,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 1,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 0,
"leg_shots": 0,
"body_shots": 1,
"head_shots": 1,
"first_kills": 0,
"first_deaths": 0,
"trade_kills": 0,
"trade_deaths": 1,
"damage": 104,
"damage_received": 195,
"plants": 0,
"defuses": 0,
"money_spent": 700,
"money_remaining": 100,
"loadout_value": 700,
"multikills_2": 0,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 1,
"fair_assists": 0,
"fair_damage": 104
},
{
"id": 4912523,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 3413,
"game_name": "TWIS grahams",
"tag_line": "epval"
},
"player": {
"id": 8829,
"nickname": "grahams",
"first_name": "Leanne",
"last_name": "Ti-in"
},
"agent": {
"id": 20,
"name": "omen"
},
"weapon": {
"id": 4,
"name": "Classic",
"category": "Sidearm"
},
"team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"enemy_team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"round_number": 1,
"side_code": 0,
"is_overtime": false,
"is_pistol": true,
"win": false,
"game_win": true,
"rating_value": 0,
"combat_score": 26,
"economy_level": -1,
"average_enemy_loadout_value": 730,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 26,
"cumulative_kills": 0,
"cumulative_deaths": 1,
"cumulative_assists": 0,
"cumulative_damage": 26,
"cumulative_wins": 0,
"kills": 0,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 1,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 0,
"leg_shots": 0,
"body_shots": 1,
"head_shots": 0,
"first_kills": 0,
"first_deaths": 0,
"trade_kills": 0,
"trade_deaths": 1,
"damage": 26,
"damage_received": 115,
"plants": 0,
"defuses": 0,
"money_spent": 600,
"money_remaining": 200,
"loadout_value": 750,
"multikills_2": 0,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 0,
"fair_assists": 0,
"fair_damage": 26
},
{
"id": 4912524,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 3332,
"game_name": "ATN PuriTy",
"tag_line": "epval"
},
"player": {
"id": 9002,
"nickname": "PuriTy",
"first_name": "Millie",
"last_name": "Lopez"
},
"agent": {
"id": 13,
"name": "phoenix"
},
"weapon": {
"id": 4,
"name": "Classic",
"category": "Sidearm"
},
"team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"enemy_team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"round_number": 1,
"side_code": 1,
"is_overtime": false,
"is_pistol": true,
"win": true,
"game_win": false,
"rating_value": 0,
"combat_score": 555,
"economy_level": 0,
"average_enemy_loadout_value": 830,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 555,
"cumulative_kills": 2,
"cumulative_deaths": 1,
"cumulative_assists": 0,
"cumulative_damage": 297,
"cumulative_wins": 1,
"kills": 2,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 1,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 0,
"leg_shots": 0,
"body_shots": 3,
"head_shots": 3,
"first_kills": 1,
"first_deaths": 0,
"trade_kills": 0,
"trade_deaths": 1,
"damage": 297,
"damage_received": 146,
"plants": 0,
"defuses": 0,
"money_spent": 800,
"money_remaining": 0,
"loadout_value": 1050,
"multikills_2": 1,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 2,
"fair_assists": 0,
"fair_damage": 297
},
{
"id": 4912525,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 3410,
"game_name": "TWIS sarah",
"tag_line": "epval"
},
"player": {
"id": 1742,
"nickname": "sarah",
"first_name": "Sarah",
"last_name": "Ahmed"
},
"agent": {
"id": 8,
"name": "cypher"
},
"weapon": {
"id": 5,
"name": "Ghost",
"category": "Sidearm"
},
"team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"enemy_team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"round_number": 1,
"side_code": 0,
"is_overtime": false,
"is_pistol": true,
"win": false,
"game_win": true,
"rating_value": 0,
"combat_score": 450,
"economy_level": -1,
"average_enemy_loadout_value": 730,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 450,
"cumulative_kills": 2,
"cumulative_deaths": 1,
"cumulative_assists": 0,
"cumulative_damage": 245,
"cumulative_wins": 0,
"kills": 2,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 1,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 0,
"leg_shots": 0,
"body_shots": 2,
"head_shots": 2,
"first_kills": 0,
"first_deaths": 0,
"trade_kills": 1,
"trade_deaths": 0,
"damage": 245,
"damage_received": 128,
"plants": 0,
"defuses": 0,
"money_spent": 800,
"money_remaining": 0,
"loadout_value": 600,
"multikills_2": 1,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 1,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 2,
"fair_assists": 0,
"fair_damage": 245
},
{
"id": 4912526,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 77023,
"game_name": null,
"tag_line": null
},
"player": {
"id": 8057,
"nickname": "Leen",
"first_name": "Leen",
"last_name": "Alanazi"
},
"agent": {
"id": 27,
"name": "waylay"
},
"weapon": {
"id": 5,
"name": "Ghost",
"category": "Sidearm"
},
"team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"enemy_team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"round_number": 1,
"side_code": 0,
"is_overtime": false,
"is_pistol": true,
"win": false,
"game_win": true,
"rating_value": 0,
"combat_score": 249,
"economy_level": -1,
"average_enemy_loadout_value": 730,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 249,
"cumulative_kills": 1,
"cumulative_deaths": 1,
"cumulative_assists": 0,
"cumulative_damage": 120,
"cumulative_wins": 0,
"kills": 1,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 1,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 0,
"leg_shots": 0,
"body_shots": 4,
"head_shots": 0,
"first_kills": 0,
"first_deaths": 0,
"trade_kills": 0,
"trade_deaths": 1,
"damage": 120,
"damage_received": 131,
"plants": 0,
"defuses": 0,
"money_spent": 800,
"money_remaining": 0,
"loadout_value": 800,
"multikills_2": 0,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 1,
"fair_assists": 0,
"fair_damage": 120
},
{
"id": 4912527,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 3336,
"game_name": "ATN Karina",
"tag_line": "epval"
},
"player": {
"id": 109,
"nickname": "Karina",
"first_name": "Karina",
"last_name": "Wurm"
},
"agent": {
"id": 12,
"name": "viper"
},
"weapon": {
"id": 5,
"name": "Ghost",
"category": "Sidearm"
},
"team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"enemy_team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"round_number": 1,
"side_code": 1,
"is_overtime": false,
"is_pistol": true,
"win": true,
"game_win": false,
"rating_value": 0,
"combat_score": 98,
"economy_level": -1,
"average_enemy_loadout_value": 830,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 98,
"cumulative_kills": 0,
"cumulative_deaths": 1,
"cumulative_assists": 1,
"cumulative_damage": 98,
"cumulative_wins": 1,
"kills": 0,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 1,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 1,
"leg_shots": 1,
"body_shots": 3,
"head_shots": 0,
"first_kills": 0,
"first_deaths": 0,
"trade_kills": 0,
"trade_deaths": 0,
"damage": 98,
"damage_received": 135,
"plants": 0,
"defuses": 0,
"money_spent": 800,
"money_remaining": 0,
"loadout_value": 800,
"multikills_2": 0,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 0,
"fair_assists": 1,
"fair_damage": 98
},
{
"id": 4912528,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 3335,
"game_name": "ATN caelia",
"tag_line": "epval"
},
"player": {
"id": 10658,
"nickname": "caelia",
"first_name": null,
"last_name": null
},
"agent": {
"id": 16,
"name": "neon"
},
"weapon": {
"id": 5,
"name": "Ghost",
"category": "Sidearm"
},
"team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"enemy_team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"round_number": 1,
"side_code": 1,
"is_overtime": false,
"is_pistol": true,
"win": true,
"game_win": false,
"rating_value": 0,
"combat_score": 155,
"economy_level": -1,
"average_enemy_loadout_value": 830,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 155,
"cumulative_kills": 1,
"cumulative_deaths": 1,
"cumulative_assists": 1,
"cumulative_damage": 135,
"cumulative_wins": 1,
"kills": 1,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 1,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 1,
"leg_shots": 0,
"body_shots": 1,
"head_shots": 1,
"first_kills": 0,
"first_deaths": 0,
"trade_kills": 0,
"trade_deaths": 1,
"damage": 135,
"damage_received": 110,
"plants": 0,
"defuses": 0,
"money_spent": 700,
"money_remaining": 100,
"loadout_value": 700,
"multikills_2": 0,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 1,
"fair_assists": 1,
"fair_damage": 135
},
{
"id": 4912529,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 58671,
"game_name": null,
"tag_line": null
},
"player": {
"id": 9292,
"nickname": "Jade",
"first_name": "Jade",
"last_name": "Kembitzky"
},
"agent": {
"id": 9,
"name": "sova"
},
"weapon": {
"id": 5,
"name": "Ghost",
"category": "Sidearm"
},
"team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"enemy_team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"round_number": 1,
"side_code": 1,
"is_overtime": false,
"is_pistol": true,
"win": true,
"game_win": false,
"rating_value": 0,
"combat_score": 244,
"economy_level": -1,
"average_enemy_loadout_value": 830,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 244,
"cumulative_kills": 1,
"cumulative_deaths": 1,
"cumulative_assists": 1,
"cumulative_damage": 165,
"cumulative_wins": 1,
"kills": 1,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 1,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 1,
"leg_shots": 0,
"body_shots": 2,
"head_shots": 1,
"first_kills": 0,
"first_deaths": 0,
"trade_kills": 0,
"trade_deaths": 0,
"damage": 165,
"damage_received": 104,
"plants": 0,
"defuses": 0,
"money_spent": 800,
"money_remaining": 0,
"loadout_value": 800,
"multikills_2": 0,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 1,
"fair_assists": 1,
"fair_damage": 165
},
{
"id": 4912530,
"round_id": 491305,
"match_map_id": 521,
"profile": {
"id": 4073,
"game_name": "TWIS misu",
"tag_line": "epval"
},
"player": {
"id": 15699,
"nickname": "misu",
"first_name": null,
"last_name": null
},
"agent": {
"id": 9,
"name": "sova"
},
"weapon": {
"id": 5,
"name": "Ghost",
"category": "Sidearm"
},
"team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"enemy_team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"round_number": 1,
"side_code": 0,
"is_overtime": false,
"is_pistol": true,
"win": false,
"game_win": true,
"rating_value": 0,
"combat_score": 0,
"economy_level": -1,
"average_enemy_loadout_value": 730,
"enemy_economy_level": -1,
"cumulative_rating_value": 0,
"cumulative_combat_score": 0,
"cumulative_kills": 0,
"cumulative_deaths": 1,
"cumulative_assists": 0,
"cumulative_damage": 0,
"cumulative_wins": 0,
"kills": 0,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 1,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 0,
"leg_shots": 0,
"body_shots": 0,
"head_shots": 0,
"first_kills": 0,
"first_deaths": 1,
"trade_kills": 0,
"trade_deaths": 1,
"damage": 0,
"damage_received": 156,
"plants": 0,
"defuses": 0,
"money_spent": 800,
"money_remaining": 0,
"loadout_value": 800,
"multikills_2": 0,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0,
"fair_kills": 0,
"fair_assists": 0,
"fair_damage": 0
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
round_id |
Yes | Round ID. |
Team Round Stats
List team statistics for a round
Returns finalized team statistics for one round.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/team_round_stats?round_id=491305" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/team_round_stats?round_id=491305", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/team_round_stats?round_id=491305",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 982559,
"round_id": 491305,
"match_map_id": 521,
"team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"enemy_team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"round_number": 1,
"side_code": 1,
"is_overtime": false,
"is_pistol": true,
"win": true,
"game_win": false,
"average_combat_score": 14,
"economy_level": -1,
"enemy_loadout_value": 3650,
"enemy_economy_level": -1,
"cumulative_average_rating_value": 0,
"cumulative_average_combat_score": 71,
"cumulative_kills": 5,
"cumulative_deaths": 4,
"cumulative_assists": 3,
"cumulative_damage": 725,
"cumulative_wins": 1,
"kills": 5,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 4,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 3,
"leg_shots": 1,
"body_shots": 10,
"head_shots": 5,
"first_kills": 1,
"first_deaths": 0,
"trade_kills": 0,
"trade_deaths": 2,
"damage": 725,
"damage_received": 495,
"plants": 0,
"defuses": 0,
"money_spent": 3900,
"money_remaining": 100,
"loadout_value": 4150,
"multikills_2": 1,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 1,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 1,
"clutch_attempts_2": 0,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0
},
{
"id": 982560,
"round_id": 491305,
"match_map_id": 521,
"team": {
"id": 1734,
"name": "Twisted Minds Orchid",
"acronym": "TMO"
},
"enemy_team": {
"id": 1040,
"name": "ALTERNATE aTTaX Ruby",
"acronym": "AAR"
},
"round_number": 1,
"side_code": 0,
"is_overtime": false,
"is_pistol": true,
"win": false,
"game_win": true,
"average_combat_score": 46,
"economy_level": -1,
"enemy_loadout_value": 4150,
"enemy_economy_level": -1,
"cumulative_average_rating_value": 0,
"cumulative_average_combat_score": 230,
"cumulative_kills": 4,
"cumulative_deaths": 5,
"cumulative_assists": 0,
"cumulative_damage": 495,
"cumulative_wins": 0,
"kills": 4,
"operator_kills": 0,
"ability_kills": 0,
"deaths": 5,
"operator_deaths": 0,
"ability_deaths": 0,
"spike_deaths": 0,
"assists": 0,
"leg_shots": 0,
"body_shots": 8,
"head_shots": 3,
"first_kills": 0,
"first_deaths": 1,
"trade_kills": 1,
"trade_deaths": 4,
"damage": 495,
"damage_received": 725,
"plants": 0,
"defuses": 0,
"money_spent": 3700,
"money_remaining": 300,
"loadout_value": 3650,
"multikills_2": 1,
"multikills_3": 0,
"multikills_4": 0,
"multikills_5": 0,
"multikills_6": 0,
"clutch_wins_1": 0,
"clutch_wins_2": 0,
"clutch_wins_3": 0,
"clutch_wins_4": 0,
"clutch_wins_5": 0,
"clutch_attempts_1": 0,
"clutch_attempts_2": 1,
"clutch_attempts_3": 0,
"clutch_attempts_4": 0,
"clutch_attempts_5": 0,
"grenade_casts": 0,
"ability1_casts": 0,
"ability2_casts": 0,
"ultimate_casts": 0
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
round_id |
Yes | Round ID. |
Player Match Weapon Stats
List player weapon statistics for a match
Returns finalized player kill totals by weapon for one match.
Minimum tier: GOAT
curl "https://api.balldontlie.io/valorant/v1/player_match_weapon_stats?match_id=180&player_ids%5B%5D=109" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/valorant/v1/player_match_weapon_stats?match_id=180&player_ids%5B%5D=109", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/valorant/v1/player_match_weapon_stats?match_id=180&player_ids%5B%5D=109",
headers={"Authorization": "YOUR_API_KEY"},
)
data = response.json()
The request above returned this production response on July 23, 2026:
{
"data": [
{
"id": 638922,
"match_id": 180,
"profile": {
"id": 3336,
"game_name": "ATN Karina",
"tag_line": "epval"
},
"player": {
"id": 109,
"nickname": "Karina",
"first_name": "Karina",
"last_name": "Wurm"
},
"weapon": {
"id": 1,
"name": "Vandal",
"category": "Rifle"
},
"kills": 7
},
{
"id": 638923,
"match_id": 180,
"profile": {
"id": 3336,
"game_name": "ATN Karina",
"tag_line": "epval"
},
"player": {
"id": 109,
"nickname": "Karina",
"first_name": "Karina",
"last_name": "Wurm"
},
"weapon": {
"id": 2,
"name": "Phantom",
"category": "Rifle"
},
"kills": 1
},
{
"id": 638924,
"match_id": 180,
"profile": {
"id": 3336,
"game_name": "ATN Karina",
"tag_line": "epval"
},
"player": {
"id": 109,
"nickname": "Karina",
"first_name": "Karina",
"last_name": "Wurm"
},
"weapon": {
"id": 19,
"name": "Guardian",
"category": "Rifle"
},
"kills": 3
}
]
}
Query Parameters
| Parameter | Required | Description |
|---|---|---|
match_id |
Yes | Match ID. |
player_ids[] |
No | Filter by one or more player IDs. |