Microproduct data guideintermediate

EIA Hourly Electric Grid Data

Hourly U.S. electricity demand, forecasts, generation, and interchange for building grid monitors, demand alerts, and energy forecasting tools.

At a glance

Difficulty
Intermediate — some data preparation helps
Size
Large · 0.001–10 GB
Formats
JSON, CSV
Access
API or Download
API key
Required
Provider
U.S. Energy Information Administration
Updates
Continuous
Data terms
U.S. Public Domain with EIA source acknowledgment

From source to product signal

Test a product idea in four steps

EIA's Hourly Electric Grid Monitor publishes demand, day-ahead forecasts, net generation, and interchange by balancing authority. Start with one authority and a bounded response. Values can be revised, and demand, generation, forecasts, and interchange have different meanings that must not be combined without checking their type and units.

1

Check the setup

  • Python 3.10 or newer
  • A notebook environment such as Jupyter or Google Colab
  • A free EIA API key saved in the EIA_API_KEY environment variable
2

Access the data

  1. 1.Register for a free key on the EIA Open Data site.
  2. 2.Save the key in the EIA_API_KEY environment variable.
  3. 3.Request a bounded hourly sample for one balancing authority and inspect its type fields.
Open official source
3

Run the Python example

Install the packages, then run the notebook cell.

python -m pip install pandas requests

import os
import pandas as pd
import requests

response = requests.get(
    "https://api.eia.gov/v2/electricity/rto/region-data/data/",
    params={
        "api_key": os.environ["EIA_API_KEY"],
        "frequency": "hourly",
        "data[0]": "value",
        "facets[respondent][]": "CAL",
        "length": 500,
    },
    timeout=30,
)
response.raise_for_status()
grid = pd.DataFrame(response.json()["response"]["data"])
grid["period"] = pd.to_datetime(grid["period"])
grid["value"] = pd.to_numeric(grid["value"], errors="coerce")
print(grid[["period", "respondent-name", "type-name", "value", "value-units"]].head())
4

Test a useful signal

Monitor demand against the day-ahead forecast

Test whether forecast errors for one balancing authority can trigger a useful grid-demand alert.

  1. 01Separate demand and day-ahead forecast rows by their documented type codes.
  2. 02Join matching hourly periods and calculate absolute and percentage forecast errors.
  3. 03Identify the largest errors and explain how revisions, missing hours, and balancing-authority boundaries limit the alert.

Dataset details

U.S. Energy Information Administration is a government source. Last verified 2026-08-11. Temporal coverage: 2015-present.

Domains

EnergyElectricityInfrastructure

Data types

Time SeriesOperational Data

Tasks

Demand MonitoringForecast EvaluationAnomaly Detection

Geography

United States

Formats

JSONCSV

Provider

U.S. Energy Information Administration

Data terms

U.S. Public Domain with EIA source acknowledgment