Skip to main content

Python client for the ISOview energy forecasting API

Project description

isoview-client

Python client for the ISOview energy forecasting API — demand, wind, solar, LMP, and natural gas forecasts across US ISOs, returned as pandas DataFrames.

Installation

pip install isoview-client

Requires Python 3.10+. Installs requests and pandas as dependencies.

Authentication

Sign up at isoview.io and grab your API key from the Portal.

from isoview import Client

client = Client("your-api-key")

Quick Start

from isoview import Client

client = Client("your-api-key")

# Get the latest PJM demand forecast
ts = client.get_regional_forecast("pjm", "demand")

# Convert to a pandas DataFrame
df = ts.to_df()
print(df.head())

Every forecast method returns a TimeseriesResponse. Call .to_df() to get a pandas DataFrame with a UTC DatetimeIndex and MultiIndex columns like ("pjm_total", "forecast"). Pass utc=False for local time instead.

Examples

Regions

Forecasts for geographic regions within an ISO — demand, wind, solar, outages, and population-weighted temperature.

# See what regions are available
regions = client.list_regions("pjm", "demand")

# Latest forecast for a specific region
ts = client.get_regional_forecast("pjm", "demand", id="pjm_total")

# Stitched historical forecast — what did the day-ahead forecast
# look like at 10am each day?
ts = client.get_regional_continuous_forecast(
    "miso", "wind",
    start="2025-01-01T00:00:00Z",
    end="2025-06-01T00:00:00Z",
    latest_hour=10,
    days_ahead=1,
)

# Probabilistic ensemble forecast (multiple scenarios)
ts = client.get_regional_ensemble_forecast("pjm", "demand", id="pjm_total")

# Day-ahead backcast for model evaluation
ts = client.get_regional_backcast("pjm", "demand")

# Everything at once — demand, wind, solar, outages, temp, LMP
ts = client.get_iso_summary("pjm")

Plants

Generation forecasts for individual wind and solar facilities.

# Browse plants in ERCOT
plants = client.list_plants("ercot", "wind")
print(plants[0].name, plants[0].capacity_mw, "MW")

# Get a forecast
ts = client.get_plant_forecast("ercot", "wind", id=str(plants[0].id))
df = ts.to_df()

# Day-ahead backcast for plant-level model evaluation
ts = client.get_plant_backcast("ercot", "wind", id=str(plants[0].id))

Counties

County-level electricity demand forecasts, disaggregated from regional data.

counties = client.list_counties("isone")
ts = client.get_county_forecast("isone", id=counties[0].id)

Gas

Natural gas price forecasts for major trading hubs.

hubs = client.list_gas_hubs()
ts = client.get_gas_forecast(id=hubs[0].id)

LMP

Locational Marginal Price forecasts for electricity market nodes.

nodes = client.list_lmp_nodes("pjm", "dalmp")
ts = client.get_lmp_forecast("pjm", "dalmp", id=nodes[0].id)

Working with Responses

Timeseries

All forecast, continuous, ensemble, backcast, and summary endpoints return a TimeseriesResponse:

ts = client.get_regional_forecast("pjm", "demand")

ts.model       # 'optimized'
ts.created_at  # datetime — when the forecast was generated
ts.units       # 'MW'
ts.timezone    # 'America/New_York'

# Convert to a pandas DataFrame (UTC index by default)
df = ts.to_df()

# Or use local time
df_local = ts.to_df(utc=False)

The DataFrame has a DatetimeIndex and MultiIndex columns (e.g. ("pjm_total", "forecast")).

Metadata

List endpoints return typed objects you can inspect directly:

regions = client.list_regions("pjm", "demand")
for r in regions:
    print(r.id, r.name, r.timezone)

plants = client.list_plants("ercot", "solar")
for p in plants:
    print(p.name, f"{p.capacity_mw} MW", p.state)

Supported ISOs

Code Name
pjm PJM Interconnection
miso Midcontinent ISO
spp Southwest Power Pool
ercot Electric Reliability Council of Texas
caiso California ISO
nyiso New York ISO
isone ISO New England

Error Handling

The client raises requests.HTTPError on API errors (401, 403, 422, etc.):

import requests

try:
    ts = client.get_regional_forecast("pjm", "demand")
except requests.HTTPError as e:
    print(e.response.status_code, e.response.text)

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

isoview_client-0.2.0.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

isoview_client-0.2.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file isoview_client-0.2.0.tar.gz.

File metadata

  • Download URL: isoview_client-0.2.0.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for isoview_client-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a3afe1936df974c5e628bc3caa0bbb7e9a083c9f61da240c3a49d30ce7c5d8e1
MD5 d56897aa26425ab4572407d7c15e510f
BLAKE2b-256 d67865875b128817fd743162bc0af31ba6aa421daafe6f9d3bb582f97708ca25

See more details on using hashes here.

Provenance

The following attestation bundles were made for isoview_client-0.2.0.tar.gz:

Publisher: publish.yml on isoview-io/isoview-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file isoview_client-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: isoview_client-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for isoview_client-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d2d15a186876e28e729aa7611e8b1fa01876bebac32b503c92ab78c20593e8c9
MD5 c3bfa38b573f1bf6a2b4284d209960b9
BLAKE2b-256 72bb01da311fd5785fde1fabffd699367e6d2c0a02900298e729d7e8c4114807

See more details on using hashes here.

Provenance

The following attestation bundles were made for isoview_client-0.2.0-py3-none-any.whl:

Publisher: publish.yml on isoview-io/isoview-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page