Overview

Every ERCOT location that carries a price, as three columns: location_id, name, and kind. 20,456 rows — bus (19,329), node (1,100), weather_zone (8), zone (8), hub (7), interface (4). This is the dimension the ERCOT 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 ERCOT, name equals location_id — the settlement-point name is the identifier. The key is (location_id, kind), not location_id alone: 161 ERCOT names exist as both a settlement point and an electrical bus, and those are separately priced objects. Filter on kind when a name could be either. The same three columns exist for every market, so the equivalent question in another ISO is the same query against that ISO's table.

Use with MCP

This table is readable two ways, over the same guarded boundary. Over HTTP: POST /api/v1/datasets/ercot_locations/query, described in the API reference. Or from an MCP client: connect a market below, then use search_data or describe_data to load its query contract before calling query_data.

Schema3

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

Sample rows

location_idnamekind
00010001bus
0001DUPV1_0001DUPV1_bus
0001HWFG10001HWFG1bus
0001VICTOR0001VICTORbus
0001_C0001_Cbus
0001_EB0001_EBbus
0001_LO0001_LObus
00020002bus
0002_EB0002_EBbus
00030003bus
0003EB0003EBbus
0003_EB0003_EBbus
00040004bus
0004EB0004EBbus
0004_10004_1bus
0004_EB0004_EBbus
00050005bus
00060006bus
0006B0006Bbus
0006EB0006EBbus
0006_PV10006_PV1bus
00070007bus
0007_EB0007_EBbus
00080008bus
0008EB0008EBbus

Coverage

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