Holiday API for Portugal

Holidays for all 308 Portuguese municipalities, with the official source for every date.

National, regional and municipal holidays, plus working-day calculations, in a REST API. Every date links to the publication that sets it.

Closed beta. We only use your email to give you access.
A · Published act B · Official page C · Secondary source, being verified

Coverage

Every municipality covered. Verification at the official source is under way.

Every holiday states the tier of the source it rests on. The tier tells you what evidence we hold for a date, not whether the date is right: most municipalities are still at tier C, with a date from public sources, regularly checked against other sources, that we have not yet confirmed at an official source.

308 municipalities covered 55 verified at the official source verification in progress

Regional holidays of the Azores and Madeira are not in the data yet.

Published act

Resolution or notice published in the Diário da República, 2nd series, or in a municipal bulletin.

Official page of the municipality

Published on the municipality's own domain.

Public secondary source

Encyclopaedias or compiled lists, used as a provisional base. It never counts as verified and moves up a tier when we find the official source.

Example

Guimarães, 2026

The municipal holiday on 24 June, with the link to its source, the tier of that source and the date of the last verification.

Requestcurl

$ curl -G https://api.calendas.pt/v1/holidays \-H "Authorization: Bearer $CALENDAS_API_KEY" \-d year=2026 \-d municipality=guimaraes

Response200 · application/json

{  "data": {    "year": 2026,    "municipality": {      "ine_code": "0308",      "name": "Guimarães",      "slug": "guimaraes",      "district": "Braga",      "region": null    },    "holidays": [      {        "date": "2026-01-01",        "name": "Ano Novo",        "name_en": "New Year's Day",        "commemorates": null,        "commemorates_en": null,        "slug": "ano-novo",        "scope": "national",        "recurrence": "1 de janeiro",        "recurrence_en": "1 January",        "source_url": "https://diariodarepublica.pt/dr/legislacao-consolidada/lei/2009-34546475",        "source_kind": "legislacao",        "source_title": "Diário da República · Código do Trabalho (Lei n.º 7/2009), art. 234.º",        "source_tier": "A",        "verified_at": "2026-10-30",        "evidence": {          "confirmed_years": [],          "recurrence_confirmed": false        }      },      …,      {        "date": "2026-06-24",        "name": "Feriado municipal de Guimarães",        "name_en": "Guimarães municipal holiday",        "commemorates": "Batalha de São Mamede (1128)",        "commemorates_en": null,        "slug": "feriado-municipal-guimaraes",        "scope": "municipal",        "recurrence": "24 de junho",        "recurrence_en": "24 June",        "source_url": "https://www.visitguimaraes.travel/pages/1150/?geo_article_id=986",        "source_kind": "pagina_institucional",        "source_title": null,        "source_tier": "B",        "verified_at": "2026-11-01",        "evidence": {          "confirmed_years": [],          "recurrence_confirmed": false        }      }    ]  },  "warnings": []}

2 of the 15 holidays of the year are shown; the full answer lists all of them. https://api.calendas.pt/v1/holidays?year=2026&municipality=guimaraes

Why it matters

A holiday is data. It needs an origin and a verification date.

Municipal holidays change.

A municipality can change its holiday by resolution. That is why every holiday of a municipality has the period in which it is in force, and a verification date.

Static lists do not say where they come from.

A copied spreadsheet does not show the source nor when it was confirmed. Here every date carries source_url, source_title, source_tier and verified_at.

A payroll mistake is expensive.

Work on a public holiday gives the right to extra pay or compensatory rest. A missing holiday, or one on the wrong date, ends up on the payslip.

Who it is for

For teams that build HR and payroll software.

HR and attendance

Leave planners, rosters and time tracking with the holidays of the municipality of each workplace.

Payroll and ERP

Business days, deadlines and premiums calculated on the right date, with the source that backs it.

International platforms

Teams in Portugal with the right local holidays, and holiday names in English too (name_en).