Developer API

Free

Simple REST API for time zones, current time, and public holidays. No API key required. 100 requests per day per IP on the free tier.

Base URL
worldontime.app
Free quota
100 req/day
API key
Not required

Rate limiting

All responses include rate-limit headers:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 94
X-RateLimit-Reset: 1745867520    # Unix timestamp when quota resets
Retry-After: 3600                 # Only present on 429 responses

When the quota is exceeded, the API returns HTTP 429 with a Retry-After header.

CORS

All endpoints include Access-Control-Allow-Origin: * — safe to call from any browser or web app.

Endpoints

GET/api/v1/time

Current date and time in any IANA timezone.

Parameters
timezonerequiredIANA timezone name (e.g. America/New_York)
Example request
curl "https://worldontime.app/api/v1/time?timezone=America/New_York"
Example response
{
  "timezone": "America/New_York",
  "datetime": "2026-04-27T14:32:00.000-04:00",
  "date": "2026-04-27",
  "time": "14:32:00",
  "utc_offset": "-04:00",
  "day_of_week": "Monday",
  "week_number": 18,
  "unix": 1745781120,
  "is_dst": true,
  "abbreviation": "EDT"
}
GET/api/v1/timezone

Convert a time between two IANA timezones.

Parameters
fromrequiredSource IANA timezone (e.g. America/New_York)
torequiredTarget IANA timezone (e.g. Asia/Tokyo)
timeoptionalSource time as HH:MM or ISO datetime. Defaults to now.
Example request
curl "https://worldontime.app/api/v1/timezone?from=America/New_York&to=Asia/Tokyo&time=09:00"
Example response
{
  "from": {
    "timezone": "America/New_York",
    "datetime": "2026-04-27T09:00:00.000-04:00",
    "time": "09:00",
    "abbreviation": "EDT",
    "is_dst": true
  },
  "to": {
    "timezone": "Asia/Tokyo",
    "datetime": "2026-04-27T22:00:00.000+09:00",
    "time": "22:00",
    "abbreviation": "JST",
    "is_dst": false
  },
  "offset": "+13h",
  "offset_minutes": 780
}
GET/api/v1/holidays

Public holidays for any country and year.

Parameters
countryrequiredISO 3166-1 alpha-2 country code (e.g. US, GB, DE)
yearrequiredYear (1900–2100)
Example request
curl "https://worldontime.app/api/v1/holidays?country=US&year=2026"
Example response
{
  "country": "US",
  "year": 2026,
  "count": 11,
  "holidays": [
    {
      "date": "2026-01-01",
      "name": "New Year's Day",
      "local_name": "New Year's Day",
      "fixed": true,
      "global": true,
      "types": [
        "Public"
      ]
    },
    {
      "date": "2026-07-04",
      "name": "Independence Day",
      "local_name": "Independence Day",
      "fixed": true,
      "global": true,
      "types": [
        "Public"
      ]
    }
  ]
}

Error format

All errors return JSON with an error field.

// HTTP 422
{
  "error": "Unknown timezone: Foo/Bar. Use an IANA timezone name."
}

// HTTP 429
{
  "error": "Rate limit exceeded. Maximum 100 requests per day.",
  "docs": "https://worldontime.app/developers"
}

IANA timezone names

Use standard IANA tz database names like America/New_York, Europe/London, Asia/Tokyo. Abbreviations like EST or GMT±N are not accepted. Full list: Wikipedia — tz database.

Questions or higher limits? Open an issue on GitHub.