Skip to content

Bank holidays

What this does

Two related endpoints help you plan around UK public holidays.

  • GET /v1/uk/bank-holidays lists every bank holiday in a given year for England and Wales, Scotland, or Northern Ireland.
  • GET /v1/uk/bank-holiday answers a yes/no question: is this specific date a bank holiday?

No more guessing whether the office is closed or whether Easter Monday applies in Scotland.

Who it is for

  • HR and payroll teams building holiday calendars
  • Delivery cut-off calculators (“next working day”)
  • Booking systems blocking unavailable dates
  • Spreadsheets flagging red-letter days

List holidays for a year

GET /v1/uk/bank-holidays

Try it

https://fetch.li/v1/uk/bank-holidays?year=2026&division=england-and-wales

HTTP example

GET /v1/uk/bank-holidays?year=2026&division=england-and-wales HTTP/1.1
Host: fetch.li
Accept: application/json

curl

curl -sS "https://fetch.li/v1/uk/bank-holidays?year=2026&division=england-and-wales"

JavaScript fetch

const params = new URLSearchParams({
  year: "2026",
  division: "england-and-wales",
});
const response = await fetch(
  `https://fetch.li/v1/uk/bank-holidays?${params}`
);
const data = await response.json();
console.log(data.holidays);

Python requests

import requests

response = requests.get(
    "https://fetch.li/v1/uk/bank-holidays",
    params={"year": 2026, "division": "england-and-wales"},
)
response.raise_for_status()
print(response.json()["holidays"])

Example JSON response

{
  "year": 2026,
  "division": "england-and-wales",
  "holidays": [
    {
      "date": "2026-01-01",
      "title": "New Year's Day",
      "notes": null
    },
    {
      "date": "2026-04-03",
      "title": "Good Friday",
      "notes": null
    },
    {
      "date": "2026-04-06",
      "title": "Easter Monday",
      "notes": null
    },
    {
      "date": "2026-05-04",
      "title": "Early May bank holiday",
      "notes": null
    },
    {
      "date": "2026-05-25",
      "title": "Spring bank holiday",
      "notes": null
    },
    {
      "date": "2026-08-31",
      "title": "Summer bank holiday",
      "notes": null
    },
    {
      "date": "2026-12-25",
      "title": "Christmas Day",
      "notes": null
    },
    {
      "date": "2026-12-28",
      "title": "Boxing Day",
      "notes": "Substitute day"
    }
  ]
}

Parameters (bank-holidays)

Parameter Required Type Description
year Yes integer Four-digit year (e.g. 2026)
division No string england-and-wales (default), scotland, or northern-ireland

Check a single date

GET /v1/uk/bank-holiday

Try it

https://fetch.li/v1/uk/bank-holiday?date=2026-12-25&division=england-and-wales

HTTP example

GET /v1/uk/bank-holiday?date=2026-12-25&division=england-and-wales HTTP/1.1
Host: fetch.li
Accept: application/json

curl

curl -sS "https://fetch.li/v1/uk/bank-holiday?date=2026-12-25&division=england-and-wales"

JavaScript fetch

const response = await fetch(
  "https://fetch.li/v1/uk/bank-holiday?date=2026-12-25&division=england-and-wales"
);
const data = await response.json();
console.log(data.is_bank_holiday, data.title);

Python requests

import requests

response = requests.get(
    "https://fetch.li/v1/uk/bank-holiday",
    params={"date": "2026-12-25", "division": "england-and-wales"},
)
response.raise_for_status()
print(response.json())

Example JSON response

{
  "date": "2026-12-25",
  "division": "england-and-wales",
  "is_bank_holiday": true,
  "title": "Christmas Day",
  "weekday": "Friday"
}

When the date is not a holiday:

{
  "date": "2026-08-25",
  "division": "england-and-wales",
  "is_bank_holiday": false,
  "title": null,
  "weekday": "Tuesday"
}

Parameters (bank-holiday)

Parameter Required Type Description
date Yes string ISO date YYYY-MM-DD
division No string england-and-wales (default), scotland, or northern-ireland

Errors that can happen

HTTP error.code When
400 invalid_body Missing year or date, invalid format, or unknown division
404 not_found Year outside supported range
429 rate_limited Demo limit exceeded
500 internal Unexpected server error

Demo

GET endpoints work without an API key on the public demo tier (60 calls per hour per IP). POST /v1/vibe/classify needs a key.