Public holiday API and dataset

Everything on this site is also a JSON file. National public holidays for 44 countries across 2025, 2026 and 2027, generated at build time from the same code that renders the pages, so the API and the tables cannot disagree. No key, no rate limit, no account. CC BY 4.0.

Try it

curl https://holidaygrid.net/data/singapore/2027.json

Response

{
  "meta": { "datasetVersion": "1.0.0", "license": "https://creativecommons.org/licenses/by/4.0/", ... },
  "country": { "countryCode": "SG", "slug": "singapore", "dateFormat": "D MMMM YYYY", ... },
  "year": 2027,
  "status": { "status": "gazetted", "authority": "the Ministry of Manpower", "publishedOn": "2026-06-18", ... },
  "counts": { "holidays": 11, "onWeekends": 3, "movedToAnotherDay": 1, ... },
  "holidays": [
    { "date": "2027-01-01", "name": "New Year's Day", "weekday": "Friday",
      "movingRule": "fixed", "scope": "national" },
    ...
  ]
}

Endpoints

Every endpoint is a static file. GET only.
URLReturns
/data/schema.jsonField-by-field description of everything below.
/data/countries.jsonAll 44 countries, with holiday counts per year.
/data/holidays.jsonEvery country and every covered year in one file.
/data/{country}.jsonOne country, all covered years. For example /data/netherlands.json.
/data/{country}/{year}.jsonOne country and year, with long weekends, bridge days and working days. For example /data/australia/2026.json.
/data/year/{year}.jsonOne year across every country. For example /data/year/2026.json.
/corrections.jsonEvery correction applied to the source dataset, with its legal source.

The one thing to know before you use it

A holiday that falls on a weekend and is made up on another day is one object, not two. Its date is the nominal calendar date and its observedDate is the day people are actually off. If you want the day off, take observedDate ?? date. If you want the calendar date, take date. Counting both is how holiday totals end up higher than the government's own, and it is the single most common bug in this category.

Status, and why a year can be provisional

Every country and year carries a status. gazetted means an authority published that exact year and the object names it, with the publication date. statutory means the calendar is set in standing law and needs no annual announcement. computedmeans the year is past the point that country's authority has settled, so the dates come from the rules currently in force. Treat computed as a planning estimate. It is the honest label, not a disclaimer.

Licence and attribution

The dataset is published under CC BY 4.0. Use it commercially, redistribute it, build on it. Attribution is the only condition, and a link to holidaygrid.net satisfies it. The upstream dataset it builds on, date-holidays, is ISC and CC BY 3.0, which CC BY 4.0 is compatible with.

Suggested citation: HolidayGrid, National public holidays dataset v1.0.0, holidaygrid.net/data, CC BY 4.0

Practical notes

Found something wrong?

Genuine errors get fixed and the fix gets published in the corrections log with its source. Tell us. If the error is in the upstream dataset rather than in our layer, we report it there too.