Documentation
The Deadlock Data API serves item, hero and build-version data for Deadlock, extracted nightly from the game's files. This page covers the pipeline, the data shapes, and a full endpoint reference generated from the OpenAPI spec.
Getting started
Every endpoint returns JSON and requires no authentication:
curl https://deadlock-data-api.iainfox.dev/items/5
Grab the whole dataset with GET /items or
GET /heroes, or look things up individually with
GET /items/:id and GET /heroes/:id. Responses are
cached at the edge for 5 minutes.
Lookups accept the numeric id, the numeric hero_id, or a
url-slugged display name (/heroes/seven). Every dataset carries
a _metadata object with the build_id it was captured
from, so you always know exactly which game version you're looking at.
How it works
Data flows from the game itself to a JSON API with no manual steps. A scheduled GitHub Actions workflow runs daily:
SteamCMD (check manifests)
│ changed?
▼
DepotDownloader (fetch windows depots 1422451/52/56)
│
▼
Source2Viewer-CLI (decompile VPKs to text)
│
▼
custom KV3 parser (items / heroes / abilities)
│
▼
JSON + versioned archive → Cloudflare R2 → this API
If the depot manifests are unchanged, the pipeline skips the download and
just confirms the previous data is still current. When they do change, the
new build is uploaded as the live dataset and archived under
archive/<build_id>, so you can diff any two versions.
Data model
Two top-level datasets are served:
items_data.json: items keyed by their numeric id, with tier, soul cost, slot, activation, availability and all ability stats.heroes_data.json: heroes keyed by their numeric id, with starting stats, per-level scaling, tags, primary weapon and signature abilities.
Tier is 0-5 and maps to soul costs
[0, 800, 1600, 3200, 6400, 9999]. Stats are keyed by the game's
internal property names; promoted keys such as
cooldown, duration, cast_range and
charges are lifted to the top level of each record.
/openapi.json…Playground
The playground reads the same OpenAPI spec this page uses, so every endpoint listed above is available as a live, clickable request.