API Calendrier Marocain | Jours Fériés & Ouvrables REST + SDK Python Holidays API
National holidays of any year and Religious holidays of past years
National holidays of any year and Religious holidays of past years
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/calendar-api-ma-holidays-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Calendar Holidays API
version: v1
summary: Calendar API for Moroccan Holidays and Open Business Days
description: '
## Try Calendar API
This interactive panel allows you to explore the whole API and to understand the different datastructures and parameters
used by every endpoint. You can also test every **active** APIKey you have.
## Setup your APIKey
Copy any **active** APIKey from your console and set it in the `Authentication` side panel.
That''s it :-), now you can explore any endpoint
## Holidays
This API allows to list, search and check if a `date` is a Moroccan holiday.
| Endpoint | Description |
| ------------------------ | :--------------------------------------------------------------------------------------------------------------------------------- |
| **/holidays/is-holiday** | Checks if a date is an `Official` Holiday |
| **/holidays/{year}** | List the holidays of the year. |
| **/holidays** | Lists all national Holidays. Since Morocco is a Kingdom, there are some Holidays that depend on the birthday of the current King. |
**N.B:**
Please note that if it''s a **future** `year`, the **religious holidays** are `Estimated` and not official because they depend on the moon sighting.
Once confirmed, the Holiday becomes `Official` and the adequate flag will be updated accordingly.
## Business Days (bdays)
This API calculates the `next` and `previous` **Open Business Day** of a date. You can also get the Open Days for a whole year or any month of a year
| Endpoint | Description |
| ------------------------- | ----------------------------------------------------------------------------------------------- |
| **/bdays/{year}** | Generate the Business days for the whole `year` |
| **/bdays/{year}/{month}** | Generate the Business days of a `month` of the `year` |
| **/bdays/next** | Calculate **the next** Open day relative to the provided `date` |
| **/bdays/previous** | Calculate **the previous** Open day relative to the provided `date` |
| **/bdays/count** | Count the business days between 2 dates (included) |
| **/bdays/between** | List the business days between 2 dates (included) |
| **/bdays/span/month** | Calculate the interval (Start/End date) of a `month`. i.e: Interval of the month 5 of year 2025 |
| **/bdays/span/quarter** | Calculate the interval (Start/End date) of a `quarter`. i.e: Interval of the Q2 of year 2024 |
| **/bdays/span/semester** | Calculate the interval (Start/End date) of a `semester`. i.e: Interval of the S1 of year 2026 |
| **/bdays/span/year** | Calculate the interval (Start/End date) of the `year`. i.e: Interval of the year 2021 |
## Data dictionary
### Holiday Type:
| Value | Description |
| --------------- | :--------------------------------------------------------------------------- |
| **National** | The date is a national Holiday |
| **Religious** | The date is a Religious Holiday (Check the status if it''s Confirmed or not) |
| **Exceptional** | The date is an exceptional Holiday |
### HolidayStatus (status)
| Value | Description |
| ------------- | :--------------------------------------------------------- |
| **Official** | The Holiday is Official |
| **Estimated** | Religious Holidays are estimated before the moon sighting |
'
contact:
name: UNRAVEL DESIGNS
url: https://unraveldesigns.ma
email: ud@unraveldesigns.ma
license:
name: Proprietary
servers:
- url: https://calendar-api.ma
description: Casablanca (production) — resolved from the relative server "/" published in the original spec at https://calendar-api.ma/schema/openapi.json
security:
- apiKey: []
- sessionCookie: []
tags:
- name: Holidays
description: National holidays of any year and Religious holidays of past years
x-tag-expanded: false
paths:
/api/v1/holidays:
get:
tags:
- Holidays
summary: List Holidays
operationId: ApiV1HolidaysHolidays
parameters:
- name: description
in: query
schema:
oneOf:
- type: string
- type: 'null'
type: string
minLength: 2
title: description
description: 'Case insensitive textual search. Supports wildcards. NB: Accents are respected'
examples:
- null
- trô
- Trava
- Amaz
description: 'Case insensitive textual search. Supports wildcards. NB: Accents are respected'
required: false
deprecated: false
allowEmptyValue: false
allowReserved: false
examples:
description-example-1:
summary: 'null: Disable this filter'
description-example-2:
summary: Search `Fête du trône`
value: trô
description-example-3:
summary: Search `Fête du travail`
value: Trava
description-example-4:
summary: Search `Nouvel An Amazigh`
value: Amaz
- name: holiday_type
in: query
schema:
$ref: '#/components/schemas/CalHolidayType'
description: 'There are Three Types of holidays:
- **Religious**: Include only Religious holidays. i.e: Eid el fitr, ...
- **National**: Include only National holidays. i.e: Fête du travail, Fête du trône, ...
- **Exceptional**: Include only Exceptional holidays.
- **ND::Null**: Disable this filter'
required: false
deprecated: false
allowEmptyValue: false
allowReserved: false
examples:
holiday_type-example-1:
summary: 'null: Disable this filter'
value: ND
- name: day
in: query
schema:
oneOf:
- type: integer
- type: 'null'
type: integer
maximum: 31
minimum: 1
title: day
description: Filter by the Day of the Holiday
examples:
- null
- 1
- 14
description: Filter by the Day of the Holiday
required: false
deprecated: false
allowEmptyValue: false
allowReserved: false
examples:
day-example-1:
summary: 'null: Disable this filter'
day-example-2:
summary: Day = 1
value: 1
day-example-3:
summary: Day = 14
value: 14
- name: month
in: query
schema:
oneOf:
- type: integer
- type: 'null'
type: integer
maximum: 12
minimum: 1
title: month
description: Filter by the Month of the Holiday
examples:
- null
- 1
- 5
description: Filter by the Month of the Holiday
required: false
deprecated: false
allowEmptyValue: false
allowReserved: false
examples:
month-example-1:
summary: 'null: Disable this filter'
month-example-2:
summary: Month = 1
value: 1
month-example-3:
summary: Month = 5
value: 5
responses:
'200':
description: Request fulfilled, document follows
headers: {}
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Holiday'
type: array
'400':
description: Bad request syntax or unsupported method
content:
application/json:
schema:
properties:
status_code:
type: integer
detail:
type: string
extra:
additionalProperties: {}
type:
- 'null'
- object
- array
type: object
required:
- detail
- status_code
description: Validation Exception
examples:
- status_code: 400
detail: Bad Request
extra: {}
deprecated: false
/api/v1/holidays/{year}:
get:
tags:
- Holidays
summary: Holidays of a Year
operationId: ApiV1HolidaysYearHolidaysYear
parameters:
- name: year
in: path
schema:
type: integer
maximum: 9999.0
minimum: 1.0
title: year
description: Year
examples:
- 2025
- 2026
description: Year
required: true
deprecated: false
examples:
year-example-1:
summary: Year 2025
value: 2025
year-example-2:
summary: Year 2026
value: 2026
- name: description
in: query
schema:
oneOf:
- type: string
- type: 'null'
type: string
minLength: 2
title: description
description: 'Case insensitive textual search. Supports wildcards. NB: Accents are respected'
examples:
- null
- trô
- Trava
- Amaz
description: 'Case insensitive textual search. Supports wildcards. NB: Accents are respected'
required: false
deprecated: false
allowEmptyValue: false
allowReserved: false
examples:
description-example-1:
summary: 'null: Disable this filter'
description-example-2:
summary: Search `Fête du trône`
value: trô
description-example-3:
summary: Search `Fête du travail`
value: Trava
description-example-4:
summary: Search `Nouvel An Amazigh`
value: Amaz
- name: day
in: query
schema:
oneOf:
- type: integer
- type: 'null'
type: integer
maximum: 31
minimum: 1
title: day
description: Filter by the Day of the Holiday
examples:
- null
- 1
- 14
description: Filter by the Day of the Holiday
required: false
deprecated: false
allowEmptyValue: false
allowReserved: false
examples:
day-example-1:
summary: 'null: Disable this filter'
day-example-2:
summary: Day = 1
value: 1
day-example-3:
summary: Day = 14
value: 14
- name: month
in: query
schema:
oneOf:
- type: integer
- type: 'null'
type: integer
maximum: 12
minimum: 1
title: month
description: Filter by the Month of the Holiday
examples:
- null
- 1
- 5
description: Filter by the Month of the Holiday
required: false
deprecated: false
allowEmptyValue: false
allowReserved: false
examples:
month-example-1:
summary: 'null: Disable this filter'
month-example-2:
summary: Month = 1
value: 1
month-example-3:
summary: Month = 5
value: 5
- name: holiday_type
in: query
schema:
$ref: '#/components/schemas/CalHolidayType'
description: 'There are Three Types of holidays:
- **Religious**: Include only Religious holidays. i.e: Eid el fitr, ...
- **National**: Include only National holidays. i.e: Fête du travail, Fête du trône, ...
- **Exceptional**: Include only Exceptional holidays.
- **ND::Null**: Disable this filter'
required: false
deprecated: false
allowEmptyValue: false
allowReserved: false
examples:
holiday_type-example-1:
summary: 'null: Disable this filter'
value: ND
responses:
'200':
description: Request fulfilled, document follows
headers: {}
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Holiday'
type: array
'400':
description: Bad request syntax or unsupported method
content:
application/json:
schema:
properties:
status_code:
type: integer
detail:
type: string
extra:
additionalProperties: {}
type:
- 'null'
- object
- array
type: object
required:
- detail
- status_code
description: Validation Exception
examples:
- status_code: 400
detail: Bad Request
extra: {}
deprecated: false
/api/v1/holidays/is-holiday:
get:
tags:
- Holidays
summary: Check if a date is a Holiday
operationId: ApiV1HolidaysIsHolidayIsHoliday
parameters:
- name: date
in: query
schema:
type: string
format: date
title: date
description: Check if this date is a Holiday
examples:
- '2025-07-22'
- '2025-12-02'
- '2026-11-06'
description: Check if this date is a Holiday
required: true
deprecated: false
allowEmptyValue: false
allowReserved: false
examples:
date-example-1:
summary: Date 1
value: '2025-07-22'
date-example-2:
summary: Date 2
value: '2025-12-02'
date-example-3:
summary: Marche Verte
value: '2026-11-06'
responses:
'200':
description: Request fulfilled, document follows
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/IsHoliday'
'400':
description: Bad request syntax or unsupported method
content:
application/json:
schema:
properties:
status_code:
type: integer
detail:
type: string
extra:
additionalProperties: {}
type:
- 'null'
- object
- array
type: object
required:
- detail
- status_code
description: Validation Exception
examples:
- status_code: 400
detail: Bad Request
extra: {}
deprecated: false
components:
schemas:
IsHoliday:
properties:
date:
type: string
format: date
is_holiday:
type: boolean
description:
type: string
holiday_type:
$ref: '#/components/schemas/CalHolidayType'
status:
$ref: '#/components/schemas/CalHolidayStatus'
country_code:
type: string
type: object
required:
- country_code
- date
- description
- holiday_type
- is_holiday
- status
title: IsHoliday
Holiday:
properties:
description:
type: string
day:
type: integer
month:
type: integer
date:
type: 'null'
holiday_type:
$ref: '#/components/schemas/CalHolidayType'
country_code:
type: string
default: MA
status:
$ref: '#/components/schemas/CalHolidayStatus'
type: object
required:
- description
title: Holiday
CalHolidayStatus:
type: string
enum:
- ND
- Estimated
- Official
title: CalHolidayStatus
description: "Represents the status of religious holidays which are based on moon sightings.\n\n At the start of the year, Religious holydays are **Estimated**. When the official moon sighting is confirmed the status is changed to **Official**\n\n NB: The change may **shift the `Estimated` date by ONE DAY**\n\n All other Holiday types are Official by default\n\n Attributes:\n - ND: Not defined for the entity or unknown by us (very unlikely)\n - Official (str): The holiday is validated and thus Official\n - Estimated (str): The holiday is estimated before the moon sighting\n "
CalHolidayType:
type: string
enum:
- ND
- Religious
- National
- Exceptional
title: CalHolidayType
description: 'There are Three Types of holidays:
- **Religious**: Include only Religious holidays. i.e: Eid el fitr, ...
- **National**: Include only National holidays. i.e: Fête du travail, Fête du trône, ...
- **Exceptional**: Include only Exceptional holidays.
- **ND::Null**: Disable this filter'
default: ND
examples:
- ND
securitySchemes:
apiKey:
type: apiKey
description: API Key authentication and authorization.
name: X-API-KEY
in: header
sessionCookie:
type: apiKey
description: Session cookie authentication.
name: session
in: cookie
externalDocs:
url: https://docs.calendar-api.ma
description: Documentation externe de l'API