---
title: "GET /api/calendar/exchange/holidays"
method: GET
path: "/api/calendar/exchange/holidays"
tags: ["Market Calendar"]
---

# GET /api/calendar/exchange/holidays

`GET /api/calendar/exchange/holidays`

## Request

- Base URL: `https://api.unirateapi.com`
- URL: `https://api.unirateapi.com/api/calendar/exchange/holidays`
- Auth: none declared
- TypeScript: <https://skmtc.dev/unirateapi/apis/unirate-api/docs/api/calendar/exchange/holidays/get.ts> (a function with typed inputs; its response is checked against the schema)

All weekday closures (holidays), early closes and late opens for an exchange in one year, with holiday names where the rule set has them (ad-hoc closures have name null). For a year partly or wholly after the exchange's holiday data ends (e.g. XSHG, XBOM, XSES - see data_available_through on /api/calendar/exchanges) the covered part is returned, no closures are listed after the end date, trading_days counts every weekday after it, `holiday_data_available` is false and `warning` explains. Pro subscription required. Reference only.

## Query parameters

- `api_key` string, required
- `mic` string, required
- `year` integer
- `format` 'json' | 'xml'
- `callback` string

## Response `200`

Closures for the year.

## Other responses

- `400`: Invalid mic/year/format, or a year entirely outside the supported range (before the exchange's calendar starts or after the end of next year). A year past the exchange's holiday data is answered (empty + flagged), not a 400.
- `401`: Missing or invalid API key
- `403`: Pro subscription required
- `404`: Exchange not supported
- `429`: Daily calendar quota exceeded

---

[API](https://skmtc.dev/unirateapi/apis/unirate-api.md) - [All operations](https://skmtc.dev/unirateapi/apis/unirate-api/llms.txt) - [OpenAPI document](https://skmtc.dev/unirateapi/apis/unirate-api/revisions/e5fd92902326?raw)
