Read-only JSON for embedding profiles into your own pages, bots, or research tools. Free, no API key, CORS open. Rate-limited to 120 requests / minute / IP.
GET /api/persons/<slug>Returns one profile. 404 if the slug is unknown or the profile isn't published yet.
GET /api/persons?category=<slug>&limit=20&cursor=<id>Filter list by category, country, year, or zodiac. Cursor pagination by id. Default 20 / max 50 per page. Returns { total, nextCursor, items[] }.
GET /api/search?q=<term>Fuzzy trigram match. Returns up to 10 hits ordered by name similarity, popularity tiebreak.
GET /api/openapi.jsonFull OpenAPI 3.1 spec. Paste into editor.swagger.io or any client codegen tool.
curl https://hotbirthdays.com/api/persons/sontungmtp
{
"slug": "sontungmtp",
"name": "Son Tung MTP",
"url": "https://hotbirthdays.com/sontungmtp",
"birthDate": "1994-07-05",
"birthYear": 1994,
"country": { "code": "VN", "name": "Vietnam", "slug": "vietnam" },
"zodiac": {
"western": { "key": "CANCER", "name": "Cancer" },
"chinese": { "animal": "Dog", "element": "Wood" }
},
...
}Anonymous calls are throttled at 120 req/min/IP. If you're building something that needs more, drop a note via the address on the homepage and we'll mint you an API key. Pass it asX-Api-Keyheader (or ?key=query param) and the per-key bucket is 1200 req/min.