Emoji API
Free, read-only emoji data as static JSON. No API key, no sign-up, no rate limit, CORS enabled — fetch it straight from the browser.
Quick start
fetch('https://emojireach.com/api/v1/emojis.en.json')
.then((r) => r.json())
.then((data) => {
console.log(data.count); // how many emoji
console.log(data.emoji[0]); // { slug, char, name, group, keywords, … }
}); Endpoints
/api/v1/index.json Every endpoint, every locale, every release slug — start here.
/api/v1/emojis.{locale}.json Slug, character, localized name, group, subgroup, codepoints, keywords, shortcodes and skin-tone variants for every emoji we know about.
/api/v1/top-100.{locale}.json The 100 most-used emoji, ranked, with names resolved in your locale.
/api/v1/new/{release}.json The emoji a given release introduced. Available: emoji-18-0, emoji-17-0, emoji-16-0, emoji-15-1.
{locale} is one of: en, es, fr, de, hi, pt-BR, id, ar, tr.
Licence and attribution
The data is available under CC-BY 4.0. Emoji names and keywords derive from Unicode CLDR (Unicode-3.0 licence). Attribution is requested, not enforced — a link back to emojireach.com is how this stays free to run.
Stability
The API is versioned by directory: everything under /api/v1/ keeps its shape.
Fields may be added without notice; existing fields will not change meaning or
disappear inside a version. A breaking change becomes /api/v2/, and v1 stays
up. Responses are cached for 24 hours.
Not offered, deliberately: writes, authentication, and per-emoji endpoints. If you need one emoji, fetch the bulk file once and cache it — it is smaller than you would expect and it saves us both a lot of requests.
Fair use
There is no rate limiter, which is a courtesy rather than an invitation. It is served from a CDN as static files, so caching a response for a day costs you nothing and keeps this sustainable. If you are building something that needs more than this offers, get in touch via the contact page — we would rather hear from you than block you.