Get the timezone and UTC offset at an instant
Signed in? Open this endpoint in the dashboard playground, which uses your organization automatically. Signed out, use Try in Playground below with your API key.
Returns the zone(s) whose timezone-boundary-builder polygon covers the point, with offset, abbreviation,
local time and the next transition after at. Polygons come from the full (not "now") release; offsets and
transitions come from Node ICU pinned to the same tzdb release (tzdb_version). More than one zone can be
returned at a disputed boundary. The response has no place_id or datasource.
Deviation (extra): any instant is accepted, not only 2025-01-01 through 2031-12-31; next_transition looks ahead 5 years from at.
Deviation (approximated): type is derived by comparing the offset with the smaller of the zone's January and July offsets of that year; abbreviation and offset come from ICU rather than a bundled table. Timestamps (at, local_time, transition at) have whole seconds and no fractional part, unlike Geoapify's .000.
Not supported: none; every upstream parameter is handled.
apiKey<token>Your API key from the dashboard, sent as ?apiKey=<key>.
lat*numberLatitude.
-90 <= value <= 90lon*numberLongitude.
-180 <= value <= 180at?stringRFC 3339 instant with an offset (Z or +HH:MM). Defaults to now. Percent-encode + as %2B
(an unencoded + before HH:MM is tolerated).
Deviation (extra): not limited to 2025-2031.
date-timeTimezone information.
application/json- response
lat*numberlon*numberat*stringThe instant used, UTC, whole seconds (the request at, or now).
date-timetzdb_version*stringtzdb release Node's ICU actually loaded (pinned to the release of the boundary polygons).
timezones*array<>One zone normally; more than one at a disputed boundary. Empty where no polygon covers the point (open ocean is covered by Etc/GMT zones in the release, so this is rare).
curl -X GET 'https://api.data.graphitelab.ai/v1/timezone?lat=45.42&lon=-75.69&at=2026-07-01T12%3A00%3A00Z'{ "lat": 45.42, "lon": -75.69, "at": "2026-07-01T12:00:00Z", "tzdb_version": "2026f", "timezones": [ { "name": "America/Toronto", "type": "daylightSaving", "utc_offset": "-04:00", "offset_seconds": -14400, "abbreviation": "EDT", "local_time": "2026-07-01T08:00:00-04:00", "next_transition": { "at": "2026-11-01T06:00:00Z", "before": { "type": "daylightSaving", "utc_offset": "-04:00", "offset_seconds": -14400, "abbreviation": "EDT" }, "after": { "type": "standard", "utc_offset": "-05:00", "offset_seconds": -18000, "abbreviation": "EST" }, "offset_change_seconds": -3600, "kind": "daylight-end" } } ]}