Blitz APIblitz.gg ↗
Access aggregate VALORANT agent, weapon, and map statistics from Blitz.gg — filterable by rank tier, queue, map, and act via 3 structured endpoints.
What is the Blitz API?
The Blitz.gg VALORANT API exposes three endpoints covering aggregate statistics for agents, weapons, and maps drawn from Blitz.gg's VALORANT analytics. list_agent_stats returns one row per agent (up to 29) with win rate, pick rate, K/D, KDA, and average combat score per round. All three endpoints accept the same core filter parameters — act, queue, rank tier, and map — so you can slice the data to a specific competitive context.
curl -X GET 'https://api.parse.bot/scraper/28ae5596-4575-4dac-961b-483654ad762c/list_agent_stats?act=ev26activ&map=bind&tier=18%2B&queue=competitive' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace blitz-gg-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Blitz.gg VALORANT stats — agent, weapon, and map insights."""
from parse_apis.blitz_gg_api import BlitzGG, RankTier, Queue, InputFormatInvalid
client = BlitzGG()
# Top agents by win rate in Diamond+ competitive
for agent in client.agent_stats.list(tier=RankTier.DIAMOND_PLUS, queue=Queue.COMPETITIVE, limit=5):
print(f"{agent.agent_name} ({agent.agent_role}): {agent.win_rate:.1%} win rate, {agent.kd} K/D")
# Which map favours attackers most? Check competitive map stats.
map_stat = client.map_stats.list(queue=Queue.COMPETITIVE, limit=1).first()
if map_stat is not None:
print(f"{map_stat.map_name}: atk {map_stat.attack_round_win_rate:.1%} / def {map_stat.defense_round_win_rate:.1%}")
# Drill into weapon stats on that map
if map_stat is not None:
try:
for weapon in client.weapon_stats.list(
queue=Queue.COMPETITIVE,
tier=RankTier.DIAMOND_PLUS,
map=map_stat.map_key,
limit=3,
):
print(f"{weapon.weapon_name} ({weapon.weapon_type}): {weapon.headshot_rate:.1%} HS, {weapon.kills_per_round} kills/round")
except InputFormatInvalid as e:
print(f"Invalid filter combination: {e.message}")
print("exercised: agent_stats.list / map_stats.list / weapon_stats.list")
Returns aggregate statistics for every VALORANT agent (one row per agent, typically 29) for the selected queue, rank tier, map and act: matches, wins/losses, win rate, pick rate (share of agent slots), kills/deaths/assists, K/D, KDA, per-match averages, average combat score per round, first bloods and ability casts per round. Rates are fractions (0.5258 = 52.58%). Sorted by win_rate descending. Data is a daily snapshot (data_date). When act is omitted the site's latest act is used and filters.act reads "latest". Some filter combinations have no data on the site (e.g. non-competitive queues combined with a specific rank tier, or a single Iron tier); those return total 0 with an empty items list, which is the site's own empty state. Two upstream requests per call.
| Param | Type | Description |
|---|---|---|
| act | string | Act code selecting the ranked act, e.g. ev26actv for episode V26 act V; the site keeps roughly the three most recent acts. Omitted = latest act. |
| map | string | Lowercase map key (one shape: ascent) or ALL for all maps. map_key values from list_map_stats.items[*].map_key are accepted. Unknown keys return an empty result. |
| tier | string | Rank tier code from the site's rank dropdown: 0 = unrated/no rank filter, 3..27 = Iron 1 through Radiant, 18+ = Diamond and above, ALL = all ranks combined. |
| queue | string | Game queue key as listed in the site's queue dropdown; ALL aggregates every queue. Rank tiers other than 0 are only populated for competitive. |
{
"type": "object",
"fields": {
"items": "array of agent rows: agent_id (UUID), agent_key, agent_name, agent_role, matches_played, rounds_played, wins, losses, win_rate, pick_rate, kills, deaths, assists, kd, kda, kills_per_match, deaths_per_match, assists_per_match, avg_score_per_round, first_bloods, first_deaths, last_kills, first_blood_rate, ability_casts_per_round {ability1, ability2, grenade, ultimate}",
"total": "number of agent rows",
"filters": "object echoing the applied tier, queue, map and act (act is the resolved act code, or \"latest\")",
"data_date": "ISO date of the statistics snapshot",
"generated_at": "ISO timestamp when the site generated the aggregate"
},
"sample": {
"data": {
"items": [
{
"kd": 0.99,
"kda": 1.45,
"wins": 198063,
"kills": 5579606,
"deaths": 5661953,
"losses": 178627,
"assists": 2658232,
"agent_id": "569FDD95-4D10-43AB-CA70-79BECC718B46",
"win_rate": 0.5258,
"agent_key": "sage",
"pick_rate": 0.0294,
"agent_name": "Sage",
"agent_role": "Sentinel",
"last_kills": 5520378,
"first_bloods": 616401,
"first_deaths": 656041,
"rounds_played": 8030151,
"matches_played": 382071,
"kills_per_match": 14.6,
"deaths_per_match": 14.82,
"first_blood_rate": 0.0768,
"assists_per_match": 6.96,
"avg_score_per_round": 200.8,
"ability_casts_per_round": {
"grenade": 0.66,
"ability1": 0.732,
"ability2": 0.403,
"ultimate": 0.106
}
}
],
"total": 29,
"filters": {
"act": "latest",
"map": "ALL",
"tier": "18+",
"queue": "competitive"
},
"data_date": "2026-09-06",
"generated_at": "2026-09-07T15:31:22.115185Z"
},
"status": "success"
}
}About the Blitz API
Agent and Weapon Statistics
list_agent_stats returns one row per VALORANT agent with fields including agent_id, agent_key, agent_name, agent_role, matches_played, rounds_played, wins, losses, win_rate, pick_rate, kills, deaths, assists, kd_ratio, kda, per-match averages, and average combat score per round. list_weapon_stats covers roughly 22 weapons with fields like weapon_type, cost (in credits), kills, alt-fire kills, first bloods, kills per match and per round, damage, and headshot/bodyshot/legshot counts and rates. Both endpoints return a filters object confirming the applied parameters and a data_date field indicating the snapshot date.
Map Statistics and Filter Parameters
list_map_stats returns per-map rows with map_key, map_name, matches and rounds played, play_share (fraction of all matches), and attacking/defending round win rates. The map_key values returned here feed directly into the map input of list_agent_stats and list_weapon_stats, letting you cross-reference weapon or agent performance on a specific map.
Filtering by Rank, Queue, and Act
All three endpoints accept tier (rank codes 0 and 3–27, covering unrated through Radiant), queue (competitive, unrated, or ALL), and act (an act code such as ev26actv for the current episode/act). The site retains roughly the three most recent acts. Note that rank tier filters other than 0 are only valid for ranked queues. Each response includes a generated_at ISO timestamp alongside data_date, so you can confirm how fresh the aggregate is.
The Blitz API is a managed, monitored endpoint for blitz.gg — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when blitz.gg changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official blitz.gg API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Rank-stratified agent tier lists built from win_rate and pick_rate across Iron-to-Radiant brackets
- Map-specific weapon effectiveness dashboards comparing headshot_rate and kills_per_round by map_key
- Side-balance analysis using attacking vs. defending round win rates from list_map_stats
- Act-over-act meta shift tracking by comparing agent KDA and pick_rate across act codes
- Credit-efficiency studies correlating weapon cost with kills_per_round or first_blood counts
- Queue-segmented agent performance comparison (competitive vs. unrated) for coaching tools
- Map pool play-share monitoring using play_share from list_map_stats to detect rotation trends
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.