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.
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.
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.
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.
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.
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.
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.
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.
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.
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
{
"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.
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.