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
- ISOview Portal — manage your account and API key
- API Documentation — full reference for all endpoints
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19931b1495f3bcc1f91d79bdf2ec940e274914da9d53a5dcde9f520611a91a0c
|
|
| MD5 |
3a07102eab04b6288a7f8ccbec551cdc
|
|
| BLAKE2b-256 |
1a406bdf97925ac4c401c6bf70811e5195e4a23e0e273772ecbaec9a9a5fd6c2
|
Provenance
The following attestation bundles were made for isoview_client-0.3.0.tar.gz:
Publisher:
publish.yml on isoview-io/isoview-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
isoview_client-0.3.0.tar.gz -
Subject digest:
19931b1495f3bcc1f91d79bdf2ec940e274914da9d53a5dcde9f520611a91a0c - Sigstore transparency entry: 1042665051
- Sigstore integration time:
-
Permalink:
isoview-io/isoview-client@e6749e74f121a76b6ec988df69f937776b4fd3a8 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/isoview-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e6749e74f121a76b6ec988df69f937776b4fd3a8 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e206b1b9ffb6cb67a935f511b9b90c233567a56edfe26a06b516f901caecd3ea
|
|
| MD5 |
f60038398d8431b675fd18730f93c833
|
|
| BLAKE2b-256 |
7a1d4fae2e01e2e24767de16ea9c922955396c8d295da931bbbdef55cd4bc85c
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
isoview_client-0.3.0-py3-none-any.whl -
Subject digest:
e206b1b9ffb6cb67a935f511b9b90c233567a56edfe26a06b516f901caecd3ea - Sigstore transparency entry: 1042665094
- Sigstore integration time:
-
Permalink:
isoview-io/isoview-client@e6749e74f121a76b6ec988df69f937776b4fd3a8 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/isoview-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e6749e74f121a76b6ec988df69f937776b4fd3a8 -
Trigger Event:
push
-
Statement type: