I am junior dev and I had a project idea using Blizzard wow API.
I have been using APIs of many other services for a while and I must say I am surprised to see that blizzard wow API does not expose that much of information.
Some example
As a basic need for my project I want to get all classes and their spells with spells information like CDs and cast time.
This could have been a simple task but I can’t have those information together ( I can’t even get CDs and cast time for a single spell)
The Game date API in the spell section is depict as follow: /data/wow/spell/{spellId}
So when I search with spellID=133 I have this result for the fireball
Unfortunately the API is very limited compared to the amount of data in-game. Spells are mostly here to support tooltips on some items linked by other endpoints like talents and some items with effects. Not all spells are present and not all information about spells are available.
Applications that have additional data usually don’t use just the API, but also game client data.
Does that mean I can access LUA API with simple call from http requests ? Like some kind of RCON.
If not it need a workaround to fetch my information out of the LUA API. I’m not entirely sure to want to develop an addon just to extract all game’s info I need and put it in a DB.
Hypothesis
Somethings I though about:
Scraping info on the most knowledgeable website, either I keep it in cache and request it again when needed.
Setting up a DataBase (My design was no including DB since it would be POC and for personnal use in short terms, meaning I wanted to keep it as light and simple as I can)
Not at all, the LUA API is managed by the game client and uses the socket communication between the game client and the WoW server. You can’t use it outside the game client.
Probably an unethical approach. They put a lot of effort for obtaining the data, the ones who want to share it do so by exposing their own APIs.
Most WoW related applications end up doing this and it is probably the best option in the long run. If you need a big amount of data you will get better performance by caching it instead of requesting on demand.
Sometimes a simple caching solution like redis might be enough.
I have been searching for wow API for days and I didn’t find any. Do you have names ?
I know it is unethical to scrap, but what should I do ? Deploy unnecessary ressources to get 10 maybe 20 spells and all classes, an addon linked to a DB that is read by my application ? Or I hardcode those 10 to 20 spell information in a dictionary but I’ll need to fix the values every time a game patch comes and change CD or Cast time.
Thank you for helping me. It could have been very simple if blizzard had a decent API though I have no choice but to write every information from scratch.