ForeverDB API
WoW Forever data as JSON for your own site, bot, addon tool or spreadsheet: items, spells, quests, vendors, dungeons, classes, item sets, professions and recipes, gathering, battlegrounds, changes players saw in game, ForeverDB's articles and Blizzard's posts. Read-only, with an API key.
Credit required
You must credit ForeverDB.net as the source, with a visible link to https://foreverdb.net, wherever you show the data.
A line like this is enough: <a href="https://foreverdb.net">Data from ForeverDB.net</a>
Getting a key
You need a ForeverDB account: every key belongs to one. Log in with Battle.net on this page and ask for access: say what you're building, give an email address for the answer and agree to credit ForeverDB.net. Once ForeverDB approves it, you make your own keys here (up to 3). Deleting your account deletes its keys, and a suspended account's keys stop working.
Using it
Send your key in the X-API-Key header (or Authorization: Bearer). Every answer is JSON with data and meta (the game build it comes from, and for lists the total and the next page).
curl -H "X-API-Key: fdb_…" https://foreverdb.net/api/v1/items/19019
Limits
60 requests a minute and 10,000 a day per key, shown in the X-RateLimit and X-Daily headers. Past a limit the answer is 429 with Retry-After.
Endpoints
GET /api/v1/meta: About the data
The client build the data comes from, the level cap and how many of each thing there are.
GET /api/v1/items: Items
Items from the WoW Forever client, sorted by ID (lowest first).
q: Name containsquality: 0 Poor to 5 Legendaryclass: Item class ID (2 weapons, 4 armour...)slot: Inventory type ID (1 head, 5 chest...)minLevel: Required level at leastmaxLevel: Required level at mostlimit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/items/{id}: One item
Stats, damage, speed, binding, sell price, effects and, for weapons and armor that disenchant, what disenchanting gives (disenchant). liveClient: what the live client changed since the last beta build (each field's beta and live value); dataFromBuild: details kept from an earlier build for an item the client still hides.
GET /api/v1/spells: Spells
Spells and abilities from the client, sorted by ID.
q: Name containslimit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/spells/{id}: One spell
Name, rank, description and icon. liveClient: what the live client changed since the last beta build (added, removed or changed, with each field's beta and live value), for the spell, its class ability or its talent.
GET /api/v1/quests: Quests
Quests with ForeverDB's guide, and whether they're known in Forever, with who starts and ends each one and where (starts, ends: as on the quest's page). Sorted by ID.
q: Name containszone: Zone name containsminLevel: Quest level at leastmaxLevel: Quest level at mostside: alliance or hordelimit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/quests/{id}: One quest
The quest's level, side, zone, where the data comes from and its guide link; chain: the earlier (previous) and following (next) quests as on the quest page, each with questId, name, relation (Complete first, Chain link, Must be active, Next quest, Quest line, Offered after) and source (a list can hold alternatives: not every quest in it is needed), and questLine (name, part, of) when the Forever client has one; and starts and ends: the NPC, object or item that gives it and the one you hand it in to (type npc, object or item; id; name), where it stands (location: uiMapId, zone, x and y in percent of the zone map, or null; instance when it's inside a dungeon), and the source: seen in WoW Forever (players' ForeverDB addon, with how many players), or Classic data (CMaNGOS), not confirmed in Forever. Where no NPC is known, the Forever client's own quest map marker (type, id and name null) or, for the hand-in, where players' game map showed it. others: more NPCs that give or take the same quest.
GET /api/v1/vendors: Vendors
Vendors with where they stand and reputationFaction (the faction whose reputation discounts their prices: 5% at Friendly up to 20% at Exalted); seen in Forever or Classic data, labelled.
q: Name or title containszone: Zone name containsseen: true: only vendors seen in Foreverlimit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/vendors/{id}: One vendor
Where the vendor stands and everything they sell, with prices in copper, and costs besides gold where players' addons saw them (costs: Merchant's Favor and other currencies, or items).
GET /api/v1/poisons: Rogue poisons
How Rogues learn Poisons (the level 20 quests), and every poison in the Forever client: what it makes, reagents, learnAtLevel, skill colours, learnedWithSkill (Instant Poison), the rogue trainers players saw teach it and the full price they saw (trainerCost, copper), seasonOfDiscoveryLeftover and aboveLevelCap. Also every rogue trainer and poison supplier (seen in Forever, or Classic data, labelled) with what the suppliers sell, and unusedReagents: what they sell that nothing in the Forever client uses (Lethargy Root).
GET /api/v1/disenchant: Disenchanting
What uncommon, rare and epic weapons and armor disenchant into, by item level: WoW Forever's results where players' addons saw them (with how many disenchants and players), and Classic's table, labelled.
GET /api/v1/dungeons: Dungeons and raids
Every instance with its level range, lowest level first.
limit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/dungeons/{id}: One dungeon
Bosses and notable loot.
GET /api/v1/zones: Zones
The world map's zones and continents. The id is the map ID (UiMap) the other answers use.
limit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/classes: Classes
The nine classes.
GET /api/v1/classes/{name}: One class
Every ability with its ranks and the level each is learned.
GET /api/v1/itemsets: Item sets
Item sets with their pieces.
q: Name containslimit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/itemsets/{id}: One item set
Pieces and set bonuses.
GET /api/v1/professions: Professions
All twelve professions: primary, gathering and secondary. Each has its recipe count, how many recipes are new in Forever or changed from Classic, and how many trainers teach it.
GET /api/v1/professions/{slug}: One profession
The ranks with their skill caps, the trainers, and the recipes (a page at a time, by skill). Each recipe has its skill colours (orange, yellow, green, grey), reagents, what it makes, how you learn it, and what Forever changed. learnedFrom.sources says where: every trainer and vendor for each faction (with where they stand; the vendor's price in copper for one purchase, stack, pricePerItem, costs besides gold such as Merchant's Favor, limited stock, and reputationFaction: the faction whose reputation discounts the price), the quests and drops that give the recipe, and whether players saw each one in Forever. category: the recipe's trade-skill category in the Forever client (Elixirs, Smelted Bars...) with its parent. Recipes come from the Forever client; trainers and vendors are Classic data unless seenInForever. Trainers players saw teach a recipe in Forever are listed with their place even when Classic has none (Forever's new recipes and NPCs), and trainerCostSource says whether the price is the full price players saw or Classic's. recipeItemsHidden: items the Forever client lists as teaching the recipe whose name and details stay on Blizzard's servers until the game sends them (recipeItemsNotInClient is the old name, kept). Slugs: alchemy, blacksmithing, enchanting, engineering, leatherworking, tailoring, herbalism, mining, skinning, cooking, first-aid, fishing.
q: Recipe name containsnew: true: only recipes new in Foreverchanged: true: only recipes changed from Classiclimit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/gathering/{slug}: Gathering
Where to gather, for herbalism, mining, skinning or fishing. Herbalism and mining: each herb or vein with the skill it needs, and each zone with how many of each. Skinning: each zone's levels and the skill its beasts need; ask for one zone to get its beasts, with their levels, the skill each needs and what it gives. Fishing: each zone's skill, what you catch there and the fishing pools. All four have the best zones for each skill range. Spawn counts are Classic data until players' addons see them in Forever (labelled).
zone: Only this zone: its map ID, or part of its name (for skinning, this also lists the zone's beasts)
GET /api/v1/battlegrounds: Battlegrounds and arenas
Every battleground and arena in the client: levels, team size, how you win, the objectives with their place on the map (x and y in percent), and where the rules come from: blizzard (Blizzard's posts), classic (Classic's rules, Speculation) or client (only the client's data so far).
GET /api/v1/changes-seen: Changes seen in game
What players' ForeverDB addons saw in the game that differs from the game files: prices, quest rewards and XP, item stats, creature levels. Each is Verified (two or more players, or checked against the client) or Not confirmed. Newest first. Counts only: never who saw it.
kind: item, npc, vendor, trainer or questverified: 1: only Verified; 0: only Not confirmedlimit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/articles: Articles
ForeverDB's news and articles, newest first.
type: news, guide...limit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
GET /api/v1/articles/{slug}: One article
The article's blocks and sources.
GET /api/v1/posts: Blizzard posts
Blue posts and official news about WoW Forever, newest first.
limit: How many (1 to 100, default 25)offset: Skip this many (for the next page)
What we record
Every approved developer has a developer ID, like dev-0012, and every answer names it in meta.client. For each key and UTC day we count:
- the endpoints you call, and the resources you ask for by ID (items/19019, say)
- the website the requests come from: the host in the browser's Origin or Referer header, or "server" when no browser sent them
- the kind of program: a browser, curl, Python, Node and so on. We keep the family name only, never the whole User-Agent.
- the country, as Cloudflare reports it
We never store IP addresses. We use these counts to keep the limits fair, to check the data is credited where it is shown, and to catch a key that leaked or is being abused. They are kept for 90 days.
Rules
- Credit ForeverDB.net with a visible link to https://foreverdb.net wherever you show the data.
- Don't resell the data or present it as your own, and keep to the limits.
- Data from the WoW Forever client is Blizzard's; ForeverDB isn't affiliated with Blizzard Entertainment. Classic data and what players saw in the game are labelled as such.