BYTETOOLS

UK Bank Holidays API

Free official UK bank holidays API from GOV.UK with no key. Holidays for England, Wales, Scotland and Northern Ireland with dates and bunting flags. Tested.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the UK Bank Holidays API?

The GOV.UK bank holidays API is a free, key-free official endpoint listing bank holidays for England and Wales, Scotland and Northern Ireland separately, with dates, titles and notes.

This is the authoritative source for UK bank holidays, published by the Government Digital Service as a single JSON file. It is about as simple as an API gets — one URL, no parameters, no key.

The important detail is that the UK has three different bank holiday calendars, and the response reflects that: England and Wales, Scotland, and Northern Ireland each get their own division with different dates. Treating the UK as one calendar will produce wrong answers for Scottish and Northern Irish users.

Quick facts

Base URL
https://www.gov.uk
Authentication
No API key required.
Rate limit
No published limit — it is a static JSON file served from GOV.UK's CDN.
Pricing
Free under the Open Government Licence.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the UK Bank Holidays API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Fetch all UK bank holidays

GET https://www.gov.uk/bank-holidays.json

curl
curl 'https://www.gov.uk/bank-holidays.json'
JavaScript (fetch)
const res = await fetch("https://www.gov.uk/bank-holidays.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://www.gov.uk/bank-holidays.json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "england-and-wales": {
    "division": "england-and-wales",
    "events": [
      {
        "title": "New Year’s Day",
        "date": "2019-01-01",
        "notes": "",
        "bunting": true
      },
      {
        "title": "Good Friday",
        "date": "2019-04-19",
        "notes": "",
        "bunting": false
      },
      {
        "title": "Easter Monday",
        "date": "2019-04-22",
        "notes": "",
        "bunting": true
      },
      {
        "title": "Early May bank holiday",
        "date": "2019-05-06",
        "notes": "",
        "bunting": true
      },
      {
        "title": "Spring bank holiday",
        "date": "2019-05-27",
        "notes": "",
        "bunting": true
      },
      {
        "title": "Summer bank holiday",
        "date": "2019-08-26",
        "notes": "",
        "bunting": true
      },
      {
        "title": "Christmas Day",
        "date": "2019-12-25",
        "notes": "",
        "bunting": true
      },
      {
        "title": "Boxing Day",
        "date": "2019-12-26",
        "notes": "",
        "bunting": true
      },
      {
        "title": "New Year’s Day",
        "date": "2020-01-01",
        "notes": "",
        "bunting": true
      },
      {
        "title": "Good Friday",
        "date": "2020-04-10",
        "notes": "",
        "bunting": false
      },
      {
        "title": "Easter Monday",
        "date": "2020-04-13",
        "notes": "",
        "bunting": false
      },
      {
        "title": "Early May bank holiday (VE day)",
        "date": "2020-05-08",
        "notes": "",

Response fields

england-and-walesobject
Division containing the England and Wales calendar.
scotlandobject
Scottish calendar — dates differ, including 2 January and St Andrew's Day.
northern-irelandobject
Northern Ireland calendar, including St Patrick's Day and the Twelfth.
<division>.events[].titlestring
Holiday name.
<division>.events[].datestring
Date as YYYY-MM-DD.
<division>.events[].notesstring
Notes such as 'Substitute day' when a holiday is moved.
<division>.events[].buntingboolean
Whether the holiday traditionally involves bunting — a charmingly British field.

What you can build with the UK Bank Holidays API

  • Calculate working days for SLA and delivery estimates
  • Build a UK business-day calculator that respects regional differences
  • Show office closure dates for UK-wide teams
  • Schedule payroll and billing around bank holidays

Common errors and how to fix them

Wrong dates for Scottish users

The UK has three separate bank holiday calendars.

Fix: Read the correct division — scotland and northern-ireland differ meaningfully from england-and-wales.

Limited future coverage

GOV.UK publishes only a few years ahead.

Fix: Do not assume dates exist for years far in the future; check before relying on them.

UK Bank Holidays API — frequently asked questions

Is there an official UK bank holidays API?

Yes, GOV.UK publishes one at /bank-holidays.json, free with no API key, under the Open Government Licence.

Why are there three different calendars?

England and Wales, Scotland, and Northern Ireland have different bank holidays. Scotland has 2 January and St Andrew's Day; Northern Ireland has St Patrick's Day and the Twelfth. Always use the right division.

What is the bunting field?

A genuinely present boolean indicating whether the holiday traditionally involves bunting. It is charming, and safe to ignore.

How far into the future does it go?

Usually a couple of years. Bank holidays are confirmed by government in advance but not indefinitely, so check the data rather than extrapolating.

Tools that pair with this API

UK Bank Holidays is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.