MISO logo

MISO Hourly Actual Load

Actual hourly electricity demand in MISO, one row per hour with a system total and one column per market region.

Native record
one row per operating hour, wide by sub-area
hourly publication cadence
Evidence
Observed market data
Published observations from the named source
Time basis
Interval-start records
UTC · event_time

Overview

27,371 hours, 2023-08 to now. Columns: system_mw plus central_mw, north_mw, south_mw. system_mw is DERIVED as the sum of MISO's three market regions, which is how MISO itself reports system load, so a region share is region_mw / system_mw. Wide rather than long, so "load right now" and "the 3 market region shares of it" are one row, not 4. Every market's load table in this catalog shares the system_mw column and the same hourly grain, so a cross-market demand comparison needs no reshaping.

Query contract

One row is the canonical hourly value; the refresh already collapsed the source's restatements. Read the hour you want and use its columns together.

Analysis rules

  • Take every value for one hour from that hour's single row. Never combine a system total from one hour with area values from another.
  • An area's share of demand is <area>_mw / system_mw within the same row. Do not sum the 3 area columns and system_mw together — that double-counts the whole market.

Interpretation

  • Hourly actuals. For MISO demand in the last few minutes use miso_live_load series='actual_five_minute'. The seven LSE-zone series in miso_demand_load_state_estimator are opaque zone ids that do not map to these regions.
  • system_mw is derived by summing the area columns, so the identity system_mw = sum(areas) proves nothing about either. Do not present it as an independent cross-check.

Access

Query from your own tools

Use the guarded HTTP endpoint directly, or connect an MCP client and load the dataset contract with describe_data before calling query_data.

HTTP endpoint
POST /api/v1/datasets/miso_load/query

Need the full history of this dataset in Snowflake, Databricks or your own storage? Data services delivers it on a schedule.

Schema5

Column
Type
event_timeDateTime64(6, 'UTC')
system_mwNullable(Float64)
central_mwNullable(Float64)
north_mwNullable(Float64)
south_mwNullable(Float64)

Sample data

event_timesystem_mwcentral_mwnorth_mwsouth_mw
2026-10-16 04:00:00.00000071561.233959.41661320988.8
2026-10-16 03:00:00.00000075271.535757.417239.522274.6
2026-10-16 02:00:00.00000078990.737611.717808.523570.5
2026-10-16 01:00:00.00000082290.2999999999939279.918424.824585.6
2026-10-16 00:00:00.00000085017.2000000000140508.918840.925667.4
2026-10-15 23:00:00.00000086688.441164.618974.226549.6
2026-10-15 22:00:00.00000087225.440808.91879327623.5
2026-10-15 21:00:00.00000087592.200000000014065018797.328144.9
2026-10-15 20:00:00.00000087422.140425.818830.428165.9
2026-10-15 19:00:00.00000086610.840181.31884527584.5
2026-10-15 18:00:00.00000086138.2000000000140297.31919726643.9
2026-10-15 17:00:00.00000085081.839909.819245.225926.8
2026-10-15 16:00:00.00000082770.9000000000139388.919085.224296.8
2026-10-15 15:00:00.00000080813.839106.118751.222956.5
2026-10-15 14:00:00.00000078768.2000000000138804.418601.221362.6
2026-10-15 13:00:00.00000076911.33834018248.920322.4
2026-10-15 12:00:00.00000075486.737709.217919.319858.2
2026-10-15 11:00:00.00000073548.299999999993653117139.719877.6
2026-10-15 10:00:00.00000069343.334197.516020.619125.2
2026-10-15 09:00:00.00000066024.832087.815263.718673.3
2026-10-15 08:00:00.00000064660.131111.914949.118599.1
2026-10-15 07:00:00.00000064854.530934.914966.318953.3
2026-10-15 06:00:00.0000006591431265.915262.419385.7
2026-10-15 05:00:00.00000067684.532185.31558319916.2
2026-10-15 04:00:00.00000070446.433358.816112.520975.1

Coverage

No time-indexed data — coverage isn’t applicable to this dataset.