Principes

  • Adresse de base : https://jours-libres.alpha.my-gardeo.fr/v1. Toutes les requêtes sont des GET.
  • Les réponses sont en JSON UTF-8, sous la forme {"data": …, "meta": …}. meta rappelle la requête interprétée, la licence et l'attribution.
  • Les dates suivent le format AAAA-MM-JJ. Elles sont inclusives et exprimées dans le calendrier local de la zone : une période du 17 octobre au 1er novembre comprend ces deux jours.
  • Le paramètre lang (code ISO 639-1 : fr, en, de…) choisit la langue du champ name. Sans lui, l'en-tête Accept-Language décide, puis l'anglais. Quand une traduction manque, l'anglais puis le français la remplacent. Le champ names donne toujours toutes les traductions connues.
  • Les requêtes multi-origines (CORS) sont ouvertes : l'API s'appelle depuis un navigateur.

Pays, subdivisions et zones

Un pays est découpé en subdivisions : départements en France, Länder en Allemagne, cantons en Suisse, communautés en Espagne, län en Suède… Chaque subdivision appartient à une zone de vacances scolaires (par exemple FR-ZA, la zone A) et à une zone de jours fériés, c'est-à-dire un régime (par exemple FR-ALSACE-MOSELLE).

Trois façons d'interroger les périodes :

  • Par subdivision (subdivision=FR-D67) : l'API retrouve la zone de vacances et le régime de jours fériés. C'est la façon recommandée.
  • Par zone (zone=FR-ZB) : directement une zone de vacances ou un régime de jours fériés.
  • Pour tout le pays : sans subdivision ni zone, chaque période indique si elle vaut pour tout le pays (nationwide) et, sinon, la liste des zones concernées.

Pays

GET /v1/countries

Liste des pays couverts et, pour chacun, ce que l'API fournit : jours fériés, vacances scolaires, granularité, années et sources.

ParamètreTypeRôle
includeUncoveredbooléenAjoute les pays ISO sans aucune donnée, avec « available: false ».
europeanUnionbooléenNe garde que les 27 pays de l'Union européenne.
langtexteLangue des noms.
curl "https://jours-libres.alpha.my-gardeo.fr/v1/countries?europeanUnion=true&lang=fr"

GET /v1/countries/{code}

Détail d'un pays : couverture, zones avec leur nombre de subdivisions, textes officiels relevés et limites connues.

ParamètreTypeRôle
langtexteLangue des noms.
curl "https://jours-libres.alpha.my-gardeo.fr/v1/countries/IT"

GET /v1/countries/{code}/subdivisions

Subdivisions sélectionnables d'un pays, avec leur zone de vacances et leur régime de jours fériés.

ParamètreTypeRôle
qtexteRecherche par nom ou par code, sans accents ni majuscules : « rhone », « 69 », « bayern ».
langtexteLangue des noms.
curl "https://jours-libres.alpha.my-gardeo.fr/v1/countries/FR/subdivisions?q=rhone"

GET /v1/countries/{code}/zones

Zones de vacances scolaires et régimes de jours fériés d'un pays, chacun avec la liste de ses subdivisions.

ParamètreTypeRôle
kindschool ou publicNe garde qu'un type de zone.
langtexteLangue des noms.
curl "https://jours-libres.alpha.my-gardeo.fr/v1/countries/FR/zones?kind=school"

Jours fériés et vacances scolaires

GET /v1/public-holidays

Jours fériés. Chaque jour indique s'il vaut pour tout le pays et, sinon, les régimes concernés.

ParamètreTypeRôle
countrycode ISO, obligatoirePays, par exemple FR.
subdivisioncodeSubdivision, par exemple FR-D69 ou DE-BY.
zonecodeZone du même type que la liste demandée, à la place d'une subdivision.
yearAAAAUne année civile entière.
from, toAAAA-MM-JJUne plage de dates, à la place de year. 1096 jours au plus. Par défaut : l'année en cours.
langtexteLangue des libellés.
curl "https://jours-libres.alpha.my-gardeo.fr/v1/public-holidays?country=FR&subdivision=FR-D67&year=2026"

GET /v1/school-holidays

Vacances scolaires, regroupées quand plusieurs zones partagent les mêmes dates.

ParamètreTypeRôle
countrycode ISO, obligatoirePays, par exemple FR.
subdivisioncodeSubdivision, par exemple FR-D69 ou DE-BY.
zonecodeZone du même type que la liste demandée, à la place d'une subdivision.
yearAAAAUne année civile entière.
from, toAAAA-MM-JJUne plage de dates, à la place de year. 1096 jours au plus. Par défaut : l'année en cours.
langtexteLangue des libellés.
curl "https://jours-libres.alpha.my-gardeo.fr/v1/school-holidays?country=FR&from=2026-09-01&to=2027-08-31"

Calendrier d'une zone

GET /v1/calendar

Jours fériés et vacances scolaires ensemble, pour un pays ou une subdivision. meta rappelle la zone de vacances, le régime de jours fériés et le fuseau horaire retenus.

ParamètreTypeRôle
countrycode ISO, obligatoirePays.
subdivisioncodeSubdivision.
year, from, todatesComme pour les listes.
langtexteLangue des libellés.
curl "https://jours-libres.alpha.my-gardeo.fr/v1/calendar?country=CH&subdivision=CH-GE&year=2026"

Un jour donné

GET /v1/is-holiday

Dit si une date est fériée ou en vacances. Avec une subdivision, isPublicHoliday et isSchoolHoliday valent pour elle ; sans subdivision, pour tout le pays seulement. Les listes donnent le détail, zones comprises.

ParamètreTypeRôle
countrycode ISO, obligatoirePays.
subdivisioncodeSubdivision.
dateAAAA-MM-JJPar défaut : aujourd'hui, dans le fuseau de la zone.
langtexteLangue des libellés.
curl "https://jours-libres.alpha.my-gardeo.fr/v1/is-holiday?country=DE&subdivision=DE-BY&date=2026-08-15"

Flux iCalendar

GET /v1/calendar.ics

Les jours fériés et les vacances d'un pays ou d'une subdivision au format iCalendar, pour abonner un agenda. Par défaut : de l'année précédente à l'année suivante. Les événements sont des journées entières, marquées disponibles.

ParamètreTypeRôle
countrycode ISO, obligatoirePays.
subdivisioncodeSubdivision.
from, toAAAA-MM-JJPlage personnalisée.
langtexteLangue des titres.
curl "https://jours-libres.alpha.my-gardeo.fr/v1/calendar.ics?country=FR&subdivision=FR-D69&lang=fr"

Export et sources

GET /v1/export.json.gz

Toute la base en un fichier JSON compressé, regénéré après chaque synchronisation : pays, subdivisions, zones et périodes, avec leur provenance. C'est la voie à suivre pour tout usage en masse.

curl "https://jours-libres.alpha.my-gardeo.fr/v1/export.json.gz"

GET /v1/sources

Les sources, leur licence et l'état de leur dernière synchronisation.

curl "https://jours-libres.alpha.my-gardeo.fr/v1/sources"

Objet période

ChampDescription
dateJours fériés seulement : le jour, identique à startDate.
startDate, endDatePremier et dernier jour, inclus.
dayCountNombre de jours de la période.
weekdayJour de la semaine du premier jour, en anglais : monday…
name, namesLibellé dans la langue demandée, et toutes ses traductions.
nationwideVrai quand la période vaut pour toutes les zones du pays.
zonesCodes des zones concernées ; vide quand nationwide est vrai.
sourceProvenance : id, name, license et, pour un texte officiel, document avec son éditeur, son titre et son adresse.
{
  "date": "2026-12-26",
  "startDate": "2026-12-26",
  "endDate": "2026-12-26",
  "dayCount": 1,
  "name": "2ème jour de Noël",
  "names": {"fr": "2ème jour de Noël"},
  "nationwide": false,
  "zones": ["FR-ALSACE-MOSELLE"],
  "source": {"id": "fr-gouv", "name": "Jours fériés en France", "license": "Licence Ouverte 2.0 (Etalab)", "document": null}
}

Limites d'usage

  • 60 requêtes par minute et 5 000 par jour et par adresse IP (par préfixe /64 en IPv6).
  • 20 téléchargements de l'export par jour et par adresse IP.
  • Chaque réponse porte RateLimit-Limit, RateLimit-Remaining et RateLimit-Policy. Une réponse 429 ajoute Retry-After et RateLimit-Reset, en secondes.
  • Une plage de dates couvre au plus 1096 jours.
  • Les réponses se gardent en cache une heure (Cache-Control) et portent un ETag : renvoyez-le dans If-None-Match pour recevoir un 304, qui compte toutefois dans le quota.
  • Pour de gros volumes, téléchargez l'export complet plutôt que d'interroger l'API en boucle.

Erreurs

CodeerrorQuand
400invalid_parameterParamètre absent ou mal formé ; parameter le nomme.
404not_foundPays, subdivision ou zone inconnus ; resource et identifier les précisent.
405method_not_allowedAutre méthode que GET.
429rate_limitedLimite atteinte ; retryAfter donne l'attente en secondes.
503export_not_readyL'export n'a pas encore été généré.

Licence et attribution

Les données sont publiées sous Open Database License (ODbL) 1.0, qu'impose l'une des sources, OpenHolidays. Vous pouvez les utiliser, y compris commercialement, à condition de :

  • citer « Jours libres » et les sources, par exemple : « Jours fériés et vacances scolaires : Jours libres (ODbL), d'après le ministère de l'Éducation nationale, calendrier.api.gouv.fr, OpenHolidays et Nager.Date » ;
  • publier sous la même licence toute base de données que vous en dérivez et que vous rendez publique.

Un produit qui se contente d'afficher ces données (une application, un site) n'a pas à être sous ODbL ; seule l'attribution est due. Le détail est sur la page Sources.