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
htmlCodeandunicodeare 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/groupvalues are space-separated — a live GET this run against/allshowed 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
categoryslug and agroupslug are not interchangeable, and using the wrong one 404s —animal-birdis a group, not a category: a live GET this run against/all/category/animal-birdreturned HTTP 404{"message":"emojis with this category do not exist"}, while/all/group/animal-birdreturned HTTP 200 with real data. Check which kind of slug you have before picking the route. /allreturns 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.