Most free time APIs give you the current time in a zone and stop there. The hard part of time zones is the conversion edge cases and the rule changes, so I exposed the engine behind hourora.app as a plain JSON API. No key, no sign-up, CORS enabled, 120 requests per minute per client, IANA tzdata 2026e.
Current time
GET https://hourora.app/api/v1/time?tz=Europe/Bucharest Returns local time, ISO 8601 with offset, abbreviation, whether DST is active, ISO week, day of year, and the zone's next clock change.
Conversion that knows about the gaps
GET https://hourora.app/api/v1/convert?from=Europe/London&to=Asia/Tokyo&time=2027-03-28T01:30 01:30 on 28 March 2027 does not exist in London (the clocks skip 01:00–02:00). The API says so instead of guessing:
{ "status": "gap", "gapMinutes": 60, "note": "2027-03-28T01:30:00 does not exist in Europe/London: the clocks skip it (spring forward). Read with the offset in force before the change, it falls at 2027-03-28T02:30:00 local time.", "from": { "iso": "2027-03-28T02:30:00+01:00", "abbreviation": "BST" }, "to": { "iso": "2027-03-28T10:30:00+09:00", "abbreviation": "JST" } } The repeated hour in autumn comes back as "status": "overlap" with both candidate instants.
Every zone and its clock changes
GET https://hourora.app/api/v1/zones?country=CA GET https://hourora.app/api/v1/zones/America%2FVancouver?year=2026 The second one is how you find out that Vancouver has one transition in 2026 and none in 2027: British Columbia keeps its summer clock from November.
Cities and coordinates
GET https://hourora.app/api/v1/cities?q=sao&limit=5 GET https://hourora.app/api/v1/lookup?lat=44.43&lng=26.10 7,000 cities with slugs you can pass to /time?city=, and a coordinates-to-zone lookup.
Why another one?
Because the data behind it is the same compiled IANA release the site ships (about 15 KB gzipped, 1970–2060), updated within days of each tzdata release, and the engine is the one the site's converter and meeting planner use, so it is exercised by real traffic every day. Docs and the OpenAPI file: hourora.app/en/developers — /api/v1/openapi.json.
Free for personal and commercial use, no SLA; attribution appreciated, not required. Feedback on the response shapes is welcome.