Is the Stock Market Open? Market Status API

The market status API answers “is the stock market open right now?” for 12 exchanges with one GET request. It returns open: true or false, a plain-English label, the session hours and lunch break, today’s holiday if there is one, and the next holiday.

/market-status is part of the Finance Calendar API. It combines each exchange’s regular session hours with the holiday calendar, including early closes, and the current time in the exchange’s own timezone. Responses are cached for 60 seconds rather than the usual 5 minutes.

Is the NYSE open?

curl "https://www.financecalendar.com/wp-json/fc/v1/market-status"
{
  "exchange": "nyse",
  "name": "NYSE & Nasdaq",
  "country": "US",
  "tz": "America/New_York",
  "open": true,
  "label": "NYSE open",
  "local_time": "2026-10-19T11:56:57-04:00",
  "time_utc": "2026-10-19T15:56:57+00:00",
  "session": {
    "open": "09:30",
    "close": "16:00",
    "break": null
  },
  "holiday_today": null,
  "next_holiday": {
    "date": "2026-11-26",
    "name": "Thanksgiving",
    "status": "closed",
    "url": null
  },
  "attribution": {
    "source": "financecalendar.com",
    "terms": "Free for any use with attribution: link to https://www.financecalendar.com",
    "docs": "https://www.financecalendar.com/api/"
  }
}

nyse is the default and nasdaq is accepted as the same calendar. session.close is today’s close, so on an early-close day it shows the early time and the label says so, for example “NYSE open (early close 13:00 local)”.

Other exchanges

curl "https://www.financecalendar.com/wp-json/fc/v1/market-status?exchange=lse"
{
  "exchange": "lse",
  "name": "London Stock Exchange",
  "country": "GB",
  "tz": "Europe/London",
  "open": false,
  "label": "LSE closed for the day",
  "local_time": "2026-10-19T16:56:57+01:00",
  "time_utc": "2026-10-19T15:56:57+00:00",
  "session": { "open": "08:00", "close": "16:30", "break": null },
  "holiday_today": null,
  "next_holiday": { "date": "2026-12-24", "name": "Christmas Eve", "status": "early_close", "url": null },
  "attribution": { ... }
}

Tokyo has a lunch break, and the API reports it. At 00:56 Tokyo time the exchange is closed with the label “JPX closed (opens 09:00 local)” and "session": { "open": "09:00", "close": "15:30", "break": ["11:30", "12:30"] }. Between 11:30 and 12:30 local time open is false. Hong Kong’s break is 12:00 to 13:00. CME futures trade overnight from 17:00 to 16:00 Central with a break from 16:00 to 17:00, and the API handles the wrap past midnight.

Labels

label is written for display and takes one of these forms:

  • NYSE open
  • NYSE open (early close 13:00 local)
  • LSE closed (opens 08:00 local) before the session
  • LSE closed for the day after the close
  • NYSE closed (weekend)
  • NYSE closed for Thanksgiving on a holiday, with holiday_today set to the same name

Use open for logic and label for people.

Exchange codes

nyse, sifma, cme, lse, tsx, asx, hkex, euronext, jpx, six, xetra and nse. Session hours and timezones for each are listed on the holidays page. An unknown code returns HTTP 400 with the list: exchange must be one of: nyse, sifma, cme, lse, tsx, asx, hkex, euronext, jpx, six, xetra, nse.

In a page

const r = await fetch("https://www.financecalendar.com/wp-json/fc/v1/market-status?exchange=nyse");
const s = await r.json();
document.getElementById("status").textContent = s.label;   // "NYSE open"
if (s.next_holiday) console.log("Next closure:", s.next_holiday.date, s.next_holiday.name);

CORS is open, so this works from any origin without a proxy. The /today endpoint also returns a short market object for the NYSE alongside the day’s releases, if you need both in one call.

What it does not do

The status is computed from the published session hours and the holiday calendar. It does not watch for trading halts, circuit breakers or unscheduled closures, and it does not cover pre-market or after-hours sessions. The regular session is the only one reported.

Frequently asked questions

Is the market open on Columbus Day?

The NYSE is open; the US bond market (SIFMA) is closed. Query exchange=nyse and exchange=sifma separately, or check /holidays?exchange=sifma.

How often can I poll?

Once a minute is enough; the response is cached for 60 seconds. Each call counts towards the daily limit (2,000 keyless, 10,000 with a free key).

Does it account for daylight saving?

Yes. local_time is computed in the exchange’s IANA zone, so the session boundaries are right on both sides of a clock change.

Can I get the status for a past or future time?

No. /market-status is “now” only. For future closures use /holidays; for the next closure read next_holiday in this response.

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.