NAV
shell javascript python

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.