Hatchet head (dragon)
RuneScape Bestiary was removed after an update.
The contents of this page no longer exist in RuneScape, and this article is kept for historical purposes.
RuneScape Bestiary

Using the bestiary

The RuneScape Bestiary was a website feature available to all players added on 18 February 2013 in its beta stage with a designated update. It offered various information about RuneScape's monsters and NPCs, including combat level, weaknesses, and experience gained per kill.

This feature was still in beta before it was removed on 25 November 2015. While the Bestiary itself was removed, the API can still be used to gather monster stats.

Browser supportEdit

Most browsers did not yet give the full support for HTML5 to allow the 3-D properties that are needed for the Bestiary. Google Chrome was the only browser that Jagex officially advised at this point, but other Chromium-based browsers may have worked as well. One other browser that was (unofficially) confirmed to work with the Bestiary was Comodo Dragon.


  • - Move camera
  • +- - Zoom in/out
  • 1 - Toggle shadows
  • 2 - Toggle backgrounds

Scrapped monstersEdit

The Bestiary contained various monsters and NPCs that are not and never have been in the game. These include:

Leaked monstersEdit

  • Stone clone (level 200) - The Stone clone appeared in the bestiary one or two weeks before the release of Vorago. Trying to view it crashed the bestiary, but it has level 99 in every stat and 10000 lifepoints. It was released with Vorago, being one of its minions.


The RuneScape bestiary includes a free-to-view Application Programming Interface (API). Queries in the api return JSONs (JavaScript Object Notation). Additional APIs for RuneScape and the wiki can be seen here.


beastData is a query for obtaining specific statistics and information on a specific monster. The URL for beastData queries is, where X is the internal ID of the monster. For example, if we wanted the information about a Unicorn, whose ID is 89, we'd go to, which would result in

{"animations":{"death":6377,"attack":6376},"xp":"32.1","size":2,"lifepoints":550,"weakness":"Arrow","id":89,"poisonous":false,"magic":11,"attackable":true,"level":15,"defence":11,"description":"Horse with a horn.","name":"Unicorn","ranged":1,"areas":["RuneScape Surface"],"attack":1,"aggressive":false,"members":false}

Variable Description Data type
name The monsters name string
id The monster's ID int
members If the monster is a member's only monster boolean
weakness The monster's weakness string
level The monster's combat level int
lifepoints Amount of lifepoints the monster has int
defence The monster's defence level int
attack The monster's attack level int
magic The monster's magic level int
ranged The monster's ranged level int
xp Experience received for killing the monster string
slayerlevel If the monster requires a slayer level to damage, the level required int
slayercat The slayer category to which the monster belongs string
size The size of the monster int
attackable Whether or not the monster can be attacked boolean
aggressive Whether or not the monster is aggressive boolean
poisonous Whether or not the monster can inflict poison boolean
description The monster's Examine text string
area Areas where the monster may be found [string...] (array of strings)
animations Animations used by the official bestiary when viewing {string: int}


beastSearch is a query for looking up every occurrence of a term in the bestiary. The URL for beastSearch queries is, where X is (part of) a name or a list of names separated by the + symbol. For example, if we want to find all types of Cows, we'd go to, which would result in

[{"value":81,"label":"Cow (4)"},{"value":397,"label":"Cow (4)"},{"value":1886,"label":"Cowardly Bandit"},{"value":2310,"label":"Cow calf (1)"},{"value":5097,"label":"Coward in armour (82)"},{"value":6049,"label":"Coward with bow (105)"},{"value":1691,"label":"Undead cow (4)"},{"value":1998,"label":"Plague cow"},{"value":1999,"label":"Plague cow"},{"value":5603,"label":"Unicow (57)"},{"value":18597,"label":"Zombie cow (1)"},{"value":5986,"label":"Armoured cow thing (62)"},{"value":6048,"label":"Armoured cow thing (62)"}]


If we wanted to find all types of Cow and Rabbit, we'd use, which would result in

[{"value":81,"label":"Cow (4)"},{"value":397,"label":"Cow (4)"},{"value":1192,"label":"Rabbit (1)"},{"value":7125,"label":"Rabbit"},{"value":13638,"label":"Rabbit"},{"value":13639,"label":"Rabbit"},{"value":13640,"label":"Rabbit"},{"value":1691,"label":"Undead cow (4)"},{"value":1998,"label":"Plague cow"},{"value":1999,"label":"Plague cow"},{"value":2310,"label":"Cow calf (1)"},{"value":5603,"label":"Unicow (57)"},{"value":18597,"label":"Zombie cow (1)"},{"value":5986,"label":"Armoured cow thing (62)"},{"value":6048,"label":"Armoured cow thing (62)"},{"value":1886,"label":"Cowardly Bandit"},{"value":5097,"label":"Coward in armour (82)"},{"value":6049,"label":"Coward with bow (105)"}]

Variable Description Data type
value The monster's ID int
label The monster's name string


bestiaryNames is a query for looking up every monster of which the name starts with a certain letter. The URL for bestiaryNames queries is, where X is any letter in the alphabet. For example, if we want to find all monsters whose names start with "Q", we'd go to, which would result in

[{"value":18604,"label":"Quarry overseer"},{"npcs":[{"value":1208,"label":"Quartermaster"},{"value":19284,"label":"Quartermaster"}],"dupe":"Quartermaster"},{"npcs":[{"value":15454,"label":"Queen Black Dragon (900)"},{"value":15506,"label":"Queen Black Dragon (900)"},{"value":15507,"label":"Queen Black Dragon (900)"}],"dupe":"Queen Black Dragon"},{"npcs":[{"value":6731,"label":"Queen of Snow"},{"value":13642,"label":"Queen of Snow"},{"value":13645,"label":"Queen of Snow"}],"dupe":"Queen of Snow"},{"value":13643,"label":"Queen of Sunrise"},{"value":5248,"label":"Queen spawn (76)"},{"value":2477,"label":"Quiz Master"}]

Variable Description Data type
value The monster's ID int
label The monster's name string


areaNames is a query for getting a list of all area names present in the Bestiary. The URL for areaNames queries is It doesn't need any parameters, and will always return the same list.

["Abandoned Burthorpe mine","Agility Pyramid","Agility course pit","Air Rune Temple","Ancient cavern","Ape Atoll","Ape Atoll tunnels","Ardougne underground","Armadyl's Citadel","Arposandran underground","Arzinian Gold Mine","Ascension Dungeon","Asgarnian Ice Dungeon","Ashdale Caves","Assault course","Baba Yaga's House","Bank","Barbarian Assault","Barbarian Assault lobby","Battlefield","Baxtorian Falls","Beneath Iban's lair","Betty's basement","Black Knights' catacombs","Blast furnace","Borehole entrance","Braindeath Island","Brimhaven Dungeon","Brimstail's home","Brine rat caverns","Burthorpe","Captain Barnaby's Ship","Cave","Cellar","Chaos Temple Dungeon","Chaos Tunnels","Chaos tunnels","Circus","Clan Wars","Classroom","Collapsing cave","Cosmic Entity plane","Courtroom","Crash site","Daemonheim","Dagannoth caves","Death Rune Temple","Deep Wilderness Dungeon","Desert","Desert island","Desert temple","Digsite caves","Dominion Tower","Dorgesh-Kaan","Dorgesh-Kaan Station","Dorgesh-Kaan Station construction site","Dragon forge","Dragonkin castle","Dragontooth shipwreck","Draynor","Dream world","Dungeon","Dungeoneering","Dwarven Mine","Dwarven mines","Eadgar's cave","Eagle's Peak cave","Eagles' eyrie","Easter 2007","Easter 2009","Easter 2010","Easter 2011","Edgeville Dungeon","Elemental Workshop","Elvarg's lair","Enchanted valley","Escape route","Exiled Kalphite Hive","Fenkenstrain's Dungeon","Field","Fisher Realm","Fishing Platform","Forest","Forinthry Dungeon","Fremennik Dungeon","Fremennik spiritual realm","Games Room","Genie's Cave","Ghorrock Fortress Dungeon","Glarial's tomb","Goblin temple","God Wars Dungeon","Golrie's cave","Golrie's hideout","Gorak Plane","Grand Tree mine","Grotworm Lair 1","Grotworm Lair 2","Grotworm Lair 3","Guthixian ruins","H.A.M. store rooms","Halloween 2007","Halloween 2009","Haunted mine","Heist Lobby","Hetty's basement","House","Iban's Lair","Ice Cave","Ice Queen's lair","Ice cave","Iceburg","Island","Jadinko lair","Jail","Jaldraocht Pyramid","Jalsavrah Pyramid","Jatizso troll cave","Jiggig Dungeon","Kal'gerion Dungeon","Kalphite Hive","Karamja Underground","Karamja Volcano","Karamja jungle","Keep Le Faye","Keldagrim","Keldagrim Station","Kharazi caves","Killerwatt Plane","Kinshra Workshop","Kitchen","Korasi's dream","Lair of Tarn Razorlor","Lava Flow Mine","Lighthouse","Lighthouse Dungeon","Limbo","Living Rock Caverns","Lumbridge","Lumbridge Catacombs","Lumbridge Cellar","Lumbridge cellar","Mage Training Arena","Mage Training Arena basement","Meiyerditch Mine","Meiyerditch Myreque base","Meiyerditch mine","Melzar's Maze","Mermaid Island","Mine","Miscellania Underground","Misthalin Underground","Morytania underground","Mos Le'Harmless caves","Mouse hole","Movario's base","Myreque Hideout","Nature Rune Temple","Nomad's temple","Observatory","Ogre enclave","Old Tower Shrine Room","Old Tower Spellcasting Chamber","Oo'glog","Orks Rift","Orks Rift entrance","Ourania Altar","Party room","Paterdomus","Pinball","Pollnivneach Dungeon","Pretty Flower's Cave","Prifddinas","Pyramid","Queen Black Dragon's lair","Queen Black Dragon's stomach","Quiz master","Ramarno's forge","Rantz's house","Rashiliyia's tomb","Rat Pit","Rat pit","Rat pits","Red Raktuber","Rellekka","River Elid cave","Rogues' Den","Ruins of Uzer","RuneScape Surface","Runecrafting Guild","Saradomin's hidden cave","Scabaras Dungeon","Sea battle","Sewer","Shadow Dungeon","Shady grove","Sigmund's base","Silas's Dream","Skavid cave","Slug Citadel","Smoke Dungeon","Snake pit","Sophanem Dungeon","Sorceress' garden","Soul Wars","Spirit Plane","Spirit Realm","Spirit Realm Chaos Altar","Spirit Realm demonic ruins","Stronghold of Safety","Stronghold of Security","Swamp","Taverley Dungeon","Taverley dungeon","Temple Knight archives","Temple Knight testing room","Temple Of Ikov","Temple of Ikov","Temple of Light","Temple of Marimbo Dungeon","The Abyss","The Barrows","The Battle of the Archipelago","The Runespan","The Senntisten Temple","The Senntisten digsite","The Skullery","The final platform","The past","Theatre","Thieves' Guild","Tolna's Rift","Tower of Life","Troll Stronghold","Troll tunnels","Tunnel of Chaos","Tunnels Near Keldagrim","TzHaar City","Tzhaar Caves","Underground path","Underground pig pens","Underwater cave","Uzer Mastaba","Valluta's den","Varrock","Varrock Museum","Varrock Sewers","Waiting room","Waterbirth Island Dungeon","Waterfall cave","Wheat maze","White Wolf Mountain underground","Wilderness","Wilderness Dungeons","Witchaven Dungeon","Wizards' Tower","Xmas 2005","Xmas 2007","Xmas 2009","Xmas 2010","Xmas 2011","Yanille","Yanille Dungeon","Zanaris","Zanik's Lab","halloween 2010","halloween 2011"


areaBeasts is a query for looking up every monster in a certain area. The URL for areaBeasts queries is, where X is any area in the areaNames query, with spaces replaced by + signs. For example, if we want to find all monsters in The Abyss, we'd go to, which would result in

[{"value":1615,"label":"Abyssal demon (98)"},{"value":2264,"label":"Abyssal guardian (79)"},{"value":2263,"label":"Abyssal leech (72)"},{"value":2265,"label":"Abyssal walker (77)"},{"value":2262,"label":"Dark mage"}]

Variable Description Data type
value The monster's ID int
label The monster's name string


slayerCatNames is a query for getting a list of all slayer categories and their category ID. The URL for slayerCatNames queries is It doesn't need any parameters, and will always return the same list.

{"Aberrant spectres":41,"Abyssal demons":42,"Airut":117,"Ankou":79,"Aquanites":95,"Ascension members":115,"Aviansies":114,"Banshees":38,"Basilisks":43,"Bats":8,"Bears":13,"Birds":5,"Black demons":30,"Black dragons":27,"Bloodveld":48,"Blue dragons":25,"Brine rats":84,"Bronze dragons":58,"Catablepon":78,"Cave bugs":63,"Cave crawlers":37,"Cave horrors":80,"Cave slimes":62,"Cockatrice":44,"Cows":6,"Crawling hands":39,"Cres's creations":113,"Crocodiles":65,"Cyclopes":108,"Dagannoth":35,"Dark beasts":66,"Desert lizards":68,"Desert strykewyrms":104,"Dogs":22,"Dust devils":49,"Dwarves":57,"Earth warriors":54,"Elves":56,"Fever spiders":69,"Fire giants":16,"Fleshcrawlers":77,"Fungal magi":99,"Ganodermic creatures":96,"Gargoyles":46,"Gelatinous Abominations":111,"Ghosts":12,"Ghouls":23,"Goblins":2,"Goraks":82,"Greater demons":29,"Green dragons":24,"Grifolapines":97,"Grifolaroos":98,"Grotworms":112,"Harpie bug swarms":70,"Hellhounds":31,"Hill giants":14,"Hobgoblins":21,"Ice giants":15,"Ice strykewyrms":105,"Ice warriors":19,"Icefiends":75,"Infernal mages":40,"Iron dragons":59,"Jellies":50,"Jungle horrors":81,"Jungle strykewyrms":103,"Kalphite":53,"Killerwatts":73,"Kurask":45,"Lesser demons":28,"Living rock creatures":106,"Minotaurs":76,"Mithril dragons":94,"Mogres":67,"Molanisks":87,"Monkeys":1,"Moss giants":17,"Mutated jadinkos":109,"Mutated zygomites":74,"Nechryael":52,"Ogres":20,"Otherworldly beings":55,"Pigs":116,"Polypore creatures":100,"Pyrefiends":47,"Rats":3,"Red dragons":26,"Rockslugs":51,"Scabarites":85,"Scorpions":7,"Sea snakes":71,"Shades":64,"Shadow warriors":32,"Skeletal wyverns":72,"Skeletons":11,"Spiders":4,"Spiritual mages":91,"Spiritual rangers":90,"Spiritual warriors":89,"Steel dragons":60,"Suqahs":83,"Terror dogs":86,"Trolls":18,"Turoth":36,"TzHaar":101,"Vampyres":34,"Volcanic creatures":102,"Vyrewatch":110,"Wall beasts":61,"Warped terrorbirds":93,"Warped tortoises":92,"Waterfiends":88,"Werewolves":33,"Wolves":9,"Zombies":10}


slayerBeasts is a query for looking up all monsters in a slayer category. The URL for slayerBeasts queries is, where X is the ID of any slayer category in the slayerCatNames query. For example, if we want to find all monsters that can be slain for the Grotworm tasks, we'd go to, resulting in

[{"value":15464,"label":"Giant worm (72)"},{"value":15462,"label":"Grotworm (63)"},{"value":15463,"label":"Mature grotworm (98)"},{"value":15461,"label":"Young grotworm (28)"}]

Variable Description Data type
value The monster's ID int
label The monster's name string


weaknessNames is a query for getting a list of all types of weakness and their IDs. The URL for weaknessNames queries is It doesn't need any parameters, and will always return the same list.



weaknessBeasts is a query for looking up all monsters with a certain weakness. The URL for slayerBeasts queries is, where X is the ID of any weakness in the weaknessNames query. For example, if we want to find all monsters that can are weak to thrown weapons, we'd go to, resulting in

[{"value":1604,"label":"Aberrant spectre (72)"},{"value":10744,"label":"Animated book (2)"},{"value":16692,"label":"Bandosian ork (68)"},{"value":9612,"label":"Corpse mage (21)"},{"value":9613,"label":"Corpse mage (21)"},{"value":9614,"label":"Corpse mage (21)"},{"value":9615,"label":"Corpse mage (21)"},{"value":9616,"label":"Corpse mage (21)"},{"value":9617,"label":"Corpse mage (21)"},{"value":9618,"label":"Corpse mage (21)"},{"value":9619,"label":"Corpse mage (21)"},{"value":9620,"label":"Corpse mage (21)"},{"value":9621,"label":"Corpse mage (21)"},{"value":3497,"label":"Gelatinnoth Mother (91)"},{"value":103,"label":"Ghost (25)"},{"value":104,"label":"Ghost (25)"},{"value":4388,"label":"Ghost (42)"},{"value":5342,"label":"Ghost (25)"},{"value":5344,"label":"Ghost (25)"},{"value":5345,"label":"Ghost (25)"},{"value":5347,"label":"Ghost (25)"},{"value":5348,"label":"Ghost (25)"},{"value":17011,"label":"Ghostly wraith (46)"},{"value":3816,"label":"Gnome Mage (47)"},{"value":8567,"label":"Greater reborn mage (82)"},{"value":16689,"label":"Guthixian moss giant (68)"},{"value":15210,"label":"Har-Aken (Magic Tentacle) (800)"},{"value":7714,"label":"Icefiend (35)"},{"value":7715,"label":"Icefiend (35)"},{"value":3064,"label":"Lesser Demon Champion (113)"},{"value":8565,"label":"Lesser reborn mage (68)"},{"value":8348,"label":"Local mage (16)"},{"value":222,"label":"Monk (14)"},{"value":188,"label":"Monk of Zamorak (43)"},{"value":189,"label":"Monk of Zamorak (46)"},{"value":190,"label":"Monk of Zamorak (54)"},{"value":6471,"label":"Mosschin (30)"},{"value":194,"label":"Necromancer (39)"},{"value":126,"label":"Otherworldly being (63)"},{"value":12903,"label":"Reborn mage (40)"},{"value":6472,"label":"Redeyes (36)"},{"value":16690,"label":"Saradominist knight (68)"},{"value":10701,"label":"Seeker (86)"},{"value":5385,"label":"Skeleton (79)"},{"value":6473,"label":"Strongbones (36)"},{"value":3752,"label":"Torcher (51)"},{"value":4810,"label":"Vyrelady (98)"},{"value":4811,"label":"Vyrelady (98)"},{"value":4812,"label":"Vyrelady (98)"},{"value":4821,"label":"Vyrelady (98)"},{"value":4822,"label":"Vyrelord (98)"},{"value":4823,"label":"Vyrelord (98)"},{"value":4824,"label":"Vyrelord (98)"},{"value":4845,"label":"Vyrelord (98)"},{"value":6367,"label":"Zamorak mage (68)"},{"value":6368,"label":"Zamorak mage (68)"},{"value":16691,"label":"Zamorakian werewolf (68)"}]

Variable Description Data type
value The monster's ID int
label The monster's name string


levelGroup is a query for looking up all monsters with a combat level between two given levels. The URL for levelGroup queries is, where X is the lower threshold and Y is the higher threshold. The threshold levels are included in the result. For example, if we want to find all monsters between level 140 and 150, we'd go to, resulting in

[{"value":10532,"label":"Forgotten warrior (141)"},{"value":10533,"label":"Forgotten warrior (141)"},{"value":10534,"label":"Forgotten warrior (141)"},{"value":10535,"label":"Forgotten warrior (141)"},{"value":15297,"label":"Ate all the pies (147)"},{"value":2025,"label":"Ahrim the Blighted (150)"},{"value":2026,"label":"Dharok the Wretched (150)"},{"value":2027,"label":"Guthan the Infested (150)"},{"value":2028,"label":"Karil the Tainted (150)"},{"value":2029,"label":"Torag the Corrupted (150)"},{"value":2030,"label":"Verac the Defiled (150)"},{"value":19150,"label":"Throwing muspah (150)"},{"value":19151,"label":"Force muspah (150)"},{"value":19152,"label":"Bladed muspah (150)"}]

Variable Description Data type
value The monster's ID int
label The monster's name string

Finding monster statsEdit

As queries about a particular monster are not by name, it takes 2 queries to find a monster's stats by knowing just their name. This is done by first finding the ID of the monster, and then using that ID to conduct a query for the stats.

For example, say we wanted to know the stats of an Abyssal Demon, but did not know its ID number. First, we conduct a search for the monster by name. In this case, we will use "Abyssal". With this API, we cannot search multiple words as a single search term; i.e., if two terms are in the query, each is searched separately. If we added "demon" to the query, the result would include every monster named with "abyssal" and/or "demon". The result would be more monsters, not a more specific search. With our search for "abyssal", we obtain

[{"value":1615,"label":"Abyssal demon (98)"},{"value":2263,"label":"Abyssal leech (72)"},{"value":2264,"label":"Abyssal guardian (79)"},{"value":2265,"label":"Abyssal walker (77)"},{"value":6819,"label":"Abyssal parasite (64)"},{"value":6821,"label":"Abyssal lurker (73)"},{"value":7350,"label":"Abyssal titan (110)"}]

The only information that is desired here is the abyssal demons, so we can look at just

{"value":1615,"label":"Abyssal demon (98)"}

This gives us the ID of the monster, the number after "value". In this case, the ID for the abyssal demon is 1615, and we can now conduct a query with that to get its stats.

{"animations":{"death":1538,"attack":1537},"slayercat":"Abyssal demons","slayerlevel":85,"xp":"628.6","size":1,"lifepoints":8500,"weakness":"Slashing","id":1615,"poisonous":false,"magic":1,"attackable":true,"level":98,"defence":70,"description":"A denizen of the Abyss!","name":"Abyssal demon","ranged":1,"areas":["RuneScape Surface","The Abyss","Ancient cavern"],"attack":70,"aggressive":false,"members":false}


  • The textures of grass and trees in the Bestiary are currently more detailed than in-game.

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.