{
 "dataset": "market-hours",
 "title": "Exchange trading hours and holidays from the exchanges' own pages",
 "as_of": "2026-10-15",
 "version": "0.1.0",
 "entities": [
  {
   "entity_slug": "nyse",
   "entity_name": "New York Stock Exchange",
   "short": "NYSE",
   "country": "US",
   "tz": "America/New_York",
   "homepage": "https://www.nyse.com/",
   "hours_note": "",
   "sources": [
    {
     "key": "nyse-hours",
     "url": "https://www.nyse.com/trade/hours-calendars",
     "purpose": "NYSE hours and holidays",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "87427d94271faf7bd5c5ef6121e4d379e53a0c259fbc63af5510207f5a568cea"
    }
   ]
  },
  {
   "entity_slug": "nasdaq",
   "entity_name": "Nasdaq",
   "short": "Nasdaq",
   "country": "US",
   "tz": "America/New_York",
   "homepage": "https://www.nasdaq.com/",
   "hours_note": "",
   "sources": [
    {
     "key": "nasdaq-hours",
     "url": "https://www.nasdaq.com/stock-market-trading-hours-for-nasdaq",
     "purpose": "Nasdaq trading hours",
     "outcome": "robots",
     "http_status": "0",
     "note": "robots.txt could not be read (server error or no connection); treated as disallowed",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "nasdaq-holidays",
     "url": "https://www.nasdaq.com/market-activity/stock-market-holiday-schedule",
     "purpose": "Nasdaq holiday schedule",
     "outcome": "robots",
     "http_status": "0",
     "note": "robots.txt could not be read (server error or no connection); treated as disallowed",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "nasdaqtrader-calendar",
     "url": "https://www.nasdaqtrader.com/Trader.aspx?id=Calendar",
     "purpose": "Nasdaq Trader holiday calendar",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "843c782c51f2d024ce0ff72006cac0fa13c5c5e894503d924a53a90a359d0cfa"
    },
    {
     "key": "nasdaq-sys-hours",
     "url": "https://nasdaqtrader.com/content/TechnicalSupport/nasdaq_sys_hours.pdf",
     "purpose": "Nasdaq systems hours of operation (PDF)",
     "outcome": "ok",
     "http_status": "200",
     "note": "pdf sha256 7f2bbf723729c246…",
     "checked_at": "2026-10-15",
     "sha256": "7ee136afd13db4ff385dfb0ac4b492dfff12bd482640bd93198cf1b115e16a67"
    }
   ]
  },
  {
   "entity_slug": "lse",
   "entity_name": "London Stock Exchange",
   "short": "LSE",
   "country": "GB",
   "tz": "Europe/London",
   "homepage": "https://www.londonstockexchange.com/",
   "hours_note": "",
   "sources": [
    {
     "key": "lse-business-days",
     "url": "https://www.londonstockexchange.com/equities-trading/business-days",
     "purpose": "LSE business days",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "8e6e1f73a122334c9a9fc0c5cc66c43f0bc14231525151ffddaadf1ab8c7d85c"
    },
    {
     "key": "lse-hours",
     "url": "https://www.londonstockexchange.com/equities-trading/trading-services/trading-hours",
     "purpose": "LSE trading hours",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "fc1203377f3b093814688fd16a6cc4bca010be9a6a0ced263630ba27b796207d"
    },
    {
     "key": "lse-hours-lseg",
     "url": "https://www.lseg.com/en/equities/trading-services/trading-hours",
     "purpose": "LSEG equities trading hours",
     "outcome": "http_error",
     "http_status": "404",
     "note": "HTTP 404",
     "checked_at": "2026-10-15",
     "sha256": ""
    }
   ]
  },
  {
   "entity_slug": "nse",
   "entity_name": "National Stock Exchange of India",
   "short": "NSE",
   "country": "IN",
   "tz": "Asia/Kolkata",
   "homepage": "https://www.nseindia.com/",
   "hours_note": "",
   "sources": [
    {
     "key": "nse-timings",
     "url": "https://www.nseindia.com/market-data/market-timings",
     "purpose": "NSE market timings",
     "outcome": "error",
     "http_status": "0",
     "note": "Page.goto: net::ERR_HTTP2_PROTOCOL_ERROR at https://www.nseindia.com/market-data/market-timings",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "nse-holidays",
     "url": "https://www.nseindia.com/resources/exchange-communication-holidays",
     "purpose": "NSE holidays",
     "outcome": "error",
     "http_status": "0",
     "note": "Page.goto: net::ERR_HTTP2_PROTOCOL_ERROR at https://www.nseindia.com/resources/exchange-communication-holidays",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "nse-fo-holidays-2026",
     "url": "https://nsearchives.nseindia.com/content/circulars/FAOP71777.pdf",
     "purpose": "NSE circular: trading holidays 2026 (equity derivatives)",
     "outcome": "robots",
     "http_status": "0",
     "note": "robots.txt could not be read (server error or no connection); treated as disallowed",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "nse-cmtr-2026",
     "url": "https://nsearchives.nseindia.com/content/circulars/CMTR72260.pdf",
     "purpose": "NSE capital market circular (PDF)",
     "outcome": "robots",
     "http_status": "0",
     "note": "robots.txt could not be read (server error or no connection); treated as disallowed",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "nse-cd-holidays-2026",
     "url": "https://nsearchives.nseindia.com/content/circulars/CD71962.pdf",
     "purpose": "NSE circular: currency derivatives holidays 2026",
     "outcome": "robots",
     "http_status": "0",
     "note": "robots.txt could not be read (server error or no connection); treated as disallowed",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "nse-timings-manual",
     "url": "https://www.nseindia.com/market-data/market-timings",
     "purpose": "NSE market timings (saved by hand)",
     "outcome": "ok",
     "http_status": "200",
     "note": "saved by hand in a browser by Sydney on 2026-10-15; our reader is blocked (decisions/2026-10-06-respect-bot-walls.md)",
     "checked_at": "2026-10-15",
     "sha256": "4fe37b843a4c2f856c3aa2c63e8d30ba4c9035a416b32b337ce8e0c9830e0064"
    },
    {
     "key": "nse-holidays-manual",
     "url": "https://www.nseindia.com/resources/exchange-communication-holidays",
     "purpose": "NSE trading holidays 2026, equities (saved by hand)",
     "outcome": "ok",
     "http_status": "200",
     "note": "saved by hand in a browser by Alex on 2026-10-15; our reader is blocked (decisions/2026-10-06-respect-bot-walls.md)",
     "checked_at": "2026-10-15",
     "sha256": "f239a3778a860cf055ec7291e0ed716294fe2841760b1813c7c9eaa0f181b4ea"
    },
    {
     "key": "nse-holidays-page-manual",
     "url": "https://www.nseindia.com/resources/exchange-communication-holidays",
     "purpose": "NSE holidays page with the Muhurat trading note (saved by hand)",
     "outcome": "ok",
     "http_status": "200",
     "note": "saved by hand in a browser by Sydney on 2026-10-15; our reader is blocked (decisions/2026-10-06-respect-bot-walls.md)",
     "checked_at": "2026-10-15",
     "sha256": "678409f631b70bd067654e70df95c21b450c2ace18caaf0fa424f46edad87def"
    }
   ]
  },
  {
   "entity_slug": "bse",
   "entity_name": "BSE (Bombay Stock Exchange)",
   "short": "BSE",
   "country": "IN",
   "tz": "Asia/Kolkata",
   "homepage": "https://www.bseindia.com/",
   "hours_note": "",
   "sources": [
    {
     "key": "bse-holidays",
     "url": "https://www.bseindia.com/static/markets/marketinfo/listholi.aspx",
     "purpose": "BSE holidays",
     "outcome": "blocked",
     "http_status": "403",
     "note": "HTTP 403; not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "bse-timings",
     "url": "https://www.bseindia.com/static/markets/marketinfo/MarketTimings.aspx",
     "purpose": "BSE market timings",
     "outcome": "blocked",
     "http_status": "403",
     "note": "HTTP 403; not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "bse-holidays-manual",
     "url": "https://www.bseindia.com/static/markets/marketinfo/listholi",
     "purpose": "BSE trading holidays 2026 (saved by hand)",
     "outcome": "ok",
     "http_status": "200",
     "note": "saved by hand in a browser by Sydney on 2026-10-15; our reader is blocked (decisions/2026-10-06-respect-bot-walls.md)",
     "checked_at": "2026-10-15",
     "sha256": "1681cb04d36b3587f34e38faf195b7fa11c24bc60e4aa5802b4a3dbd065b773e"
    }
   ]
  },
  {
   "entity_slug": "psx",
   "entity_name": "Pakistan Stock Exchange",
   "short": "PSX",
   "country": "PK",
   "tz": "Asia/Karachi",
   "homepage": "https://www.psx.com.pk/",
   "hours_note": "PSX's own trading-hours page shows this timetable under an old heading for Ramadan 1441 AH (2020). PSX's 2026 Ramadan notice gave different hours (09:17–13:30) and said standard timing returns after Ramadan, so we read this table as PSX's standard timetable. That reading is ours, not PSX's words: check PSX notices before trading.",
   "sources": [
    {
     "key": "psx-hours",
     "url": "https://www.psx.com.pk/psx/exchange/general/trading-hours",
     "purpose": "PSX trading hours",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "96d1a2f82925aa4d1a74343754a723767732593e3e631c8d372b87330984fd14"
    },
    {
     "key": "psx-home",
     "url": "https://www.psx.com.pk/",
     "purpose": "PSX homepage (market timings)",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "c84d2bcbe00e486276235609bfd3ca0164e7c566555cd3fc114a813e442955d5"
    },
    {
     "key": "psx-holidays",
     "url": "https://www.psx.com.pk/psx/exchange/general/calendar-holidays",
     "purpose": "PSX calendar holidays page",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "8637bc6b51608633880ec380fd8007c58b2ca1593d797ae68218baab740a721f"
    },
    {
     "key": "psx-holidays-2026-notice",
     "url": "https://dps.psx.com.pk/download/attachment/268947-1.pdf",
     "purpose": "PSX notice: holidays 2026 (PDF)",
     "outcome": "ok",
     "http_status": "200",
     "note": "pdf sha256 6d0520716e884368…",
     "checked_at": "2026-10-15",
     "sha256": "48c7b02335c7f264623cb67af9d6914d6e19ae03b4e5a3ed68ca687c93223270"
    },
    {
     "key": "psx-ramadan-2026-notice",
     "url": "https://dps.psx.com.pk/download/attachment/270519-1.pdf",
     "purpose": "PSX notice: Ramadan 1447 trading timings (PDF)",
     "outcome": "ok",
     "http_status": "200",
     "note": "pdf sha256 461361d0884df7a9…",
     "checked_at": "2026-10-15",
     "sha256": "e626a463c513b8cce14512009b6e79feea2b8c12370b58de7a673ba4267ef619"
    }
   ]
  },
  {
   "entity_slug": "ngx",
   "entity_name": "Nigerian Exchange",
   "short": "NGX",
   "country": "NG",
   "tz": "Africa/Lagos",
   "homepage": "https://ngxgroup.com/",
   "hours_note": "",
   "sources": [
    {
     "key": "ngx-home",
     "url": "https://ngxgroup.com/exchange/trade/equities/",
     "purpose": "NGX equities trading",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "e73bb8bfc79febcd4e1f119c81be1729e4638db7e9885843a8db2faffb534456"
    },
    {
     "key": "ngx-market-structure",
     "url": "https://ngxgroup.com/exchange/trade/equities/trading-market-structure/",
     "purpose": "NGX equities trading market structure (session times)",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "a8b8b31faac23dd95229cc1113724aed812e820dd46c8f61923dbab097d65b3f"
    },
    {
     "key": "ngx-trading-holidays",
     "url": "https://ngxgroup.com/exchange/trade/trading-holidays/",
     "purpose": "NGX trading holidays",
     "outcome": "http_error",
     "http_status": "404",
     "note": "HTTP 404; not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "ngx-trading-window-2026",
     "url": "https://ngxgroup.com/ngx-expands-trading-window-from-900-am-to-400-pm/",
     "purpose": "NGX press release: trading window 9:00 to 4:00 (Apr 2026)",
     "outcome": "http_error",
     "http_status": "404",
     "note": "HTTP 404; not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "ngx-trading-holidays-2026",
     "url": "https://ngxgroup.com/exchange/trade/becoming-an-investor/trading-holidays/",
     "purpose": "NGX trading holidays (becoming an investor)",
     "outcome": "ok",
     "http_status": "200",
     "note": "",
     "checked_at": "2026-10-15",
     "sha256": "05dba88611eedf6917b49bbd1fddf1b9184b36f41841baa36f2e7fd537fc45e9"
    }
   ]
  },
  {
   "entity_slug": "jse",
   "entity_name": "Johannesburg Stock Exchange",
   "short": "JSE",
   "country": "ZA",
   "tz": "Africa/Johannesburg",
   "homepage": "https://www.jse.co.za/",
   "hours_note": "",
   "sources": [
    {
     "key": "jse-calendar-2026",
     "url": "https://clientportal.jse.co.za/Content/JSE%20Trading%20Dates%20and%20Calendars%20Items/JSE%20Market%20Notice%2038025%20All%20Markets%20-%20JSE%20Markets%20Calendar%202026.pdf",
     "purpose": "JSE markets calendar 2026 (PDF)",
     "outcome": "blocked",
     "http_status": "403",
     "note": "HTTP 403; not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "jse-hours",
     "url": "https://www.jse.co.za/trade/equities-market/equities-trading-hours",
     "purpose": "JSE equities trading hours",
     "outcome": "blocked",
     "http_status": "403",
     "note": "bot wall / HTTP block; stopped, not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "jse-equity-hours-pdf",
     "url": "https://clientportal.jse.co.za/Content/JSE%20Trading%20Dates%20and%20Calendars%20Items/EquityMarketTradingHours.pdf",
     "purpose": "JSE equity market trading hours (PDF)",
     "outcome": "blocked",
     "http_status": "403",
     "note": "HTTP 403; not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    }
   ]
  },
  {
   "entity_slug": "tadawul",
   "entity_name": "Saudi Exchange (Tadawul)",
   "short": "Tadawul",
   "country": "SA",
   "tz": "Asia/Riyadh",
   "homepage": "https://www.saudiexchange.sa/",
   "hours_note": "Around the continuous session, the Saudi Exchange's trading times page (saved by hand 15 October 2026) also lists an opening auction from 9:30 to 10:00 AM, a closing auction from 3:00 to 3:10 PM and a trade-at-last session from 3:10 to 3:20 PM (the last two not for sukuk, bonds and ETFs). It says the market opens and closes at a variable time within 30 seconds after 10:00 AM and after 3:10 PM. Eid holiday dates follow the Umm al-Qura calendar, as the exchange's holiday calendar notes.",
   "sources": [
    {
     "key": "tadawul-ramadan-2026",
     "url": "https://www.saudiexchange.sa/wps/wcm/connect/tadawul_en/sa-tadawul/sa-pricesandindeces/sa-news/sa-marketnews/ct-marketnews-2026feb09ramadan",
     "purpose": "Saudi Exchange notice with trading hours",
     "outcome": "blocked",
     "http_status": "403",
     "note": "bot wall / HTTP block; stopped, not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "tadawul-national-day-2026",
     "url": "https://www.saudiexchange.sa/wps/wcm/connect/tadawul_en/sa-tadawul/sa-pricesandindeces/sa-news/sa-marketnews/ct-marketnews-20260902annh",
     "purpose": "Saudi Exchange holiday notice",
     "outcome": "blocked",
     "http_status": "403",
     "note": "bot wall / HTTP block; stopped, not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "tadawul-trading-times",
     "url": "https://www.saudiexchange.sa/wps/portal/saudiexchange/rules-guidance/capital-market-overview/trading-cycle-and-times?locale=en",
     "purpose": "Saudi Exchange trading cycle and times",
     "outcome": "blocked",
     "http_status": "403",
     "note": "bot wall / HTTP block; stopped, not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "tadawul-holiday-calendar",
     "url": "https://www.saudiexchange.sa/wps/portal/saudiexchange/about-saudi-exchange/exchange-media-centre/saudi-exchange-holiday-calendar?locale=en",
     "purpose": "Saudi Exchange holiday calendar",
     "outcome": "blocked",
     "http_status": "403",
     "note": "bot wall / HTTP block; stopped, not retried",
     "checked_at": "2026-10-15",
     "sha256": ""
    },
    {
     "key": "tadawul-trading-times-manual",
     "url": "https://www.saudiexchange.sa/wps/portal/saudiexchange/rules-guidance/capital-market-overview/trading-cycle-and-times?locale=en",
     "purpose": "Saudi Exchange trading cycle and times (saved by hand)",
     "outcome": "ok",
     "http_status": "200",
     "note": "saved by hand in a browser by Alex on 2026-10-15; our reader is blocked (decisions/2026-10-06-respect-bot-walls.md)",
     "checked_at": "2026-10-15",
     "sha256": "918017670086f3d42ea4ce737a2cbbe51649c5a28dfbb2beb27040a4ac95ef71"
    },
    {
     "key": "tadawul-holiday-calendar-manual",
     "url": "https://www.saudiexchange.sa/wps/portal/saudiexchange/about-saudi-exchange/exchange-media-centre/saudi-exchange-holiday-calendar?locale=en",
     "purpose": "Saudi Exchange holiday calendar (saved by hand)",
     "outcome": "ok",
     "http_status": "200",
     "note": "saved by hand in a browser by Alex on 2026-10-15; our reader is blocked (decisions/2026-10-06-respect-bot-walls.md)",
     "checked_at": "2026-10-15",
     "sha256": "8b62fce7e06c31039db350c046c3ec9aab7a6ecd29b89b86c75ce3a9bb9c17d9"
    }
   ]
  },
  {
   "entity_slug": "cme-fx",
   "entity_name": "CME Globex FX futures",
   "short": "CME FX",
   "country": "US",
   "tz": "America/Chicago",
   "homepage": "https://www.cmegroup.com/",
   "hours_note": "",
   "sources": [
    {
     "key": "cme-fx-hours",
     "url": "https://www.cmegroup.com/trading-hours.html",
     "purpose": "CME Globex trading hours (FX)",
     "outcome": "robots",
     "http_status": "0",
     "note": "robots.txt could not be read (server error or no connection); treated as disallowed",
     "checked_at": "2026-10-15",
     "sha256": ""
    }
   ]
  }
 ],
 "fetcher": {
  "user_agent": "TradingLookupBot/0.1 (honest UA, robots.txt respected, no bot-wall bypass)",
  "network_note": "Fetched from a GitHub-hosted runner (US); exchanges' own pages only"
 },
 "counts": {
  "claims": 145,
  "measured": 145,
  "unverified": 0,
  "pages_ok": 19,
  "pages_total": 39
 },
 "exchanges_with_hours": 6,
 "holidays": 115
}
