Calendars · Public data

Public holidays

Give sales patterns a calendar context.

holidays (Vacanza) · MIT · commons_pubdata.calendars.public_holidays

Read Markdown
Public holidays 2026: how many countries observe each day of the year (darker: more countries).
Public holidays 2026: how many countries observe each day of the year (darker: more countries).

Query it with DuckDB.

Bash
lhbox duckdb --catalog commons/pubdata
SQL · National holidays of Spain and the United States in 2026
SELECT country_code, date, name
FROM commons_pubdata.calendars.public_holidays
WHERE year = 2026 AND subdivision IS NULL AND country_code IN ('ES', 'US')
ORDER BY date;

Read it where you work.

Public, read-only data. With an account, lhbox duckdb attaches the catalog as commons_pubdata; an agent with the LakehouseBox connector opens it with open_public_catalog("commons/pubdata"). Without one, DuckDB reads the public files directly.

Example queries

  • National holidays of Spain and the United States in 2026
    SELECT country_code, date, name
    FROM commons_pubdata.calendars.public_holidays
    WHERE year = 2026 AND subdivision IS NULL AND country_code IN ('ES', 'US')
    ORDER BY date;
  • Your daily sales with a holiday flag
    SELECT s.day, s.revenue, h.name AS holiday
    FROM my.sales_daily AS s
    LEFT JOIN commons_pubdata.calendars.public_holidays AS h
      ON h.date = s.day AND h.country_code = s.country_code AND h.subdivision IS NULL;

Know your columns.

ColumnTypeMeaning
country_codestringISO 3166-1 alpha-2, upper case (joins reference.countries)
subdivisionstringISO 3166-2 subdivision code without the country prefix (US-CA -> CA); null for the national calendar
datedatethe day of the holiday
yearintthe calendar year, for cheap filtering
namestringthe holiday's name in English
observedbooleantrue when the row is a substitute day ("(observed)")

Join keys: country_code, date.

Before you query.

  1. Filter subdivision IS NULL for the national calendar; a subdivision row means "also (or only) here".
  2. The same day can carry several rows (two holidays, or national + subdivision).
  3. De-duplicate on (country_code, date) with ANY_VALUE(name) when you only need a flag.
  4. Years outside the rolling window are absent, not empty.

Source & licence.

Source
holidays (Vacanza)
Licence
MIT
Attribution
Public holiday rules from the holidays Python library, © Vacanza contributors, MIT licence.
Coverage
250 countries and 620+ subdivisions; ten years back, two years ahead (rolling)
Refresh
monthly, the whole table replaced; source version holidays 0.105
Table
commons/pubdata · calendars.public_holidays · Iceberg v2 · browse the catalog
Recipe
pubdata/recipes/public_holidays.py, registry entry pubdata/registry/public_holidays.yaml

Source: holidays (Vacanza) · MIT · Snapshot shown: 10 Oct 2026HTML for people. Markdown for agents.