The Challenge

When I started this project, I knew that there were over 11 million active World of Warcraft subscribers. To get a good starting pool of data, I knew I'd need to scan a great deal of them. I contacted the Blizzard API team to explain what I had planned and to get a high-volume API key - I wasn't going to get far on 3000 queries per day.

The key issue is where to start; there's no API method for finding all players. Blizzard suggested that I spider the aution houses on each realm, finding active players. With that list of players, I could then scan their guilds, grab the roster and then scan all players in the guild. This approach seemed pretty good - find active guilds, then spider their players.

I decided to only include players that I could prove had gotten the achievement, so they had to be active on the armory. That means they have to be at least level 10 (I don't think you could get the achievement without hitting level 10, but I guess it's possible) and to have logged in during the last 90 days. This will definately exclude some old players who earned the achievement and then stopped playing, but I can't do much about those.

Finding Players

I tried a slightly different approach to seed the initial guild list - I figured thaty most people who earn the achievement will be in a guild who has killed a raid boss at some point. This excludes some people, but is probably a good representation of active, serious players.

To get this list of guilds, I grabbed this tier 8 to 13 progression rankings from wowprogress. This included most guilds that had ever downed a raid boss, although not including amalgamated guilds, guilds who pug many of their raid spots or guilds who somehow slipped under the wowprogress radar. Because I went back to tier 8, quite a few of these guilds no longer exist. After generating the guild list, I fetched a roster from the Battle.net API and recorded every character who had hit 85. While it's possible to get the achievement at level 60, it's unlikely that somebody would have gotten the achievement and still be an active player without having reached 85.

For each player, I then fetched their achievements and checked for Insane in the Membrane. If they had completed the achievement, I also recorded the date. I was then able to aggregate the results to figure out the top guilds and realms.

This scan found 131,357 guilds, containing 7,497,006 players at level 85. Of those players, only 6,710,829 (89.5%) were active on the armory - the rest had not logged on lately. Of those active players, only 22,414 players (0.33% of actives) have earned the insane achievment - that's about 1 in 300 actives. These numbers are higher than I expectated, though more than half happened since the achievement was simplified. There's more explanation on the stats page.

The API key I was given allowed me to make 300,000 API requests every 24 hours, in each region. I ran the collection process in parallel for the four regions, so it took 12 days in total (Europe finished last). My server is in the US, so US collection was very fast, Europe was slow and Korea & Taiwan were very slow. The Chinese API was so slow that I skipped it altogether for now - it would take many years just to perform the initial spidering. The database, inclduing indexes, takes up 3 GB.

This website was created by Cal Henderson, who can often be found playing Bees on Hyjal-US.

Cal has also created a number of WoW addons, created hunterloot.com and lead the development of the new warcraftpets.com. He sometimes blogs about WoW on World of Theorycraft.

His personal website is iamcal.com
Interested in how this all works? You can browse the source code on github.
© 2012 Cal Henderson
Suggestions, comments, abuse etc. to cal@iamcal.com