---
title: "Query aggregated spatial heatmap data for Mythic+ dungeons. Returns density data (deaths, spell casts) bucketed into a floor grid. Supports filtering by key level, item level, specs, classes, affixes, and more."
method: GET
path: "/api/v1/live-tracking/heatmaps/grid"
tags: ["Live Tracking - Mythic+"]
---

# Query aggregated spatial heatmap data for Mythic+ dungeons. Returns density data (deaths, spell casts) bucketed into a floor grid. Supports filtering by key level, item level, specs, classes, affixes, and more.

`GET /api/v1/live-tracking/heatmaps/grid`

Relies on combat log data retrieved from the Raider.IO Desktop App, aggregated via Elasticsearch.<br><br>Use the <code>heatmaps/floors</code> endpoint to get the floor geometry needed to render these results on a dungeon map. Each grid cell represents a spatial bucket with aggregated event counts.

## Query parameters

- `access_key` string — The API key from your RaiderIO App: http://raider.io/settings/apps. Apps with API keys have higher rate limits.
- `type` 'npc_death' | 'player_death' | 'player_spell', required — Heatmap data type. One of: npc_death, player_death, player_spell
- `challengeModeId` 402 | 588 | 503 | 244 | 199 | 405 | 233 | 506 | 502 | 210 | 463 | 464 | 504 | 198 | 377 | 586 | 542 | 197 | 245 | 507 | 166 | 378 | 406 | 200 | 169 | 249 | 558 | 560 | 208 | 369 | 370 | 375 | 587 | 206 | 404 | 559 | 525 | 556 | 379 | 499 | 227 | 234 | 399 | 380 | 239 | 165 | 252 | 353 | 161 | 381 | 392 | 391 | 250 | 2 | 209 | 401 | 584 | 505 | 168 | 247 | 376 | 400 | 500 | 501 | 251 | 438 | 382 | 456 | 246 | 403 | 207 | 585 | 248 | 557, required — Challenge mode ID of the dungeon to query
- `season` 'season-mn-1' | 'season-mn-1-cutoffs' | 'season-mn-1-break-the-meta' | 'season-mn-1-tr' | 'season-tww-3' | 'season-tww-3-cutoffs' | 'season-mn-1-beta' | 'season-tww-3-legion-remix' | 'season-tww-3-legion-remix-1-player' | 'season-tww-3-break-the-meta' | 'season-tww-3-tr' | 'season-tww-2' | 'season-tww-2-break-the-meta' | 'season-tww-2-meta-vs-meta' | 'season-tww-2-tr' | 'season-tww-1' | 'season-tww-3-ptr' | 'season-tww-1-post' | 'season-tww-1-cutoffs' | 'season-tww-1-break-the-meta' | 'season-tww-1-tr' | 'season-tww-2-ptr' | 'season-df-4' | 'season-df-4-post' | 'season-df-4-cutoffs' | 'season-df-4-break-the-meta' | 'season-tww-1-beta' | 'season-df-4-tr' | 'season-df-3' | 'season-df-4-ptr' | 'season-df-3-meta-vs-meta' | 'season-df-3-break-the-meta' | 'season-df-3-tr' | 'season-df-2' | 'season-df-2-post' | 'season-df-2-cutoffs' | 'season-df-3-ptr' | 'season-df-2-break-the-meta' | 'season-df-2-tgp' | 'season-df-2-post-1017' | 'season-df-2-post-1015' | 'season-df-1' | 'season-df-1-post' | 'season-df-1-cutoffs' | 'season-df-1-break-the-meta' | 'season-sl-4' | 'season-sl-4-post' | 'season-sl-4-patch-10-0' | 'season-sl-4-break-the-meta' | 'season-sl-4-legion-timewalking' | 'season-sl-3' | 'season-sl-3-post-925' | 'season-sl-3-legion-timewalking' | 'season-sl-2' | 'season-sl-2-post' | 'season-sl-2-tormented-hero' | 'season-sl-2-post-915' | 'season-sl-2-legion-timewalking' | 'season-sl-1' | 'season-sl-1-post' | 'season-bfa-4-post' | 'season-bfa-4' | 'season-bfa-3-post' | 'season-bfa-3' | 'season-bfa-2-post' | 'season-bfa-2' | 'season-bfa-1' | 'season-pre-bfa' | 'season-post-legion' | 'season-7.3.2' | 'season-7.3.0' | 'season-7.2.5' | 'season-7.2.0', required — Mythic+ season slug (e.g. "season-mn-1")
- `dataType` 'player_position' | 'enemy_position' — Coordinate source. "player_position" uses the dying player/casting player coords; "enemy_position" uses the NPC coords.
- `region` string — Region to filter runs by (e.g. "us", "eu"). Omit for all regions.
- `minMythicLevel` integer — Minimum Mythic+ key level to include
- `maxMythicLevel` integer — Maximum Mythic+ key level to include
- `minItemLevel` number — Minimum average group item level to include
- `maxItemLevel` number — Maximum average group item level to include
- `minPeriod` integer — Minimum lockout period ID to include
- `maxPeriod` integer — Maximum lockout period ID to include
- `minTimerFraction` number — Minimum timer fraction (0 = depleted at 0%, 1 = exactly on time). Filters runs by relative completion speed.
- `maxTimerFraction` number — Maximum timer fraction. Default: 1 (on time or faster).
- `minPlayerDeaths` integer — Minimum total player deaths in the run
- `maxPlayerDeaths` integer — Maximum total player deaths in the run
- `includeSpecIds` string — Comma-separated spec IDs. Only include runs where at least one player had one of these specs.
- `excludeSpecIds` string — Comma-separated spec IDs. Exclude runs where any player had one of these specs.
- `includeClassIds` string — Comma-separated class IDs. Only include runs where at least one player had one of these classes.
- `excludeClassIds` string — Comma-separated class IDs. Exclude runs where any player had one of these classes.
- `excludePlayerDeathSpecIds` string — player_death only: comma-separated spec IDs. Exclude deaths from players with these specs.
- `includePlayerDeathSpecIds` string — player_death only: comma-separated spec IDs. Only include deaths from players with these specs.
- `excludePlayerDeathClassIds` string — player_death only: comma-separated class IDs. Exclude deaths from players with these classes.
- `includePlayerDeathClassIds` string — player_death only: comma-separated class IDs. Only include deaths from players with these classes.
- `includePlayerSpellIds` string — player_spell only: comma-separated spell IDs. Only include casts of these spells.
- `includeAffixIds` string — Comma-separated affix IDs. Only include runs with at least one of these affixes active.
- `excludeAffixIds` string — Comma-separated affix IDs. Exclude runs with any of these affixes active.
- `minRequiredSamplesFactor` number — Minimum sample density factor (0-1). Filters out grid cells below this threshold relative to the most populated cell.
- `floorsAsArray` boolean — If true, return floors as an array instead of an object keyed by floor ID
- `token` string — Encoded token containing pre-set filter parameters (e.g. from season recap heatmaps)

## Response `200`

Heatmap grid results from Elasticsearch. Contains per-floor density data bucketed into a spatial grid.

- ViewHeatmapGridResponse — Heatmap grid results from Elasticsearch. Contains per-floor density data bucketed into a spatial grid.

---

[API](https://skmtc.net/raider/apis/raider-io-developer-api.md) · [All operations](https://skmtc.net/raider/apis/raider-io-developer-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/raider/raider-io-developer-api/versions/4c612ac925bb/schema)
