Countries
Every country and territory in the IANA database, with its identity, default time zone, and a summary of the time zones, named abbreviations, and cities it contains.
A country can span many UTC offsets, so — unlike a time zone or a city — a country has no
single "current time" and these endpoints take no at parameter. The daylight-saving
summary is structural: it reports which of the country's zones take part in DST, not
whether they happen to be in DST right now.
At a glance
| Endpoint | What you get |
|---|---|
GET /v1/countries |
Paginated list — ISO codes, names, flags — filterable by region and DST. |
GET /v1/countries/{iso2|slug} |
One country: default zone, counts, DST summary, dependent territories. |
List countries
GET /v1/countries
Returns a paginated list. Each row is lean: the ISO 3166-1 alpha-2 code, name, slug, flag emoji, and ISO region.
Example — region-grouped country dropdown
A signup form wants its country selector grouped by region, Europe first:
curl "https://api.timezone.io/v1/countries?region=Europe&sort=name" \
-H "Authorization: Bearer YOUR_API_TOKEN"
{
"data": [
{
"iso2": "AX",
"name": "Åland Islands",
"slug": "aland-islands",
"emoji": "🇦🇽",
"region": "Europe",
"links": { "self": "https://api.timezone.io/v1/countries/aland-islands" }
},
{
"iso2": "AL",
"name": "Albania",
"slug": "albania",
"emoji": "🇦🇱",
"region": "Europe",
"links": { "self": "https://api.timezone.io/v1/countries/albania" }
}
],
"meta": {
"current_page": 1,
"per_page": 25,
"total": 53,
"tzdb_version": "2025.2",
"generated_at": "2026-06-12T09:00:00+00:00"
},
"links": {
"first": "https://api.timezone.io/v1/countries?region=Europe&sort=name&page=1",
"last": "https://api.timezone.io/v1/countries?region=Europe&sort=name&page=3",
"prev": null,
"next": "https://api.timezone.io/v1/countries?region=Europe&sort=name&page=2"
}
}
(Remaining rows trimmed.) Repeat per region, or fetch all pages once and cache — country data changes about as often as borders do (see rate limits on caching).
Query parameters
| Parameter | Type | Description |
|---|---|---|
q |
string | Search across name, iso2, iso3, and slug. Max 100 characters. |
region |
string | Keep one ISO region (Americas, Europe, Asia, Africa, Oceania). Case-insensitive. |
sub_region |
string | Keep one ISO sub-region (e.g. Western Europe). Case-insensitive. |
observes_dst |
boolean | true/false (also 1/0). Keep countries that have, or lack, any DST-observing zone. |
sort |
string | name or iso2. Prefix with - for descending. Default name. |
detail |
string | concise (default) or full. full returns the detail shape per row. |
per_page |
integer | Results per page, 1–100. Default 25. |
page |
integer | Page number, 1 or greater. Default 1. |
Retrieve a country
GET /v1/countries/{iso2|slug}
Fetch a single country by its unique slug (united-states) or its ISO 3166-1 alpha-2
iso2 code (US, case-insensitive). Both are unique, so there is never any ambiguity; an
unknown value returns 404.
Example — pre-flight check before scheduling across Australia
Before offering "9 am Australia time" to a customer, check how fragmented the country actually is. The answer: twelve zones, and only seven of them change their clocks —
curl https://api.timezone.io/v1/countries/australia \
-H "Authorization: Bearer YOUR_API_TOKEN"
{
"data": {
"iso2": "AU",
"iso3": "AUS",
"numeric_code": "036",
"name": "Australia",
"slug": "australia",
"emoji": "🇦🇺",
"region": "Oceania",
"sub_region": "Australia and New Zealand",
"population": null,
"default_timezone": {
"iana": "Australia/Sydney",
"display_name": "Sydney"
},
"counts": {
"timezones": 12,
"abbreviations": 8,
"cities": 8,
"dependencies": 4
},
"dst": {
"observes": true,
"timezones_in_dst": 7,
"timezones_without_dst": 5
},
"dependencies": [
{
"code": "CX",
"name": "Christmas Island",
"slug": "christmas-island"
},
{
"code": "CC",
"name": "Cocos (Keeling) Islands",
"slug": "cocos-keeling-islands"
},
{
"code": "HM",
"name": "Heard Island and McDonald Islands",
"slug": "heard-island-and-mcdonald-islands"
},
{ "code": "NF", "name": "Norfolk Island", "slug": "norfolk-island" }
],
"links": {
"self": "https://api.timezone.io/v1/countries/australia",
"timezones": "https://api.timezone.io/v1/timezones?country=AU",
"cities": "https://api.timezone.io/v1/cities?country=AU",
"web": "https://timezone.io/countries/australia"
}
},
"meta": {
"tzdb_version": "2025.2",
"generated_at": "2026-06-12T09:00:00+00:00"
}
}
Reading it: dst.observes: true with a 7/5 split means "Australia time" is genuinely
ambiguous — in summer, Sydney and Brisbane disagree by an hour even though both are
"Eastern". Follow links.timezones (or pass ?include=timezones) to list the actual
zones and let the user pick; default_timezone is the sensible pre-selection.
Query parameters
| Parameter | Type | Description |
|---|---|---|
include |
string | Comma-separated related data to embed: timezones, abbreviations, cities. |
Response fields
| Field | Description |
|---|---|
iso2 / iso3 / numeric_code |
The ISO 3166-1 codes. |
region / sub_region |
The ISO region and sub-region. |
default_timezone |
The country's primary time zone as {iana, display_name}, or null. |
population |
Latest population from Wikidata, or null. |
counts |
Number of timezones, distinct abbreviations, cities, and dependent dependencies. |
dst |
observes (does any zone take part in DST), and the split of zones timezones_in_dst (take part) vs timezones_without_dst (do not). Structural — not a current-moment reading. |
dependencies |
Dependent territories as [{code, name, slug}]. |
links |
Related API URLs (self, timezones, cities) plus web, the human-readable page. |
Going deeper
?include=timezonesembeds the country's zones as lean rows,?include=abbreviationsits distinct named standards,?include=citiesits cities. Combine them:?include=timezones,cities— one request instead of three.- Dependencies are separate countries. Puerto Rico is not among the United States'
zones or cities — it is its own entry (
/countries/puerto-rico), linked fromdependencies. default_timezoneis a convention, not a law — it is the country's most prominent zone, useful as a dropdown pre-selection, never a substitute for asking the user.
See Errors for the full list of responses.