Trading hours and holidays for your app
The fastest and easiest way to get trading hours information into your application. One key, clear JSON and 92 markets, free for your first 1,000 requests.
- markets in one consistent format
- 92
- past and future dates
- 1995 to 2051
- for a full year of holidays
- 1 request
- free requests to start, no card needed
- 1,000
curl https://marketcalendars.com/api/v2/markets/nyse/sessions/2026-11-27 \
-H "Authorization: Bearer mc_live_..."const res = await fetch("https://marketcalendars.com/api/v2/markets/nyse/sessions/2026-11-27", {
headers: { Authorization: `Bearer ${process.env.MARKETCALENDARS_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://marketcalendars.com/api/v2/markets/nyse/sessions/2026-11-27",
headers={"Authorization": f"Bearer {os.environ['MARKETCALENDARS_KEY']}"},
)
data = res.json(){
"market": "nyse",
"tradeDate": "2026-11-27",
"timezone": "America/New_York",
"isTradingDay": true,
"schedule": "irregular",
"reasons": [
{
"type": "early_close",
"name": "Day after Thanksgiving"
}
],
"isSettlementDay": true,
"nonSettlementReason": null,
"disputed": null,
"phases": [
{
"type": "pre_market",
"start": "2026-11-27T04:00:00-05:00",
"end": "2026-11-27T09:30:00-05:00",
"tradeDate": "2026-11-27"
},
{
"type": "regular",
"start": "2026-11-27T09:30:00-05:00",
"end": "2026-11-27T13:00:00-05:00",
"tradeDate": "2026-11-27"
},
{
"type": "after_hours",
"start": "2026-11-27T13:00:00-05:00",
"end": "2026-11-27T17:00:00-05:00",
"tradeDate": "2026-11-27"
}
],
"dataSource": "pandas_market_calendars 5.5.0"
}Quick to add
Plain JSON over HTTPS with one key. Copy a request in curl, JavaScript or Python and build from there
Answers, not raw data
Ask whether a market is open, when it next closes or which days are holidays. Times come with their time zone and offset
Comprehensive
Hours, holidays, irregular schedules and settlement days for 92 markets, 1995 to 2051
Nothing to maintain
Calendars are updated every Monday, so there are no holiday tables for you to keep up to date
One request for each question your app asks
A day of hours, a year of holidays or the live status of every market, each in a single call
All 11 endpoints in the docs- Is the market open now, and when does that change?
/markets/{market}/status - Which markets are open at this moment?
/status - What are the trading hours on a given day?
/markets/{market}/sessions/{date} - Which days are holidays this year?
/markets/{market}/holidays/{year} - Which days have an irregular schedule, such as an early close?
/markets/{market}/irregular-days/{year} - Which markets are closed on a date?
/dates/{date}
Pricing
For individuals and small teams building apps. Monthly plans in US dollars, excluding tax
Free
$0free trial
Try every endpoint and build your integration
- 1,000 requests in total, never reset
- 30 requests per minute
- Every endpoint and market
- One free trial per person
Starter
$10per month
For a side project or a small app
- 1,000 requests per month
- 60 requests per minute
- Every endpoint and market
- Hard stop at the quota, no overage
Pro
Most requests per dollar$50per month
For apps in production that check calendars every day
- 10,000 requests per month
- 300 requests per minute
- Every endpoint and market
- Hard stop at the quota, no overage
Pay by card through Stripe and cancel at any time. Upgrades apply straight away; enter a promotion code or VAT number at checkout. See rate limits and quotas and the API terms.
For companies and enterprises
Custom volumes and rate limits, more markets with data checked by our team, a service level agreement and white-label widgets
Frequently asked questions
What counts as a request?
Each successful (2xx) response counts as one, whichever endpoint you call. Errors, 429 responses and the OpenAPI document are free. One request returns one market for one day, one schedule or one year.
What happens when I reach my quota?
The API answers 429 with the type quota-exceeded until your next period starts. There is no overage billing and no surprise invoice. Paid quotas reset every month on your billing date; the free trial does not reset.
Where does the data come from?
Calendars are built from pandas_market_calendars 5.5.0, which includes exchange_calendars, with holiday names from the holidays package. The data is not verified by the exchanges, so check critical dates with the exchange.
How far ahead does the data go?
From 1995 to 2051, depending on the market. Most markets run from 1990 to 2051, and every response says what its market covers. The coverage page at marketcalendars.com/coverage lists every market with a spreadsheet download.
Which markets have settlement days?
24 markets: US markets (Federal Reserve holidays), euro-area cash markets (TARGET2), the UK (bank holidays in England and Wales) and Japan. For other markets the non-settlement endpoint answers available: false.
Can I call the API from a browser?
CORS is enabled, but anyone can read a key in browser code, so call the API from your server. For live status on a web page, use our embeddable widgets, which need no server code.
Can my company use the self-serve plans?
The plans suit individuals and small teams. If your company needs higher volumes, verified data, more markets or a service level agreement, Enterprise is the better fit.
Do prices include tax?
Prices are in US dollars and exclude tax. You can add your VAT number and business details to invoices.