Games & Comics — entry 037 of 75

Hyrule Compendium

Verified Aug 2026

The Hyrule Compendium API is a community-built, keyless reference for every catalogued entry in The Legend of Zelda: Breath of the Wild's in-game Hyrule Compendium — creatures, monsters, materials, equipment, and treasure — including descriptions, common locations, and item images. It's now served from its own domain on Heroku; the historic botw-compendium.herokuapp.com host is gone, so the stored URL is updated to the live endpoint.

The Hyrule Compendium API is a keyless JSON catalogue of every entry in Breath of the Wild's in-game compendium — creatures, monsters, materials, equipment, and treasure. A live GET this run against /compendium/entry/silver_lynel returned a genuine 653 B entry at HTTP 200, content-type: application/json, with the actual payload nested one level down under a data key.

zeldabreath-of-the-wildcompendiumgame-data
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score88out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs14/20Documentation URL provided
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 88 on greatapis.com
<a href="https://greatapis.com/api/hyrule-compendium/"><img src="https://greatapis.com/badge/hyrule-compendium.svg" alt="Scored 88 on greatapis.com"></a>

Auth quickstart

  1. No API key, signup, or credit card required — the live GET above returned real entry data with no auth header of any kind attached. CORS is origin-echoing rather than a fixed wildcard: a request this run with Origin: https://greatapis.com got back access-control-allow-origin: https://greatapis.com, while the identical request with no Origin header at all got back access-control-allow-origin: * instead — direct browser use works either way, but code that asserts the header is always one exact value will be wrong half the time.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Look up a single compendium entry by name

GEThttps://api.hyrule-compendium.com/api/v3/compendium/entry/silver_lynel

200 application/json

{
  "data": {
    "category": "monsters",
    "common_locations": null,
    "description": "Silver Lynels are not to be trifled with. They have been influenced by Ganon's fiendish magic, so they are the strongest among the Lynel species, surpassing even the strength of those with white manes. The term \"silver\" denotes not only their color but also their rarity. The purple stripes help them to stand out even more.",
    "dlc": false,
    "drops": [
      "lynel horn",
      "lynel hoof",
      "lynel guts",
      "topaz",
      "ruby",
      "sapphire",
      "diamond",
      "star fragment"
    ],
    "id": 124,
    "image": "https://api.hyrule-compendium.com/v3/compendium/entry/silver_lynel/image",
    "name": "silver lynel"
  },
  "message": "",
  "status": 200
}

The image field is an absolute URL to a separate live PNG endpoint (130,259 B, confirmed live this run), not a relative path or embedded image data — rendering the entry's artwork takes a second request. message is an empty string on a successful lookup like this one; it's only populated with human-readable text on the error path below.

Try it

Developer reference

Base URLhttps://api.hyrule-compendium.com/api/v3
Key endpoints
  • GET/compendium/entry/{entry}
  • GET/compendium/category/{category}
  • GET/compendium/all
  • GET/compendium/master_mode/all

Gotchas & limits

  • HTTP status is mirrored inside the body even on error responses — a live GET this run against /compendium/entry/notathing returned real HTTP 404 headers AND put "status":404 inside a 72 B JSON body, {"data":{},"message":"Entry \"notathing\" does not exist","status":404}. Note data is present but an empty object rather than absent, so a check like if (body.data) is truthy even on this error path — read status or message, not just whether data exists.
  • CORS access-control-allow-origin echoes the caller's Origin rather than serving a fixed wildcard — confirmed live above: a request with Origin: https://greatapis.com got that exact origin back, while the same request with no Origin header got * instead. Don't hardcode an expectation of either value.
  • common_locations is null on some entries and a populated array on others in the very same corpus — confirmed live above: Silver Lynel's common_locations is null, while a live GET this run against /compendium/all found "red-tusked boar" with common_locations: ["Akkala Highlands", "Deep Akkala"]. Code that assumes the field is always one shape will break on the other.
  • /compendium/master_mode/all is a separate, much smaller dataset, not a filtered view of /compendium/all — live GETs this run returned 177,813 B for the full compendium vs. just 2,823 B for master mode; /compendium/category/monsters (43,260 B) is a third, differently-scoped listing again, not a subset computed client-side.

Availability

Uptime100%
Median latency304 ms
Last checkUp · 200 · Sep 2026

3 checks since Aug 2026. A person runs this check by hand, not an automated monitor.