CAISO logo

CAISO Price Locations

Every CAISO location that carries a price, as three columns: location_id, name, and kind.

Native record
one row per priced location and kind
slow-moving dimension, refreshed every 6 hours publication cadence
Evidence
Reference data
Stable context used to interpret other datasets
Time basis
Point-in-time records
UTC · static reference

Overview

26,632 rows — node (26,048), interface (578), zone (6). This is the dimension the CAISO price, and where applicable constraint, tables join to, and it is the one place a location's type is decided: resolve "which hubs exist", "is this a zone or a node", or "give me the readable name for this id" here rather than inferring a type from a name prefix. For CAISO, name equals location_id (the pnode name). The same three columns exist for every market, so the equivalent question in another ISO is the same query against that ISO's table.

Query contract

Treat (location_id, kind) as the row identity. This is a current dimension snapshot, not a history: it describes the locations that exist now and carries no validity dates.

Analysis rules

  • Counting rows by kind describes the market's current location inventory. It does not describe how many locations were priced on some past date.
  • Join fact tables on location_id, and add kind to the join when the fact table also carries kind — the pair, not the id alone, is the identity.

Interpretation

  • A location existing here does not mean it has a price in any particular interval; check the price table for that.
  • kind is a classification of the priced object, not of the physical equipment behind it, and carries no capacity, voltage, or geography. Location geography lives in grid.entities.

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/caiso_locations/query

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

Schema3

Column
Type
location_idLowCardinality(String)
nameLowCardinality(String)
kindLowCardinality(String)

Sample data

location_idnamekind
0096WD_7_N0010096WD_7_N001node
0096WD_7_N0020096WD_7_N002node
106THSO_LNODED1106THSO_LNODED1node
10TH_STW_1_1LNODE10TH_STW_1_1LNODEnode
10TH_STW_1_2LNODE10TH_STW_1_2LNODEnode
118THSO_LNODER1118THSO_LNODER1node
119TH_BP_LNODEXF1119TH_BP_LNODEXF1node
126THSO_LNODE_LDT1126THSO_LNODE_LDT1node
126THSO_LNODE_LDT2126THSO_LNODE_LDT2node
12STREET_LNODEEET112STREET_LNODEEET1node
12STREET_LNODEEET212STREET_LNODEEET2node
12TH_S_LNODENMZ12TH_S_LNODENMZnode
12TH_S_LNODEXWQ12TH_S_LNODEXWQnode
13THSO_LNODE-313THSO_LNODE-3node
13THSO_LNODED213THSO_LNODED2node
1501WDC2_7_ND0011501WDC2_7_ND001node
22ND_ST_LNODEC2222ND_ST_LNODEC22node
22ND_ST_LNODEC2322ND_ST_LNODEC23node
22ND_ST_LNODEC3222ND_ST_LNODEC32node
22ND_ST_LNODEC3322ND_ST_LNODEC33node
22ND_ST_LNODEDIST22ND_ST_LNODEDISTnode
22ND_ST_LNODEDONED22ND_ST_LNODEDONEDnode
22ND_ST_LNODEIST222ND_ST_LNODEIST2node
22ND_ST_LNODEIST322ND_ST_LNODEIST3node
23RDST_LNODED323RDST_LNODED3node

Coverage

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