Skip to content

TheWoWDB public API

Free JSON for WoW Forever and retail: items, spells, quests, NPCs, zones and sounds, with paging, search and rendered tooltips. No key needed.

Advertisement

Base URL and shape

https://thewowdb.com/api/v1/ answers with the list of versions, kinds and endpoints. Versions are forever (WoW Forever, listed first) and retail.

  • /api/v1/<version>/<kind>/?page=1&per_page=50&q= a page of results
  • /api/v1/<version>/<kind>/<id> one record
  • /api/v1/<version>/search/?q= a few hits of every kind
  • /api/v1/tooltip/<version>/<kind>/<id> the rendered tooltip HTML plus its plain fields

Every record carries links.html, the TheWoWDB page it came from, and an attribution object.

Kinds and ids

Kindforever idretail id
itemitem id (beta client data)item id
spellspell id (beta client data)spell id
questquest id (text the beta server sent)quest id
npccreature id, as in /wow-forever/npc/journal boss id, as in /npc/
zonetop-level area idarea id, as in /zone/
soundsound slug, as in /sounds/sound slug, as in /sounds/

The id is always the id in our page URL for that version, so the link you build from it resolves.

Examples

List Forever quests, page 2

curl -s 'https://thewowdb.com/api/v1/forever/quest/?page=2&per_page=50'

Search Forever items

curl -s 'https://thewowdb.com/api/v1/forever/item/?q=lionheart'

One Forever spell

curl -s 'https://thewowdb.com/api/v1/forever/spell/133'

One retail item with its live AH price

curl -s 'https://thewowdb.com/api/v1/retail/item/2589'

Search every kind at once

curl -s 'https://thewowdb.com/api/v1/forever/search/?q=defias'

A rendered tooltip (HTML + fields)

curl -s 'https://thewowdb.com/api/v1/tooltip/forever/item/12640'

Revalidate with the ETag (answers 304)

curl -s -o /dev/null -w '%{http_code}' -H 'If-None-Match: W/"<etag>"' 'https://thewowdb.com/api/v1/forever/spell/133'

Sample response

{
  "id": 133, "kind": "spell", "version": "forever", "name": "Fireball", "rank": "Rank 1",
  "cast_time": {"ms": 1500, "seconds": 1.5, "instant": false},
  "costs": [{"name": "Mana", "cost": 30, "per_second": null}],
  "description": "Hurls a fiery ball that causes ...",
  "links": {"html": "https://thewowdb.com/wow-forever/spell/fireball-133/",
            "api": "https://thewowdb.com/api/v1/forever/spell/133",
            "tooltip": "https://thewowdb.com/api/v1/tooltip/forever/spell/133"},
  "attribution": {"text": "Data from TheWoWDB (thewowdb.com)", "required": true,
                  "url": "https://thewowdb.com/wow-forever/spell/fireball-133/", "terms": "..."},
  "build": "wow_classic_beta-1.60.1.70058"
}

Paging and search

per_page is 1 to 100 (default 50); page is 1 to 200. Large lists report has_more and a links.next URL instead of a total; small lists also give total. q is a case-insensitive name match of up to 64 characters.

Caching, CORS and rate limits

Responses are public and cacheable for an hour (item tooltips five minutes, because they carry a live Auction House price) and carry an ETag; send If-None-Match and an unchanged answer is a 304 with no body. CORS is open (Access-Control-Allow-Origin: *) and never accepts credentials, so call it straight from a browser.

Each IP gets a burst of 120 requests that refills at 2 per second on each server worker. Past that the API answers 429 with Retry-After; X-RateLimit-Remaining shows what is left. Cache what you fetch.

Terms

Free for any project, commercial or not, with a visible link to TheWoWDB (or the record's links.html) wherever the data is shown. Do not resell the raw data as a dataset. Game data and names belong to Blizzard Entertainment; TheWoWDB is a fan site and is not affiliated with Blizzard. The API may change; breaking changes ship under a new /api/v2/.

Also available

Embeddable tooltips: one script tag for your site. Discord bot: the same data as slash commands.