As bibliotecas que os programadores usam para feriados portugueses — python-holidays, date-holidays, Nager.Date — têm os 13 feriados nacionais. Nenhuma delas tem os municipais: 308 datas, uma por concelho, que não existem noutro sítio em formato utilizável. Compilámo-las à mão, e estão aqui para quem precisar.

O que está disponível

308 registos, um por concelho, com estas colunas:

CampoO que é
concelho, distritoNome do concelho e do distrito (ou região autónoma).
slugIdentificador estável na URL — desambiguado nos dois pares de homónimos (Lagoa, Calheta).
dia, mesPreenchidos quando a data é fixa todos os anos; vazios quando é móvel.
regra_variavelDescrição da regra, em texto, quando a data muda de ano para ano (ex. "Segunda-feira depois do 3.º domingo de agosto").
origemO motivo histórico ou religioso do feriado, quando conhecido.
confirmadoVerdadeiro para 307 dos 308 registos. Ver a exceção abaixo.
notaSó preenchida quando confirmado é falso — explica a dúvida.

Para calcular a data real de um ano concreto a partir de regra_variavel: são só 23 padrões de texto distintos (ligados à Páscoa/Pentecostes/Ascensão, ou "o N.º dia-da-semana de um mês", às vezes "a seguir a" outro dia-da-semana de referência) — nenhum "parser" de linguagem natural, uma tabela explícita e auditável. Se precisares de o implementar do teu lado, escreve para geral@otimizador.pt que partilhamos a lista das 23 regras.

Licença: CC-BY 4.0

Podes usar estes dados livremente — copiar, redistribuir, incluir numa biblioteca ou serviço, comercial ou não — desde que credites a fonte. A atribuição em CC-BY não é só escrever o nome: se o formato o permitir (documentação, README, página de créditos), tem de incluir um link para a fonte — é essa a diferença entre citar e apontar para o sítio onde os dados vivem, e é o que torna esta licença diferente de um simples aviso "dados de otimizador.pt" sem hiperligação nenhuma. Sugestão de atribuição:

"Feriados municipais de Portugal, Otimizador, licença CC-BY 4.0."

Para além de cumprires a licença, esse link ajuda a manter este projeto pequeno de pé — é assim que alguém novo o encontra, e é o único "pagamento" que pedimos por manter os dados atualizados.

Texto legal completo da licença: Creative Commons Atribuição 4.0 Internacional.

Um registo por confirmar

Um dataset citado que está errado é pior do que não existir — por isso esta secção não é opcional. O feriado de Carrazeda de Ansiães tem duas datas divergentes em fontes distintas: 31 de agosto (fixa) e quarto sábado de agosto (móvel). Adotámos a segunda, porque vem de uma deliberação da própria câmara (9 de julho de 1959), mas ainda não a confirmámos oficialmente junto da autarquia. É o único registo com confirmado: false no dataset — usa com essa reserva até a nota desaparecer.

Metodologia

Os dados foram extraídos e transcritos da tabela "Feriados municipais" da Wikipédia em português, cruzados com a lista oficial de 308 municípios (geoapi.pt) para mapear cada concelho ao distrito ou região autónoma correto. Os 2 pares de concelhos homónimos (Lagoa: Algarve vs. Açores; Calheta: Madeira vs. Açores) foram desambiguados manualmente. Os 3 concelhos sem entrada na tabela consolidada (Serpa, Carrazeda de Ansiães, Lajes das Flores) foram confirmados um a um via a página de município correspondente.

Se encontrares um erro

Uma câmara pode mudar a data de um feriado municipal a qualquer altura — é o preço de um dataset vivo. Se encontrares uma data errada ou desatualizada, escreve para geral@otimizador.pt com a fonte. Corrigimos e voltamos a publicar.

E já agora: se o que precisas é só saber o feriado municipal do teu concelho, sem descarregar nada, está tudo em página própria, concelho a concelho — ou, ordenados por quanto rendem em dias de descanso, no ranking dos 308.