festivos.io

Methodology

How the data is built, what we measure and where each holiday comes from. Trust in this data matters more than a pretty UI: here's the detail.

How it's built

Three layers on the INE key

The output unit is a municipality-year record for each of the 8,132 INE codes. It combines national and regional levels (BOE and regional gazettes) with the local holidays currently available; local coverage is measured and published separately.

Every holiday keeps its specific official source: the gazette reference and its URL when available. We don't replace the gazette: we link it.

The site never duplicates the data: it reads the L1 layer (/v1/) and serves it in JSON and iCalendar through stable, year-specific URLs; their content may be corrected when an official source changes.

What we measure

Coverage: named vs. generic

National and regional layers are assembled from the BOE and regional resolutions. Local coverage is reported separately, and historical gaps in any layer are declared instead of filled by inference.

We distinguish two states: "named" (Santa Tecla, San Isidro…) — unique, gazette-verified content — and "generic" (just "Festivo local"), when the date is known but the gazette hasn't yet given us the name.

That distinction governs indexing: we only publish a municipality page as indexable if it has ≥1 named local holiday; the rest stays accessible but out of the index. The live figure is on Coverage.

See coverage

Population and analytics

Three INE operations, explicit denominators

The official Municipal Register layer publishes the 2024 and 2025 revisions, including total population, men and women. Calendar year 2026 explicitly falls back to the latest complete municipal register, 2025; the provisional 1 July 2026 ECP only covers Spain, regions, provinces and islands and is never presented as a 2026 municipal register.

The 2021–2025 Annual Census has its own resident-population total and provides sex, 21 age bands, citizenship, birthplace and mean age. Every percentage and profile comparison uses the same Census and year: a Census variable is never divided by a Municipal Register population.

The analytics layer is our own processing of published calendars. Only municipalities with exactly two distinct local dates enter rankings and distributions; all others remain published with an exclusion reason. The longitudinal panel compares one common municipal cohort and freezes population weights.

Daily impact deduplicates INE codes. It is exact for the records already published, but is a lower bound when local holidays with incomplete coverage are involved; no published record does not automatically prove zero.

See observatory

Cadence

Updates and versioning

The dataset is regenerated from the sources and published per year (2024–2026). Each year's URL remains stable but may receive corrections; municipality JSON files expose version and last_updated.

Relevant data changes are recorded in the changelog.

Sources

Attribution per administration

We reuse public-sector information under Law 37/2007, citing the source. These are the literal attributions per level; every holiday keeps an official reference and, when available, a document link.

National and regional

Fuente: Agencia Estatal Boletín Oficial del Estado (BOE)

Ley 37/2007 (reutilización de información del sector público; cita la fuente) · www.boe.es

Territorial reference (municipalities, INE)

Fuente: Instituto Nacional de Estadística (INE)

Ley 37/2007 (reutilización de información del sector público; cita la fuente) · www.ine.es

Local holidays, by region
  • Fuente: Ciudad Autónoma de Ceuta
  • Fuente: Ciudad Autónoma de Melilla
  • Fuente: Comunidad de Madrid
  • Fuente: Generalitat de Catalunya — Departament d'Empresa i Treballanalisi.transparenciacatalunya.cat/resource/b4eh-r8up.json
  • Fuente: Generalitat Valenciana
  • Fuente: Gobierno de Aragón — Aragón Open Dataopendata.aragon.es
  • Fuente: Gobierno de Canarias
  • Fuente: Gobierno de Cantabria
  • Fuente: Gobierno de La Rioja
  • Fuente: Gobierno de Navarra — Nafarroako Gobernua
  • Fuente: Gobierno del Principado de Asturias
  • Fuente: Gobierno Vasco — Eusko Jaurlaritza
  • Fuente: Govern de les Illes Balears
  • Fuente: Junta de Andalucíawww.juntadeandalucia.es
  • Fuente: Junta de Castilla y León
  • Fuente: Junta de Comunidades de Castilla-La Mancha
  • Fuente: Junta de Extremadura
  • Fuente: Región de Murcia (CARM)
  • Fuente: Xunta de Galicia

Data under CC BY 4.0.

Verify

How to check and correct

Every holiday keeps source.ref and, when present, source.url. Verify the available reference or link before any legal, employment or tax decision. If you spot an error or a missing local-holiday name, write to us and we'll fix it with the source.

Report a record