Skip to main content
Version: 2025-08-28

Aggregate Stats

Overview​

The aggregateStats GraphQL query provides aggregated statistical insights from various events. Below, you'll find a field catalog detailing available fields, followed by query examples demonstrating their usage.

Field Catalog​

Each field listed here can be used in Aggregate Stats queries.

Metadata Fields​

Metadata fields are available for all events.

Field NameDescriptionUsages
match.metadata[match_series_id]ID of the MatchSeriesTerm Filter
match.metadata[tournament_id]ID of the TournamentTerm Filter
match.metadata[season_id]ID of the SeasonTerm Filter
match.metadata[competition_id]ID of the CompetitionTerm Filter
match.metadata[circuit_id]ID of the CircuitTerm Filter
player.metadata[player_id]ID of the PlayerTerm Filter, Term Bucket
team.metadata[team_id]ID of the TeamTerm Filter, Term Bucket
match.metadata[match_id]ID of the MatchTerm Filter

Common Fields​

These fields are accessible across all events.

Field NameDescriptionUsages
event.typeType of eventTerm Filter
event.timestampUTC timestamp of the event occurrenceRange Filter
game.map.nameIn-game map name (e.g., "de_dust2")Term Filter, Term Bucket
game.round.idUnique round identifierTerm Bucket
game.round.occurrenceEvent occurrence count within the roundTerm Filter, Range Filter
game.round.result[WIN]Count of rounds wonCount
game.round.result[LOSS]Count of rounds lostCount
team.roleSame as field "name" on GameRoleTerm Filter, Term Bucket

Event-Specific Fields​

These fields apply to specific event types.

Field NameDescriptionUsagesAvailable Events
item.nameIn-game item name (e.g., "m4a1")Term Filter, Term BucketGameEventPlayerItemPurchase, GameEventPlayerItemThrow, GameEventPlayerAttack, GameEventPlayerKill
item.typesee GameItemTypeTerm Filter, Term BucketGameEventPlayerItemPurchase, GameEventPlayerItemThrow, GameEventPlayerAttack, GameEventPlayerKill
event.player_situation[CLUTCH]1vsX clutch situations countCountGameEventPlayerSituation
event.player_situation.clutch.opponents_aliveOpponents alive in 1vsX clutchTerm Filter, Term BucketGameEventPlayerSituation
event.game_resultRelates to GameEventGameResultCountGameEventGameResult
event.game_result[WIN]Total maps wonCountGameEventGameResult
event.game_result[LOSS]Total maps lostCountGameEventGameResult
event.game_scoreRelates to GameEventGameScoreCountGameEventGameScore
event.player_assistRelates to GameEventPlayerAssistCountGameEventPlayerAssist
event.player_attack.classification[REGULAR].damage.healthHealth damage dealt (excluding team damage)SumGameEventPlayerAttack
event.player_deathRelates to GameEventPlayerDeathCountGameEventPlayerDeath
event.player_kill.classificationsee GameKillClassificationTerm FilterGameEventPlayerKill
event.player_kill.classification[REGULAR]Kills against opponents (excluding team kills)CountGameEventPlayerKill
event.player_purchaseRelates to GameEventPlayerItemPurchaseCountGameEventPlayerItemPurchase

Query Examples​

Clutch 1vsX Wins/Totals​

{
aggregateStats {
data {
players: termBucket(fields: ["player.metadata[player_id]", "event.player_situation.clutch.opponents_alive"]) {
playerId: term(field: "player.metadata[player_id]")
numOpponentsAlive: term(field: "event.player_situation.clutch.opponents_alive")
wins: count(field: "game.round.result[WIN]")
total: count
}
}
}
}

Fetch data accuracy and timestamp of the latest update of the given request​

{
aggregateStats {
meta {
dataAccuracy
lastUpdatedAt
}
data {
# ...
}
}
}

Sort term bucket by highest map win percentage​

{
aggregateStats {
data {
players: termBucket(fields: ["player.metadata[player_id]"], sort: [{field: "_mapWinRate", order: ORDER_DESC }]) {
playerId: term(field: "player.metadata[player_id]")
mapTotal: count(field: "event.game_result")
mapWins: count(field: "event.game_result[WIN]")
mapWinRate: rate(fields: ["_mapWins", "_mapTotal"])
}
}
}
}

First Kills/Deaths Round Win%​

{
aggregateStats {
data {
players: termBucket(fields: ["player.metadata[player_id]"]) {
entry: filter(filters: [ { field: "game.round.occurrence", filter: { term: { values: ["1"] }} } ]) {
kills: filter(filters: [ { field: "event.player_kill.classification", filter: { term: { values: ["REGULAR"] }} } ]) {
roundTotal: count()
roundWins: count(field: "game.round.result[WIN]")
}
deaths: filter(filters: [ { field: "event.type", filter: { term: { values: ["PLAYER_DEATH"] }} } ]) {
roundTotal: count()
roundWins: count(field: "game.round.result[WIN]")
}
}
}
}
}
}

Average damage/kills per round​

{
aggregateStats {
data {
players: termBucket(fields: ["player.metadata[player_id]"]) {
roundsTotal: count(field: "event.game_action[ROUND_ENDED]")
damageTotal: sum(field: "event.player_attack.classification[REGULAR].damage.health")
killsTotal: count(field: "event.player_kill.classification[REGULAR]")
avgRoundDamage: rate(fields: ["_damageTotal", "_roundsTotal"])
avgRoundKills: rate(fields: ["_killsTotal", "_roundsTotal"])
}
}
}
}

Filter results by Player IDs​

{
aggregateStats(filters: [
{ term: { field: "player.metadata[player_id]", values: ["4357ee21-8021-415f-b7c8-d75123de6647", "4357ee21-8021-415f-b7c8-d75124e6657"] }}
]) {
# ...
}
}

Filter results by Team IDs​

{
aggregateStats(filters: [
{ term: { field: "team.metadata[team_id]", values: ["2c3fda30-e913-4938-89de-5e28c2ff26c2", "b55a8d10-223b-11ee-be56-0242ac120002"] }}
]) {
# ...
}
}

Filter results by time period​

{
aggregateStats(filters: [
{ range: { field: "event.timestamp", gte: "2022-01-01T01:02:03.004Z", lte: "2022-02-02T01:02:03.004Z" }}
]) {
# ...
}
}