In order to analyze the encounters found in D&D adventures we first need a dataset that catalogues them in a way that’s useful for us. To my knowledge, no such dataset already existed that fit this description, so I made one myself using Python scripts and many hours of checking and editing the results by hand.

For anyone wishing to use this data, each encounter contains the following entries:

  • id. A unique identifier generated at random using UUIDv4.
  • type. Encounters that are likely to result in combat have a type of “combat”, while those that aren’t likely to result in combat have “non-combat” for their type. When an adventure has multiple versions of an encounter, one of those encounters will have “combat” for its type and the remaining ones will have “alternate combat” instead to avoid double counting monsters.
  • book_path. The encounter’s location within the book constructed from the book’s name, chapter name, and section headers separated by “; “.
  • allies. A list of creatures that can help the PCs during the encounter.
  • bystanders. A list of creatures present in the encounter but don’t aid or hinder the PCs.
  • enemies. A list of creatures hostile to the PCs in the encounter.

Each entry in the allies, bystanders, and enemies is a list that includes the number of creatures, their monster ID from the D&D Beyond website, their XP value (this may differ from the one in their stat block), and the the number of round that pass before they join the encounter (this can be omitted for monsters present at the start of the encounter).

Here’s an example encounter taken from chapter 1 of Tyranny of Dragons.

{
    "id": "52ae7c16-71a1-48b7-88e2-85d91dee99ad",
    "type": "combat",
    "book_path": "Tyranny of Dragons; Greenest in Flames; Wandering Encounters; Chapter 1 Encounters",
    "allies": [],
    "bystanders": [],
    "enemies": [
        [3, "16939-kobold", 25],
        [1, "17466-ambush-drake", 100]
    ]
}

Dataset

The following table contains a list of all the books currently in the dataset, along with links to their respective data files.

Encounters

Book Date Levels Encounters
Tyranny of Dragons 08/19/2014 1-15 198
Princes of the Apocalypse 04/07/2015 1-13 210
Curse of Strahd 03/16/2016 1-9 151
Storm King's Thunder 09/06/2016 1-10 225
Tales from the Yawning Portal 04/04/2017 1-14 521
Tomb of Annihilation 09/19/2017 1-11 175
Waterdeep: Dragon Heist 09/18/2018 1-5 161
Waterdeep: Dungeon of the Mad Mage 11/20/2018 5-19 438
Ghosts of Saltmarsh 05/21/2019 1-11 134
Baldur’s Gate: Descent into Avernus 09/17/2019 1-13 138
Icewind Dale: Rime of the Frostmaiden 09/15/2020 1-12 191
Candlekeep Mysteries 03/16/2021 1-16 126
Critical Role: Call of the Netherdeep 03/15/2022 3-12 77
Journeys through the Radiant Citadel 07/19/2022 1-14 86
Dragonlance: Shadow of the Dragon Queen 12/06/2022 2-11 135
Keys from the Golden Vault 02/21/2023 1-11 129
Phandelver and Below: The Shattered Obelisk 09/19/2023 1-11 157
Vecna: Eve of Ruin 05/21/2024 10-20 122
Quests from the Infinite Staircase 07/16/2024 1-12 286
Dragon Delves 07/08/2025 1-12 98
Forgotten Realms: Adventures in Faerûn 11/15/2025 1-13 248
Arcana Unleashed: Deadfall 09/15/2026 11-20 51