Get programmatic access to UK clock change data through our simple JSON API.
GET https://whendotheclockschange.uk/api/latest.json
GET https://whendotheclockschange.uk/api/v2.json
GET https://whendotheclockschange.uk/api/v1.json
Recommended: Use v2.json for new integrations (improved structure with both upcoming changes, proper timezones, and current status). Use latest.json to always get the newest version, or v1.json for legacy support.
{
"api_version": "2.0",
"generated_at": "2025-10-26T12:34:56Z",
"timezone": "Europe/London",
"current_offset": "+00:00",
"current_timezone_name": "GMT",
"in_daylight_saving": false,
"next_change": {
"date": "2026-03-29",
"datetime_utc": "2026-03-29T01:00:00Z",
"datetime_local": "2026-03-29T01:00:00+00:00",
"type": "spring_forward",
"days_until": 154,
"offset_before": "+00:00",
"offset_after": "+01:00",
"timezone_name_before": "GMT",
"timezone_name_after": "BST",
"hour_change": 1
},
"upcoming_changes": [
{
"date": "2026-03-29",
"datetime_utc": "2026-03-29T01:00:00Z",
"datetime_local": "2026-03-29T01:00:00+00:00",
"type": "spring_forward",
"days_until": 154,
"offset_before": "+00:00",
"offset_after": "+01:00",
"timezone_name_before": "GMT",
"timezone_name_after": "BST",
"hour_change": 1
},
{
"date": "2026-10-25",
"datetime_utc": "2026-10-25T01:00:00Z",
"datetime_local": "2026-10-25T02:00:00+01:00",
"type": "autumn_back",
"days_until": 364,
"offset_before": "+01:00",
"offset_after": "+00:00",
"timezone_name_before": "BST",
"timezone_name_after": "GMT",
"hour_change": -1
}
]
}
api_version - API version number ("2.0")generated_at - ISO 8601 timestamp (UTC) when data was generatedtimezone - IANA timezone identifier ("Europe/London")current_offset - Current UTC offset ("+00:00" or "+01:00")current_timezone_name - Current timezone abbreviation ("GMT" or "BST")in_daylight_saving - Boolean indicating if currently in British Summer Timenext_change - Object containing details about the next clock changeupcoming_changes - Array of both upcoming changes (spring and autumn):
date - ISO 8601 date (YYYY-MM-DD)datetime_utc - Full ISO 8601 timestamp in UTC when change occursdatetime_local - ISO 8601 timestamp in local time with offsettype - Either "spring_forward" or "autumn_back"days_until - Number of days until this changeoffset_before - UTC offset before the changeoffset_after - UTC offset after the changetimezone_name_before - Timezone name before ("GMT" or "BST")timezone_name_after - Timezone name after ("GMT" or "BST")hour_change - Clock adjustment (+1 forward, -1 back)| v1 Field | v2 Equivalent | Notes |
|---|---|---|
version |
api_version |
Renamed for clarity |
data.date |
next_change.datetime_utc |
Now includes actual time (01:00/02:00) with timezone |
data.type |
next_change.type |
Values changed: "forward" → "spring_forward", "back" → "autumn_back" |
data.days_until |
next_change.days_until |
Same functionality |
data.change |
Removed | Build your own UI text using the structured data |
| N/A | upcoming_changes |
New: array of both spring and autumn changes |
| N/A | current_offset, in_daylight_saving |
New: current timezone status |
Maintained for backward compatibility. New integrations should use v2.
{
"data": {
"change": "At 1:00am, clocks go forward to 2:00am",
"date": "2026-03-29T00:00:00",
"days_until": 142,
"type": "forward"
},
"generated_at": "2025-11-07T01:30:11.164344",
"version": "1.0"
}
# Python
import requests
response = requests.get('https://whendotheclockschange.uk/api/v2.json')
data = response.json()
print(f"Currently in {data['current_timezone_name']}")
print(f"Next change: {data['next_change']['type']} on {data['next_change']['date']}")
print(f"Days until: {data['next_change']['days_until']}")
# Show both upcoming changes
for change in data['upcoming_changes']:
print(f"{change['type']}: {change['date']} ({change['days_until']} days)")
// JavaScript
fetch('https://whendotheclockschange.uk/api/v2.json')
.then(response => response.json())
.then(data => {
console.log(`Currently: ${data.current_timezone_name} (${data.current_offset})`);
console.log(`In daylight saving: ${data.in_daylight_saving}`);
console.log(`Next change: ${data.next_change.type} in ${data.next_change.days_until} days`);
// Display both upcoming changes
data.upcoming_changes.forEach(change => {
console.log(`${change.type}: ${change.date}`);
});
});
# curl
curl https://whendotheclockschange.uk/api/v2.json
# Or get v1 for legacy format
curl https://whendotheclockschange.uk/api/v1.json
/api/v2.json for new integrationsv1.json, v2.json) for guaranteed stabilitylatest.json currently points to v2 and may change in the future