ERCOT Real-Time Binding Constraints
Which transmission facilities bound in ERCOT's real-time market and what each one cost, one row per interval and constraint.
Overview
8.42M rows, 2014-05 to now. Columns: event_time, constraint_name, shadow_price_usd_mwh, plus contingency (the outage the limit is evaluated against), from_station and to_station (the ends of the constrained element), limit_mw and flow_mw. The shadow price is the marginal cost of the binding limit — what the market would have saved from one more megawatt of capability on that element. This is the table that answers WHY congestion appeared; a price spread between two locations shows that they separated but not which facility separated them.
Query contract
Analysis rules
Related analysis
Interpretation
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.
POST /api/v1/datasets/ercot_constraints_rt/queryNeed the full history of this dataset in Snowflake, Databricks or your own storage? Data services delivers it on a schedule.
Schema8
event_timeDateTime64(6, 'UTC')constraint_nameLowCardinality(String)contingencyLowCardinality(String)from_stationLowCardinality(Nullable(String))to_stationLowCardinality(Nullable(String))shadow_price_usd_mwhNullable(Float64)limit_mwNullable(Float64)flow_mwNullable(Float64)Sample data
| event_time | constraint_name | contingency | from_station | to_station | shadow_price_usd_mwh | limit_mw | flow_mw |
|---|---|---|---|---|---|---|---|
| 2026-10-12 09:55:19.000000 | WESTEX | BASE CASE | ∅ | ∅ | 0 | 9873.6 | 7905.8 |
| 2026-10-12 09:55:19.000000 | TREADW_YELWJC1_1 | DBUCRGP5 | TREADWEL | YELWJCKT | 59.64016 | 204.8 | 204.8 |
| 2026-10-12 09:55:19.000000 | SN_STR26_A | SNEWGLF8 | SN | STR | 27.39368 | 291.9 | 291.9 |
| 2026-10-12 09:55:19.000000 | KLNSW_MR1H | DSALKLN5 | KLNSW | KLNSW | 217.04822 | 745.6 | 745.6 |
| 2026-10-12 09:55:19.000000 | HHGTOM_1 | BASE CASE | HHGT | OMEGA | 66.82891 | 750.5 | 750.5 |
| 2026-10-12 09:55:19.000000 | CROSSO_PALOUS1_1 | SWOLPAL8 | PALOUSE | CROSSOVE | 0 | 182.8 | 172.1 |
| 2026-10-12 09:55:19.000000 | BLESSING_1382 | DSTPSTA5 | BLESSING | BLESSING | 0 | 425.2 | 413.1 |
| 2026-10-12 09:55:19.000000 | 6437__F | DMTSCOS5 | SCRCV | KNAPP | 0 | 229.9 | 206.9 |
| 2026-10-12 09:55:19.000000 | 138_FWP_MNL_1 | SALVTNN8 | FRWYPARK | MAINLAND | 0 | 383.8 | 199.5 |
| 2026-10-12 09:55:19.000000 | 1020__A | DELMWWE8 | ELMOT | MCTYE | 33.14442 | 217.9 | 217.9 |
| 2026-10-12 09:50:19.000000 | WESTEX | BASE CASE | ∅ | ∅ | 0 | 9873.6 | 7868.4 |
| 2026-10-12 09:50:19.000000 | TREADW_YELWJC1_1 | DBUCRGP5 | TREADWEL | YELWJCKT | 59.53268 | 204.8 | 204.8 |
| 2026-10-12 09:50:19.000000 | SN_STR26_A | SNEWGLF8 | SN | STR | 20.04672 | 291.6 | 291.6 |
| 2026-10-12 09:50:19.000000 | KLNSW_MR1H | DSALKLN5 | KLNSW | KLNSW | 216.85191 | 745.5 | 745.5 |
| 2026-10-12 09:50:19.000000 | HHGTOM_1 | BASE CASE | HHGT | OMEGA | 66.79801 | 750.5 | 750.5 |
| 2026-10-12 09:50:19.000000 | CROSSO_PALOUS1_1 | SWOLPAL8 | PALOUSE | CROSSOVE | 0 | 182.8 | 172.4 |
| 2026-10-12 09:50:19.000000 | BLESSING_1382 | DSTPSTA5 | BLESSING | BLESSING | 0 | 425.1 | 414.6 |
| 2026-10-12 09:50:19.000000 | 6437__F | DMTSCOS5 | SCRCV | KNAPP | 0 | 230 | 206.6 |
| 2026-10-12 09:50:19.000000 | 138_FWP_MNL_1 | SALVTNN8 | FRWYPARK | MAINLAND | 0 | 384 | 81.8 |
| 2026-10-12 09:50:19.000000 | 1020__A | DELMWWE8 | ELMOT | MCTYE | 32.92673 | 217.9 | 217.9 |
| 2026-10-12 09:45:19.000000 | WESTEX | BASE CASE | ∅ | ∅ | 0 | 9873.6 | 7891.5 |
| 2026-10-12 09:45:19.000000 | TREADW_YELWJC1_1 | DBUCRGP5 | TREADWEL | YELWJCKT | 59.46072 | 204.8 | 204.8 |
| 2026-10-12 09:45:19.000000 | SN_STR26_A | SNEWGLF8 | SN | STR | 2.68494 | 291.6 | 291.6 |
| 2026-10-12 09:45:19.000000 | KLNSW_MR1H | DSALKLN5 | KLNSW | KLNSW | 216.63338 | 745.6 | 745.6 |
| 2026-10-12 09:45:19.000000 | HHGTOM_1 | BASE CASE | HHGT | OMEGA | 66.85232 | 750.5 | 750.5 |