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.3.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.3.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: isoview_client-0.3.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.3.0.tar.gz
Algorithm Hash digest
SHA256 19931b1495f3bcc1f91d79bdf2ec940e274914da9d53a5dcde9f520611a91a0c
MD5 3a07102eab04b6288a7f8ccbec551cdc
BLAKE2b-256 1a406bdf97925ac4c401c6bf70811e5195e4a23e0e273772ecbaec9a9a5fd6c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for isoview_client-0.3.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.3.0-py3-none-any.whl.

File metadata

  • Download URL: isoview_client-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 9.3 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e206b1b9ffb6cb67a935f511b9b90c233567a56edfe26a06b516f901caecd3ea
MD5 f60038398d8431b675fd18730f93c833
BLAKE2b-256 7a1d4fae2e01e2e24767de16ea9c922955396c8d295da931bbbdef55cd4bc85c

See more details on using hashes here.

Provenance

The following attestation bundles were made for isoview_client-0.3.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