Raidbots Blog

Web Tools for WoW Nerds

JSON Feeds

There are a couple of JSON feeds available for anyone that wants some of the raidbots data in an easy-to-parse format.

General Notes
  • If you can use gzip, please do.
  • Be respectful, don’t spam the site.  General rule of thumb is keep your activity to 1 request every 10 seconds.
  • If you use this data on a public website, link back to raidbots.com and worldoflogs.com.
  • Data is subject to change as I use some of these on raidbots itself.  The most likely change is that additional fields will be added so that shouldn’t break most parsers but just be aware.
DPS Bot – Boss Aggregate Data
More information on Spec IDs at the bottom of this post.
Boss must match the case and format used in the URLs on raidbots.  Names must be capitalized properly, spaces should be replaced with underscores, apostrophes should be rendered as the actual character and not the URL encoded % value.
Difficulty is one of the following:
25H
25N
10H
10N
Again, difficulty must be the capital letter.  Lowercase will not work.
The data follows this format:
{
  ‘MEASURE’: [
    [‘DATE’,’VALUE’],
    …
  ],
  ‘MEASURE2’: [
    [‘DATE’, ‘VALUE’],
    …
  ],
  …
}
Measures are the following and map to various percentiles (minimum, maximum, median, and various percentiles of D/HPS):
min
p10
p20
p25
p30
p40
median
p60
p70
p75
p80
p90
p95
p99
max
stddev
Each measure contains an array of chart data.  Each is a pair of a date and a value.  The date is measure in milliseconds so you might need to divide by 1000 (or cut off the last 3 zeroes) to treat it a UNIX timestamp.
For anyone curious, EBCD stands for Epeen Bot Chart Data.  This JSON feed is used by Epeen Bot to render the percentile charts.
Epeen Bot – Player Data
The basic rule of the URL format for this feed is that it’s the same as Epeen Bot.  Find yourself (or a player you want to find out how to format the URL for) and take the path after /epeenbot/ and plug it into the feed URL.
Region is any of the valid Blizzard regions.  US, EU, TW, etc.  Lowercase.
Realm ideally should lowercase. Spaces should be left as spaces, apostrophes should be apostrophes, etc.  No substitutions are needed for this URL.
Character name should also be unescaped.  Case shouldn’t matter.
Data returned is in the general format:
{
  region: ‘us’,
  realm: ‘maelstrom’,
  char: ‘serialos’,
  ‘guild’: null,               // not populated at this time
  ‘data’: {
    ‘SPEC-ID’: {
      ‘active’: {
        ‘SIZEDIFFICULTY’: {
          ‘BOSS’: {
             [
               {
                 date: ‘DATE’,  // date is in milliseconds, see date notes in above feed
                 value: ‘VALUE’,  // DPS or HPS value for this fight
                 duration: ‘VALUE’    // length of fight in milliseconds
               },
               // …
             ]
          }
        }
      },
      ‘inactive’: {
         // same as above, these are just older bosses that aren’t current
      }
    },
  }
}
Spec IDs
Spec IDs are inherited from how World of Logs identifies specs on their own site.  Raidbots uses the same ID system.  The simplest way to look at spec IDs is to check the source for one of my helper classes:
Advertisements

6 responses to “JSON Feeds

  1. Khatian March 26, 2013 at 5:07 pm

    Noticing some odd behavior sometimes on a player’s feed for Ji-Kun (maybe other bosses only looking at the current set though) (doesn’t appear to be everyone’s) that the format is a bit different.
    Rather then:
    ‘Ji-Kun’: {
    [
    {
    date: ‘DATE’, // date is in milliseconds, see date notes in above feed
    value: ‘VALUE’, // DPS or HPS value for this fight
    duration: ‘VALUE’ // length of fight in milliseconds }…

    Ji-Kun shows up as….

    ‘Ji-Kun’: {
    “0”
    {
    date: ‘DATE’, // date is in milliseconds, see date notes in above feed
    value: ‘VALUE’, // DPS or HPS value for this fight
    duration: ‘VALUE’ // length of fight in milliseconds
    }
    “1” {
    date: ‘DATE’, // date is in milliseconds, see date notes in above feed
    value: ‘VALUE’, // DPS or HPS value for this fight
    duration: ‘VALUE’ // length of fight in milliseconds
    }

    etc for each kill.

    If fixes are hard not a big deal, can parse through it.

    Also having issues with Jinrokh’s feed, should a valid url be
    http://raidbots.com/json/ebcd/Jinrokh_the_Breaker/25N/303 ?

    Thanks for making these feed available, appreciate it.

    • seriallos March 27, 2013 at 12:36 am

      The weird indexing is an issue that you’ll have to parse around. I spent an hour looking at it a month or two ago and couldn’t figure out. I think there might be some weird subtle behavior with php’s JSON encoding or some other subtle bug in my own code to generate those arrays. Was nontrivial to identify and fix so its probably just going to hang out since I have very little time for raidbots currently

      For jinrokh, I think you’ll need to have the apostrophe in the URL. I’m not 100% sure of what encoding will work off the too of my head. If you watch Ajax requests for that boss on epeenbot you should see valid requests over the wire.

  2. Khatian March 27, 2013 at 11:30 am

    Thanks for the input, yeah no problem parsing around it, just figured I bring it to attention if it wasn’t known.

    Ah figured was case on Jinrokh, just figured it match what the player data returned. Thanks!

  3. Teu October 30, 2013 at 12:53 pm

    Looking at this data, I’m wondering how you calculate the percentiles used on epeen bot? I’m taking the DPS divided by the max DPS for that fight/day and spec and getting different values than what is showing up on epeen.

    • seriallos November 29, 2013 at 1:20 pm

      There are notes on how raidbots calculates percentiles in the FAQ at the bottom of the page. Here are the two relevant sections:

      What are the percentiles? How are they calculated?

      While you might initially shudder and remember tests in elementary school, percentiles are pretty useful. Using the 10th, 25th, 50th, 75th, and 95th percentile from all parses on World of Logs, Epeen Bot can put together a pretty decent view of where a player stands in relation to everyone else capable of killing that boss. The 50th percentile marks the middle ground and is where most players end up clustered. If you’re up higher at the 75th or 95th percentile, you can say with some reliability that you parse higher than 75 or 95% of the rest of the raiding population.

      Why are personal percentiles approximate?

      Due to the way I’m currently collecting and crunching the data, I calculate the player percentile when you view the page. At that point, I don’t have access to the full data set because it’s huge. To get an approximate percentile, I look at the different between your DPS and the closest 10th percentile around you and calculate it from there. It’s Pretty Close™ and good enough for now. If any of you out there with knowledge of stats think this isn’t good enough, let me know and I’ll look into getting a more accurate personal percentile.

  4. thabrad July 24, 2014 at 11:19 am

    Are there any new feeds? I’m having a hard time attaching a percentile to a dps number. I was wondering if there was anything that would return this percentile.

    http://raidbots.com/json/ebcd/Magmaw/25H/203/45000 for example.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s