The stock market holidays API returns every closure and early close for 12 exchanges (NYSE and Nasdaq, SIFMA, CME, LSE, TSX, ASX, HKEX, Euronext, JPX, SIX, Xetra and NSE India) as JSON, with the date, the holiday name, whether the market is closed or closing early, and the local close time. The same rows are available as an ICS feed.
Holidays are the /holidays endpoint of the Finance Calendar API, and also appear as rows in /calendar under the category market-holidays. The plain-English schedule is on the stock market holidays hub. For whether an exchange is open right now, use the market status API.
Exchanges
| Code | Exchange | Country | Timezone | Session (local) |
|---|---|---|---|---|
nyse |
NYSE and Nasdaq (nasdaq is accepted) |
US | America/New_York | 09:30 to 16:00 |
sifma |
SIFMA (US bond market) | US | America/New_York | 08:00 to 17:00 |
cme |
CME Group futures | US | America/Chicago | 17:00 to 16:00 next day, break 16:00 to 17:00 |
lse |
London Stock Exchange | GB | Europe/London | 08:00 to 16:30 |
tsx |
Toronto Stock Exchange | CA | America/Toronto | 09:30 to 16:00 |
asx |
Australian Securities Exchange | AU | Australia/Sydney | 10:00 to 16:00 |
hkex |
Hong Kong Exchanges | HK | Asia/Hong_Kong | 09:30 to 16:00, break 12:00 to 13:00 |
euronext |
Euronext | EU | Europe/Paris | 09:00 to 17:30 |
jpx |
Japan Exchange Group (TSE) | JP | Asia/Tokyo | 09:00 to 15:30, break 11:30 to 12:30 |
six |
SIX Swiss Exchange | CH | Europe/Zurich | 09:00 to 17:30 |
xetra |
Xetra / Frankfurt | DE | Europe/Berlin | 09:00 to 17:30 |
nse |
NSE India | IN | Asia/Kolkata | 09:15 to 15:30 |
Holidays for one exchange and year
curl "https://www.financecalendar.com/wp-json/fc/v1/holidays?exchange=nyse&year=2027"
{
"exchange": "nyse",
"count": 8,
"holidays": [
{
"date": "2027-01-01",
"name": "New Years Day",
"exchange": "nyse",
"country": "US",
"status": "closed",
"close_time_local": null,
"url": null,
"close_time_et": null
},
{
"date": "2027-01-18",
"name": "Martin Luther King, Jr. Day",
"exchange": "nyse",
"country": "US",
"status": "closed",
"close_time_local": null,
"url": null,
"close_time_et": null
}
// 6 more rows
],
"attribution": { "source": "financecalendar.com", "terms": "...", "docs": "..." }
}
status is closed or early_close. On an early close close_time_local holds the time in the exchange’s own zone, and NYSE rows also carry close_time_et. Without year you get every loaded year; exchange=all returns every exchange in one list (154 rows at the time of writing). Asking for a year that is not loaded yet returns HTTP 404 with the years available, for example No nyse holidays loaded for 2031. Years available: 2026, 2027.
Early closes
The London Stock Exchange closes at 12:30 on Christmas Eve. In /holidays?exchange=lse that row is "status": "early_close", "close_time_local": "12:30". CME equity futures halt at 12:00 Central on Labor Day, which appears as an early_close row for cme with "close_time_local": "12:00". Check status before treating a row as a full closure.
Holidays mixed into the economic calendar
By default /calendar leaves holidays out. Add include=holidays to mix them in, or category=market-holidays for holidays only. A holiday row has the same shape as a release row, with all_day: true, no time, and the exchange fields filled:
curl "https://www.financecalendar.com/wp-json/fc/v1/calendar?category=market-holidays&country=GB&from=2026-12-20&to=2026-12-31"
{
"from": "2026-12-20",
"to": "2026-12-31",
"count": 4,
"total": 4,
"events": [
{ "id": "lse-christmas-eve-2026-early-close", "series_code": "holidays-lse", "name": "LSE early close: Christmas Eve", "title": "LSE: Christmas Eve 2026 (Early Close)", "country": "GB", "category": "market-holidays", "impact": "low", "date": "2026-12-24", "time_utc": null, "all_day": true, "exchange": "lse", "holiday_status": "early_close", "close_time_local": "12:30", "note": "Early close at 12:30", ... },
{ "id": "lse-christmas-day-2026", "series_code": "holidays-lse", "name": "LSE closed: Christmas Day", "title": "LSE: Christmas Day 2026", "country": "GB", "category": "market-holidays", "impact": "low", "date": "2026-12-25", "time_utc": null, "all_day": true, "exchange": "lse", "holiday_status": "closed", "close_time_local": null, ... }
// 2 more rows
],
"attribution": { ... }
}
Each exchange is also a series, holidays-nyse to holidays-nse, so series=holidays-nyse,holidays-lse works too. /series?kind=holiday lists all 12 with the next closure for each.
As a calendar feed
https://www.financecalendar.com/wp-json/fc/v1/calendar?category=market-holidays&country=US&from=2026-11-01&to=2027-01-31&format=ics
Holiday events are all-day entries. For a longer run than 92 days, subscribe to the ?fc_ics=1 feed on an exchange hub such as LSE holidays.
Frequently asked questions
Are Nasdaq holidays the same as NYSE?
Yes. Nasdaq follows the NYSE holiday calendar, so exchange=nasdaq returns the nyse rows.
Why does the bond market have its own code?
SIFMA recommends closures and early closes for US bond trading that differ from the stock exchanges, for example Columbus Day and Veterans Day. Use exchange=sifma.
How far ahead are holidays loaded?
As far as each exchange has published. At the time of writing that is 2026 and 2027. The 404 message for a missing year lists the years available.
Where do the dates come from?
Each exchange’s published trading calendar, linked in source_url on every /calendar holiday row and re-checked hourly.
Attribution
Data from this API is free for any use, commercial included, on one condition: a visible link to https://www.financecalendar.com near where the data appears, or on your credits page. Earnings dates are not included.