AESO Pool Price Report API

The hourly Alberta Pool Price — the settlement price of the province's energy-only wholesale electricity market — served as JSON for any date range back to 2000-01-01, up to one year per request. Each settlement hour returns the UTC and Mountain Prevailing Time begin timestamps, the pool price in CAD, the forecast pool price, and the thirty-day rolling average. Confirmed live on 2026-07-27: an anonymous GET to the gateway route returned HTTP 401 with "Access denied due to missing subscription key" (a nonexistent path on the same gateway returns HTTP 404), which confirms the route is real and that the only barrier is the free self-serve key.

OpenAPI Specification

aeso-poolprice-api-v1-1-openapi.json Raw ↑
{
  "openapi": "3.0.1",
  "info": {
    "title": "Pool Price Report",
    "description": "Pool Price report data",
    "version": "v1.1"
  },
  "servers": [
    {
      "url": "https://apimgw.aeso.ca/public/poolprice-api"
    },
    {
      "url": "https://gateway-apim.aeso.ca/public/poolprice-api"
    }
  ],
  "paths": {
    "/price/poolPrice": {
      "get": {
        "operationId": "getPoolPriceDateRangeReport",
        "summary": "Fetch pool price report for a given date range",
        "description": "Fetch pool price report for the date range: startDate (yyyy-mm-dd) to endDate (yyyy-mm-dd). The endDate is optional. If endDate is omitted, fetched data will include the pool price values for all the completed settlement hours of the day specified by startDate.\r\n\r\nTo fetch the latest pool price, include the date of that hour in your query.\r\n\r\n \r\n\r\nThe API will return data for a maximum of 1 year at a time.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketPriceDemandDataReport"
                },
                "examples": {
                  "default": {
                    "value": {
                      "Pool Price Report": [
                        {
                          "begin_datetime_utc": "string",
                          "begin_datetime_mpt": "string",
                          "pool_price": "string",
                          "forecast_pool_price": "string",
                          "rolling_30day_avg": "string"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "405": {
            "description": "Invalid method"
          },
          "500": {
            "description": "Internal server error"
          },
          "503": {
            "description": "Service unavailable"
          }
        },
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "required": true,
            "description": "Any date between 2000-01-01 and current date.  (format: yyyy-MM-dd).",
            "schema": {
              "$ref": "#/components/schemas/PricePoolPriceGetRequest"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "required": false,
            "description": "Any date up to current date but after startDate. If left blank, only data for startDate will be returned. (format: yyyy-MM-dd).",
            "schema": {
              "$ref": "#/components/schemas/PricePoolPriceGetRequest-1"
            }
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKeyHeader": {
        "type": "apiKey",
        "name": "API-KEY",
        "in": "header"
      },
      "apiKeyQuery": {
        "type": "apiKey",
        "name": "subscription-key",
        "in": "query"
      }
    },
    "schemas": {
      "MarketPriceDemandDataReport": {
        "type": "object",
        "properties": {
          "Pool Price Report": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarketPriceDemandDataVO"
            }
          }
        }
      },
      "MarketPriceDemandDataVO": {
        "type": "object",
        "properties": {
          "begin_datetime_utc": {
            "type": "string",
            "description": "The begin timestamp of the settlement hour, in UTC."
          },
          "begin_datetime_mpt": {
            "type": "string",
            "description": "The begin timestamp of the settlement hour, in MPT (Mountain Prevailing Time) "
          },
          "pool_price": {
            "type": "string",
            "description": "The Pool Price for the settlement hour, in CAD."
          },
          "forecast_pool_price": {
            "type": "string",
            "description": "The Forecasted Pool Price for the settlement hour, in CAD."
          },
          "rolling_30day_avg": {
            "type": "string",
            "description": "The 30-day rolling average price for the settlement hour, in CAD."
          }
        }
      },
      "PricePoolPriceGetRequest": {
        "pattern": "^\\d{4}\\-(0[1-9]|1[012])\\-(0[1-9]|[12][0-9]|3[01])$",
        "type": "string",
        "x-apim-inline": true
      },
      "PricePoolPriceGetRequest-1": {
        "pattern": "^\\d{4}\\-(0[1-9]|1[012])\\-(0[1-9]|[12][0-9]|3[01])$",
        "type": "string",
        "x-apim-inline": true
      }
    }
  },
  "security": [
    {},
    {
      "apiKeyHeader": []
    },
    {
      "apiKeyQuery": []
    }
  ],
  "x-provenance": {
    "harvestedBy": "API Evangelist",
    "harvestedOn": "2026-07-27",
    "sourcePortal": "https://developer-apim.aeso.ca/",
    "method": "Assembled verbatim from the AESO Azure API Management developer-portal data API, which is served anonymously. AESO's own OpenAPI export (?export=true&format=openapi) returns a valid document with an EMPTY paths object, so paths, parameters, responses, examples and component schemas were read from the portal's operations/ and schemas/ endpoints and reassembled without alteration. Nothing was invented.",
    "sources": [
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/poolprice-api-v1-1?api-version=2022-04-01-preview",
        "status": 200,
        "note": "API metadata"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/poolprice-api-v1-1?export=true&format=openapi%2Bjson&api-version=2022-04-01-preview",
        "status": 200,
        "note": "AESO OpenAPI export (empty paths) - basis for info/servers/security"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/poolprice-api-v1-1/operations?api-version=2022-04-01-preview",
        "status": 200,
        "note": "operation list"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/poolprice-api-v1-1/schemas?api-version=2022-04-01-preview",
        "status": 200,
        "note": "schema list"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/poolprice-api-v1-1/operations/getPoolPriceDateRangeReport?api-version=2022-04-01-preview",
        "status": 200,
        "note": "operation detail"
      },
      {
        "url": "https://developer-apim.aeso.ca/developer/apis/poolprice-api-v1-1/schemas/675b18683d594b1e2075ef0a?api-version=2022-04-01-preview",
        "status": 200,
        "note": "schema document"
      }
    ]
  }
}