Art & Design — entry 008 of 20
EmojiHub
EmojiHub serves a database of 1,791 emoji sorted into categories and groups as plain JSON, with both the unicode character and an HTML code ready to embed for each entry. A live GET against the current gateway, emojihub.yurace.pro (the community-maintained successor to the original Heroku-hosted host named in its docs), returned genuine data with no key required and Access-Control-Allow-Origin: *, reconfirming both auth None and cors yes.
EmojiHub serves a database of 1,791 emoji -- confirmed by a live GET this run against `/all` -- as one static bulk dataset you can fetch whole, get one random entry from, or slice by category or group path segments, all keyless. A live GET this run against `/random` returned a single emoji record with both its HTML entity code and unicode codepoint(s).
GreatAPIs Score
Auth quickstart
- No API key, signup, or credit card required. A live GET this run returned genuine data while carrying `access-control-allow-origin: *` on an Origin-header probe -- nothing to configure before the first call.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Fetch a random emoji
GEThttps://emojihub.yurace.pro/api/random
{"name":"argentina","category":"flags","group":"flags","htmlCode":["🇦","🇷"],"unicode":["U+1F1E6","U+1F1F7"]}Try it
Developer reference
https://emojihub.yurace.pro/api- GET/random
- GET/all
- GET/all/category/{category}
Gotchas & limits
- `htmlCode` and `unicode` are always arrays, never bare strings -- confirmed live this run on both a single-codepoint entry and this multi-codepoint flag (two entries per array, one per regional-indicator codepoint pair). Code that treats either field as a scalar string will only render the first codepoint.
- Route slugs are hyphenated but the data's own `category`/`group` values are space-separated -- a live GET this run against `/all` showed entries like `"category":"smileys and people"`, while the matching route is `/all/category/smileys-and-people`. Don't naively slugify a value pulled from the response body and expect it to round-trip.
- A `category` slug and a `group` slug are not interchangeable, and using the wrong one 404s -- `animal-bird` is a group, not a category: a live GET this run against `/all/category/animal-bird` returned HTTP 404 `{"message":"emojis with this category do not exist"}`, while `/all/group/animal-bird` returned HTTP 200 with real data. Check which kind of slug you have before picking the route.
- `/all` returns the entire 1,791-entry dataset in one response with no pagination -- confirmed by a live GET this run. Filter through `/all/category/{category}` or `/all/group/{group}` first rather than fetching everything and filtering client-side.