timedatelive

Free time-zone API

Live time-zone data for 500+ cities — IANA time zones, coordinates, country and flag. No API key. No sign-up. No rate limits. Free for personal and commercial use with attribution. Perfect for building world clocks, meeting schedulers and travel apps.

Base URL

https://timedatelive.com/api/

All endpoints return JSON with permissive CORS. Data is static and CDN-cached — fast and reliable.

GET /api/cities.json

All 500+ cities with their time zones and coordinates.

fetch("https://timedatelive.com/api/cities.json")
  .then(r => r.json())
  .then(data => console.log(data.count, data.cities[0]));

// Response:
{
  "count": 500,
  "cities": [
    {
      "slug": "lisbon",
      "name": "Lisbon",
      "country": "Portugal",
      "timezone": "Europe/Lisbon",
      "lat": 38.72,
      "lon": -9.14,
      "flag": "🇵🇹"
    }
    // ...
  ]
}

GET /api/timezones.json

All distinct IANA time zones covered.

fetch("https://timedatelive.com/api/timezones.json")
  .then(r => r.json());

// { "count": 119, "timezones": ["Africa/Cairo", "America/New_York", ...] }

Getting the live time

Time zones are IANA identifiers, so you can compute live local time entirely in the browser — no server needed:

const tz = "Asia/Tokyo"; // from /api/cities.json
const now = new Intl.DateTimeFormat("en-GB", {
  timeZone: tz, hour: "2-digit", minute: "2-digit", second: "2-digit"
}).format(new Date());
// "14:32:07"

Attribution

Free for personal and commercial use. Please include a visible link back to timedatelive.com wherever the data appears. That link is what keeps this API free.

Prefer a drop-in visual? Use our free embeddable widgets — no code required.

GET /api/visas.json

Digital nomad visa rules for 100 countries — income threshold, application fee, validity, processing time and whether health insurance is required. Figures are the published headline values in USD; null means the country publishes no figure for that field. Every row carries a link to the official immigration source it was taken from.

fetch("https://timedatelive.com/api/visas.json")
  .then(r => r.json())
  .then(d => console.log(d.count, d.visas[0]));

// Response:
{
  "count": 100,
  "updated": "2026-07-28",
  "currency": "USD",
  "visas": [
    {
      "slug": "albania",
      "country": "Albania",
      "nomad_visa": true,
      "min_income_usd_month": 820,
      "application_fee_usd": 100,
      "validity_months": 12,
      "processing_time": "2–4 weeks",
      "health_insurance_required": true,
      "official_source": "https://e-albania.al/"
    }
  ]
}

Updated as rules change. The same data is browsable as a sortable table on the Digital Nomad Visa Index.