SaskPower Live Outage JSON Feed

The undocumented JSON endpoint behind SaskPower's public outage map, found in the markup of the Outage Map and Updates page alongside the KML reference and fetched anonymously with no key, no signup and no referer check. A single GET returns Outages[] — one entry per affected service region — each carrying an integer OutageId (the same identifier space as the planned-outage RSS guids), an integer RegionId that joins to the outage-map KML regions and to that feed's ?rid= parameter, a human-readable Region name, a Planned field valued "Planned" or "Unplanned", and an Alerts array of operator-written {CreateDate, Message} notices. It is wrapped in the shared Sitecore controller envelope {errorCode, errorMessage, errorDetails, callId, time}, where errorCode 0 means success and the HTTP status stays 200 even on failure. Verified 2026-07-27 as HTTP 200, application/json, 4,256 bytes, valid JSON, 13 outages. This is the closest thing SaskPower has to a live grid-events API, and it is documented nowhere.

API entry from apis.yml

apis.yml Raw ↑
aid: saskpower:saskpower-live-outage-json-feed
name: SaskPower Live Outage JSON Feed
description: The undocumented JSON endpoint behind SaskPower's public outage map, found in the markup
  of the Outage Map and Updates page alongside the KML reference and fetched anonymously with no key,
  no signup and no referer check. A single GET returns Outages[] — one entry per affected service region
  — each carrying an integer OutageId (the same identifier space as the planned-outage RSS guids), an
  integer RegionId that joins to the outage-map KML regions and to that feed's ?rid= parameter, a human-readable
  Region name, a Planned field valued "Planned" or "Unplanned", and an Alerts array of operator-written
  {CreateDate, Message} notices. It is wrapped in the shared Sitecore controller envelope {errorCode,
  errorMessage, errorDetails, callId, time}, where errorCode 0 means success and the HTTP status stays
  200 even on failure. Verified 2026-07-27 as HTTP 200, application/json, 4,256 bytes, valid JSON, 13
  outages. This is the closest thing SaskPower has to a live grid-events API, and it is documented nowhere.
humanURL: https://www.saskpower.com/outages/power-outages/outage-updates
baseURL: https://www.saskpower.com/api/sitecore/Content/GetOutageJsonFile
tags:
- Outages
- Grid
- Open Data
- Undocumented
- Real Time
properties:
- type: Documentation
  url: https://www.saskpower.com/outages/power-outages/outage-updates
- type: TermsOfService
  url: https://www.saskpower.com/terms
- type: TermsOfService
  name: SaskPower Digital Terms and Conditions (February 2022)
  url: https://www.saskpower.com/-/media/SaskPower/Accounts-and-Services/Policy-Digital-TermsConditions.ashx
- type: JSONSchema
  name: Outage feed response schema (API Evangelist derived)
  url: json-schema/saskpower-outages.schema.json
- type: Examples
  name: Verbatim live response captured 2026-07-27
  url: examples/saskpower-outages-response.json