Explore the DarkerDB API documentation, your gateway to harnessing Dark and Darker game data. Use our APIs to track in-game market trends, analyze live player stats, and access detailed item data, including stats, descriptions, and market data. Download game assets like item icons to enhance your apps or generate interactive tooltips. Feel free to get in touch with us in our Discord for support or to request new features or data!

Spawners

The raw placement layer beneath loot. A spawner is a slot in a dungeon module where the game rolls what to put there when the dungeon is built: a monster, a treasure pile, a prop, or nothing at all.

Background

Each spawner carries a weighted candidates list. One candidate names a monster (with its loot drop group), a props_id, or none of those (a real "nothing spawns" roll), plus the dungeon tiers it applies at. A monster spawner usually lists many candidates: the Wraith slot can roll the common, elite, or nightmare variant, each at its own weight.

spawn_rate vs spawn_chance

spawn_rate is the verbatim game weight on a candidate. spawn_chance normalizes that weight across the candidates that share the same dungeon tiers, i.e. the real probability this candidate is the one placed. At the Wraith's base tier the slot rolls common 0.9 against elite 0.1, so a placement there is a common Wraith 90% of the time.

Placements and coordinates

placements counts how many times the spawner is stamped across dungeon modules, and modules is the flat list of module tiles it lands in, each keyed by its module_id (id.module.*) with the module's module_type (dungeon family), pixel size, and a points array of the actual x / y / z / yaw for every placement. modules ships inline on the list too, so /v2/spawners/{id} returns the identical full object: you never fan out per-spawner just to read coordinates.

Worked example: reading a module's spawn map

Every node below is one placement stamped onto the module minimap, plotted from its points (game Y runs left–right, X top–bottom). Each node wears the icon of the thing it spawns: the monster portrait, the treasure / prop's item icon, ringed in its type colour. Scroll to zoom and drag to pan; hover any node for its spawner card, what can roll there with each candidate's spawn_chance and the placement coordinates. This is the identical component the module profile page renders, over the /v2/modules/{id}/spawns and /v2/spawners/{id} endpoints.

The Cage minimap

0 monsters · 0 treasure · 0 props · scroll to zoom, drag to pan

GET /v2/spawners

Every spawner, one row per placement definition: id, its type (monster, treasure, props, or empty, by the first candidate), placements, and the weighted candidates pick-list.

Each candidates element is one roll: a bare monster_id, loot_drop_group_id, and / or props_id (never an embedded record), its spawn_rate weight and normalized spawn_chance, and the resolved map_tiers it applies at. An entry with no refs is a real "nothing spawns" roll.

&type = Only spawners of this type
Options: monster | treasure | props | empty
&monster_id = Only spawners with this monster in ANY candidate
&loot_drop_group_id = Only spawners rolling this loot group in any candidate
&props_id = Only spawners placing this prop in any candidate
&sort = `field:order` or `asc|desc` (default field per endpoint)
&cursor = Opaque cursor from the previous response's `pagination.next`; omit for the first page.
&limit = Pagination
Options: 1 - 200
Default: 50

GET /v2/spawners/{id}

&id = spawner id (see the /v2/spawners listing)
Example: id.spawner.monster_demon_executioner

The identical full object a list row returns (not a richer one): the same modules list, each tile with its localized name, module_type, variant, size, and a points array of { x, y, z, yaw }, one per placement.