Hourora

Sneltoetsen

/
Een stad zoeken
H
Wisselen tussen 12 en 24 uur
S
Seconden tonen of verbergen
T
Thema: dag, nacht, automatisch
P
Aardbol pauzeren of hervatten
?
Deze lijst
NL

Voor ontwikkelaars

Een gratis tijdzone-API

Dezelfde engine waarop Hourora draait, als eenvoudige JSON: de tijd overal, omrekeningen die rekening houden met zomertijd, elke IANA-tijdzone en de klokwijzigingen ervan. Zonder sleutel, zonder registratie.

In één oogopslag

Basis-URL
https://hourora.app/api/v1
Formaat
JSON (UTF-8), alleen GET-verzoeken
Authenticatie
Geen: geen sleutel, geen registratie, geen cookies
CORS
Open voor elke origin, dus je kunt hem vanuit een browser aanroepen
Rate limit
120 verzoeken per minuut per client
Tijdgegevens
IANA tzdata 2026e, gecompileerd door Hourora
Machineleesbare beschrijving
OpenAPI 3.1-document

Probeer het live

Kies een voorbeeld of bewerk het pad en verstuur het. Het verzoek gaat rechtstreeks van je browser naar de API.

Antwoord

Het antwoord verschijnt hier.

De endpoints

Elk endpoint beantwoordt GET met JSON. Tijden zijn in ISO 8601; offsets zijn minuten ten oosten van UTC (New York is in de winter −300) en staan ook als tekst (−05:00).

Huidige tijd

GET/api/v1/time

De huidige tijd in een tijdzone of stad: lokale tijd, UTC-offset, afkorting, zomertijd en de volgende klokwijziging. Zonder parameters: UTC.

Parameters

NaamBetekenis
tzoptioneelIANA-tijdzonenaam, bijv. Europe/London. Aliassen zoals Asia/Calcutta worden geaccepteerd en beantwoord met de huidige naam.
cityoptioneelStadsslug in plaats van tz, bijv. london (vind slugs met /cities).

Voorbeeldverzoek

curl "https://hourora.app/api/v1/time?tz=Europe/London"

Voorbeeldantwoord

{
  "zone": "Europe/London",
  "local": "2026-10-15T15:06:10",
  "iso": "2026-10-15T15:06:10+01:00",
  "offsetMinutes": 60,
  "offset": "+01:00",
  "utcOffset": "UTC+1",
  "abbreviation": "BST",
  "dst": true,
  "city": null,
  "utc": "2026-10-15T14:06:10.073Z",
  "unixMs": 1792073170073,
  "date": "2026-10-15",
  "time": "15:06:10",
  "weekday": "Thursday",
  "dayOfYear": 288,
  "isoWeek": 42,
  "dstObserved": true,
  "nextTransition": {
    "at": "2026-10-25T01:00:00.000Z",
    "unixMs": 1792890000000,
    "type": "dst-end",
    "fromOffsetMinutes": 60,
    "toOffsetMinutes": 0,
    "shiftMinutes": -60,
    "fromAbbreviation": "BST",
    "toAbbreviation": "GMT",
    "localBefore": "2026-10-25T02:00:00",
    "localAfter": "2026-10-25T01:00:00"
  },
  "tzdata": "2026e"
}

Echt antwoord van deze server.

Een tijd omrekenen

GET/api/v1/convert

Een kloktijd in de ene zone, getoond in een andere. Meldt wanneer de tijd in een zomertijdgat valt (hij bestaat niet) of in een overlap (hij komt twee keer voor).

Parameters

NaamBetekenis
fromverplichtZone (of stadsslug) waarin de tijd wordt gelezen.
toverplichtZone (of stadsslug) waarin hij wordt getoond.
timeoptioneelKloktijd in de from-zone, YYYY-MM-DDTHH:mm (seconden optioneel, zonder offset), 1970–2060. Standaard: nu.

Voorbeeldverzoek

curl "https://hourora.app/api/v1/convert?from=America/New_York&to=Asia/Kolkata&time=2026-10-16T15:00"

Voorbeeldantwoord

{
  "status": "ok",
  "requested": "2026-10-16T15:00:00",
  "utc": "2026-10-16T19:00:00.000Z",
  "unixMs": 1792177200000,
  "from": {
    "zone": "America/New_York",
    "local": "2026-10-16T15:00:00",
    "iso": "2026-10-16T15:00:00-04:00",
    "offsetMinutes": -240,
    "offset": "-04:00",
    "utcOffset": "UTC-4",
    "abbreviation": "EDT",
    "dst": true
  },
  "to": {
    "zone": "Asia/Kolkata",
    "local": "2026-10-17T00:30:00",
    "iso": "2026-10-17T00:30:00+05:30",
    "offsetMinutes": 330,
    "offset": "+05:30",
    "utcOffset": "UTC+5:30",
    "abbreviation": "IST",
    "dst": false,
    "dayOffset": 1
  },
  "differenceMinutes": 570,
  "tzdata": "2026e"
}

Echt antwoord van deze server.

Tijdzones weergeven

GET/api/v1/zones

Elke IANA-tijdzone met de huidige UTC-offset, afkorting, zomertijdstatus, landen en belangrijkste stad.

Parameters

NaamBetekenis
countryoptioneelISO 3166-landcode, bijv. GB, om alleen dat land te houden.

Voorbeeldverzoek

curl "https://hourora.app/api/v1/zones?country=GB"

Voorbeeldantwoord

{
  "asOf": "2026-10-15T14:06:10.073Z",
  "count": 1,
  "tzdata": "2026e",
  "zones": [
    {
      "id": "Europe/London",
      "offsetMinutes": 60,
      "offset": "+01:00",
      "utcOffset": "UTC+1",
      "abbreviation": "BST",
      "dst": true,
      "countries": [
        "GB",
        "GG",
        "IM"
      ],
      "mainCity": "London"
    }
  ]
}

Echt antwoord van deze server; lijsten ingekort tot de eerste 3 items.

Eén tijdzone

GET/api/v1/zones/{id}

Eén IANA-zone: de aliassen, landen en steden, de huidige offset, de volgende klokwijziging en elke wijziging in een bepaald jaar.

Parameters

NaamBetekenis
idin het padIANA-zonenaam; behoud de schuine streep of codeer die als %2F.
yearoptioneelJaar waarvan de klokwijzigingen worden weergegeven, 1970–2060. Standaard: dit jaar.

Voorbeeldverzoek

curl "https://hourora.app/api/v1/zones/America%2FNew_York?year=2027"

Voorbeeldantwoord

{
  "id": "America/New_York",
  "aliases": [
    "US/Eastern"
  ],
  "countries": [
    {
      "code": "US",
      "name": "United States"
    }
  ],
  "cities": [
    {
      "slug": "new-york",
      "name": "New York"
    },
    {
      "slug": "philadelphia",
      "name": "Philadelphia"
    },
    {
      "slug": "miami",
      "name": "Miami"
    }
  ],
  "now": {
    "zone": "America/New_York",
    "local": "2026-10-15T10:06:10",
    "iso": "2026-10-15T10:06:10-04:00",
    "offsetMinutes": -240,
    "offset": "-04:00",
    "utcOffset": "UTC-4",
    "abbreviation": "EDT",
    "dst": true,
    "utc": "2026-10-15T14:06:10.073Z",
    "standardOffsetMinutes": -300,
    "dstObserved": true
  },
  "nextTransition": {
    "at": "2026-11-01T06:00:00.000Z",
    "unixMs": 1793512800000,
    "type": "dst-end",
    "fromOffsetMinutes": -240,
    "toOffsetMinutes": -300,
    "shiftMinutes": -60,
    "fromAbbreviation": "EDT",
    "toAbbreviation": "EST",
    "localBefore": "2026-11-01T02:00:00",
    "localAfter": "2026-11-01T01:00:00"
  },
  "year": 2027,
  "dstObservedInYear": true,
  "transitions": [
    {
      "at": "2027-03-14T07:00:00.000Z",
      "unixMs": 1805007600000,
      "type": "dst-start",
      "fromOffsetMinutes": -300,
      "toOffsetMinutes": -240,
      "shiftMinutes": 60,
      "fromAbbreviation": "EST",
      "toAbbreviation": "EDT",
      "localBefore": "2027-03-14T02:00:00",
      "localAfter": "2027-03-14T03:00:00"
    },
    {
      "at": "2027-11-07T06:00:00.000Z",
      "unixMs": 1825567200000,
      "type": "dst-end",
      "fromOffsetMinutes": -240,
      "toOffsetMinutes": -300,
      "shiftMinutes": -60,
      "fromAbbreviation": "EDT",
      "toAbbreviation": "EST",
      "localBefore": "2027-11-07T02:00:00",
      "localAfter": "2027-11-07T01:00:00"
    }
  ],
  "tzdata": "2026e"
}

Echt antwoord van deze server; lijsten ingekort tot de eerste 3 items.

Steden zoeken

GET/api/v1/cities

Steden waarvan de naam overeenkomt, beste treffers en grootste steden eerst, elk met land, coördinaten en tijdzone.

Parameters

NaamBetekenis
qverplichtDeel van een stadsnaam, accenten optioneel (maximaal 80 tekens).
limitoptioneelAantal resultaten, 1–50. Standaard 10.
countryoptioneelISO 3166-landcode, bijv. GB, om alleen dat land te houden.

Voorbeeldverzoek

curl "https://hourora.app/api/v1/cities?q=lond&limit=3"

Voorbeeldantwoord

{
  "query": "lond",
  "count": 3,
  "total": 7,
  "cities": [
    {
      "slug": "london",
      "name": "London",
      "asciiName": "London",
      "country": {
        "code": "GB",
        "name": "United Kingdom"
      },
      "region": "Westminster",
      "zone": "Europe/London",
      "lat": 51.5,
      "lng": -0.1167,
      "population": 7994105,
      "capital": true,
      "url": "https://hourora.app/en/london"
    },
    {
      "slug": "londrina",
      "name": "Londrina",
      "asciiName": "Londrina",
      "country": {
        "code": "BR",
        "name": "Brazil"
      },
      "region": "Paraná",
      "zone": "America/Sao_Paulo",
      "lat": -23.3,
      "lng": -51.18,
      "population": 496035,
      "capital": false,
      "url": "https://hourora.app/en/londrina"
    },
    {
      "slug": "london-ontario",
      "name": "London",
      "asciiName": "London",
      "country": {
        "code": "CA",
        "name": "Canada"
      },
      "region": "Ontario",
      "zone": "America/Toronto",
      "lat": 42.97,
      "lng": -81.25,
      "population": 340900,
      "capital": false,
      "url": "https://hourora.app/en/london-ontario"
    }
  ]
}

Echt antwoord van deze server.

Eén stad

GET/api/v1/cities/{slug}

Eén stad op basis van de slug, met de huidige offset van de tijdzone en de volgende klokwijziging.

Parameters

NaamBetekenis
slugin het padStadsslug, bijv. tokyo.

Voorbeeldverzoek

curl "https://hourora.app/api/v1/cities/tokyo"

Voorbeeldantwoord

{
  "slug": "tokyo",
  "name": "Tokyo",
  "asciiName": "Tokyo",
  "country": {
    "code": "JP",
    "name": "Japan"
  },
  "region": "Tokyo",
  "zone": "Asia/Tokyo",
  "lat": 35.685,
  "lng": 139.7514,
  "population": 22006300,
  "capital": true,
  "url": "https://hourora.app/en/tokyo",
  "now": {
    "zone": "Asia/Tokyo",
    "local": "2026-10-15T23:06:10",
    "iso": "2026-10-15T23:06:10+09:00",
    "offsetMinutes": 540,
    "offset": "+09:00",
    "utcOffset": "UTC+9",
    "abbreviation": "JST",
    "dst": false,
    "utc": "2026-10-15T14:06:10.073Z"
  },
  "nextTransition": null,
  "tzdata": "2026e"
}

Echt antwoord van deze server.

Coördinaten naar tijdzone

GET/api/v1/lookup

De dichtstbijzijnde vermelde stad bij een breedte- en lengtegraad, en de tijdzone daarvan. Een benadering: zonegrenzen worden niet gemodelleerd.

Parameters

NaamBetekenis
latverplichtBreedtegraad in decimale graden, −90 tot 90.
lngverplichtLengtegraad in decimale graden, −180 tot 180.

Voorbeeldverzoek

curl "https://hourora.app/api/v1/lookup?lat=48.85&lng=2.35"

Voorbeeldantwoord

{
  "query": {
    "lat": 48.85,
    "lng": 2.35
  },
  "approximate": true,
  "method": "nearest listed city (great-circle distance); time-zone borders are not modelled",
  "distanceKm": 2.2,
  "city": {
    "slug": "paris",
    "name": "Paris",
    "asciiName": "Paris",
    "country": {
      "code": "FR",
      "name": "France"
    },
    "region": "Île-de-France",
    "zone": "Europe/Paris",
    "lat": 48.8667,
    "lng": 2.3333,
    "population": 4957589,
    "capital": true,
    "url": "https://hourora.app/en/paris"
  },
  "zone": "Europe/Paris",
  "now": {
    "zone": "Europe/Paris",
    "local": "2026-10-15T16:06:10",
    "iso": "2026-10-15T16:06:10+02:00",
    "offsetMinutes": 120,
    "offset": "+02:00",
    "utcOffset": "UTC+2",
    "abbreviation": "CEST",
    "dst": true,
    "utc": "2026-10-15T14:06:10.073Z"
  },
  "tzdata": "2026e"
}

Echt antwoord van deze server.

Gegevensversie

GET/api/v1/tzdata

Uit welke release van de IANA-tijdzonedatabase de antwoorden komen, en wanneer Hourora zijn gegevens voor het laatst heeft bijgewerkt.

Parameters

Geen parameters.

Voorbeeldverzoek

curl "https://hourora.app/api/v1/tzdata"

Voorbeeldantwoord

{
  "version": "2026e",
  "source": "IANA Time Zone Database",
  "sourceUrl": "https://www.iana.org/time-zones",
  "dataDate": "2026-10-13",
  "range": {
    "from": "1970-01-01",
    "to": "2060-12-31"
  },
  "zones": 344,
  "links": 253,
  "cities": 7269,
  "note": "Outside the compiled range, offsets fall back to the server runtime's own tzdata."
}

Echt antwoord van deze server.

Fouten

Ook een fout is JSON: de HTTP-status, een vaste code voor je programma en een bericht voor mensen.

{
  "error": {
    "code": "unknown_zone",
    "message": "\"Mars/Base\" is not an IANA time zone name. List them with /api/v1/zones."
  }
}
StatusCodesWanneer
400missing_parameter, invalid_parameterEen parameter ontbreekt of heeft niet de verwachte vorm.
404unknown_zone, unknown_city, unknown_country, not_foundDeze tijdzone, stad, dit land of dit endpoint bestaat niet.
429rate_limitedTe veel verzoeken van je client; wacht het aantal seconden in Retry-After af.
500internal_errorEr ging iets mis aan onze kant. Probeer het later opnieuw.

Zo werkt het

Limieten en caching

Elke client mag tot 120 verzoeken per minuut sturen, met korte pieken toegestaan. Daarboven antwoordt de API met 429 en een Retry-After-header. De limiet beschermt een gratis dienst; heb je meer nodig, gebruik dan een cache.

Elk antwoord geeft aan hoe lang het in de cache mag blijven (Cache-Control). De huidige tijd wordt nooit gecachet; zonelijsten, stadsgegevens en coördinaatopzoekingen vijf minuten; zoekopdrachten naar steden en omrekeningen van een bepaalde tijd een dag.

Bouw je een klok? Haal de offset één keer op, laat de klok lokaal lopen en haal hem opnieuw op na de volgende klokwijziging die het antwoord vermeldt. Het is niet nodig om elke seconde te pollen.

Waar de antwoorden vandaan komen

Offsets, afkortingen en klokwijzigingen komen uit Hourora’s eigen gecompileerde kopie van de IANA-tijdzonedatabase, release 2026e, voor 1970–2060. Buiten die periode worden de ingebouwde gegevens van de server gebruikt, die ouder kunnen zijn.

Omrekeningen behandelen de randen van de zomertijd expliciet: een tijd die wordt overgeslagen wanneer de klok vooruitgaat, wordt gemeld als gat, en een tijd die twee keer voorkomt wanneer de klok teruggaat, als overlap, met beide tijdstippen.

Het opzoeken van coördinaten geeft de dichtstbijzijnde van ongeveer 7.200 vermelde steden en de zone van die stad. Vlak bij een grens, op zee of in een dunbevolkt gebied kan dat afwijken van de zone die op dat punt werkelijk geldt.

Gebruiksvoorwaarden

Vragen

Goed om te weten

Is de Hourora-API echt gratis?

Ja. Er is geen sleutel, geen account en geen betaald abonnement. Een rate limit per client houdt de dienst eerlijk voor iedereen.

Kan ik hem vanuit JavaScript in de browser aanroepen?

Ja. Elk endpoint staat cross-origin-verzoeken van elke website toe (CORS), en er zijn geen inloggegevens nodig.

Hoe gaat hij om met zomertijd?

Elk antwoord wordt voor het exacte tijdstip berekend volgens de IANA-regels. Het convert-endpoint meldt ook wanneer een gevraagde kloktijd niet bestaat (klok vooruit) of twee keer voorkomt (klok achteruit).

Hoe nauwkeurig is het opzoeken van coördinaten?

Het geeft de tijdzone van de dichtstbijzijnde vermelde stad, wat bijna overal klopt waar mensen wonen. Zonegrenzen worden niet gemodelleerd, dus vlak bij een grens of op zee kan het fout zijn.