What is Grid Status?#

gridstatus logo

Tests Code Coverage PyPI Version

gridstatus is a standardized Python API to electricity supply, demand, and pricing data for the major Independent System Operators (ISOs) in the United States.

Currently gridstatus supports CAISO, SPP, ISONE, MISO, Ercot, NYISO, and PJM.

We’d love to answer any usage or data access questions! Please let us know by posting a GitHub issue.

5 Minute Overview#

First, we can see all of the ISOs that are supported

import gridstatus
gridstatus.list_isos()
Name Id Class
0 Midcontinent ISO miso MISO
1 California ISO caiso CAISO
2 PJM pjm PJM
3 Electric Reliability Council of Texas ercot Ercot
4 Southwest Power Pool spp SPP
5 New York ISO nyiso NYISO
6 ISO New England isone ISONE
7 Independent Electricity System Operator ieso IESO

Next, we can select an ISO we want to use

caiso = gridstatus.CAISO()

Fuel Mix#

All ISOs have the same API to methods like get_fuel_mix, get_load, and get_status, etc. Here is how we can get the fuel mix

caiso.get_fuel_mix("today")
Time Interval Start Interval End Solar Wind Geothermal Biomass Biogas Small Hydro Coal Nuclear Natural Gas Large Hydro Batteries Imports Other
0 2024-11-05 00:00:00-08:00 2024-11-05 00:00:00-08:00 2024-11-05 00:05:00-08:00 -51 1357 794 195 160 150 -1 2266 9023 1326 -1007 7720 0
1 2024-11-05 00:05:00-08:00 2024-11-05 00:05:00-08:00 2024-11-05 00:10:00-08:00 -51 1380 794 194 160 151 -1 2266 8621 1434 -619 7829 0
2 2024-11-05 00:10:00-08:00 2024-11-05 00:10:00-08:00 2024-11-05 00:15:00-08:00 -51 1379 793 195 160 152 -1 2267 8464 1490 -203 7611 0
3 2024-11-05 00:15:00-08:00 2024-11-05 00:15:00-08:00 2024-11-05 00:20:00-08:00 -51 1406 794 195 160 151 -1 2267 8454 1521 -222 7590 0
4 2024-11-05 00:20:00-08:00 2024-11-05 00:20:00-08:00 2024-11-05 00:25:00-08:00 -51 1433 794 194 161 151 -1 2267 8477 1526 -224 7527 0
5 2024-11-05 00:25:00-08:00 2024-11-05 00:25:00-08:00 2024-11-05 00:30:00-08:00 -51 1453 794 193 161 152 -1 2266 8450 1533 -417 7682 0
6 2024-11-05 00:30:00-08:00 2024-11-05 00:30:00-08:00 2024-11-05 00:35:00-08:00 -51 1495 794 192 162 153 -1 2266 8381 1537 -460 7685 0
7 2024-11-05 00:35:00-08:00 2024-11-05 00:35:00-08:00 2024-11-05 00:40:00-08:00 -51 1523 795 191 161 154 -1 2266 8362 1539 -450 7580 0
8 2024-11-05 00:40:00-08:00 2024-11-05 00:40:00-08:00 2024-11-05 00:45:00-08:00 -51 1549 795 193 160 154 -1 2267 8330 1542 -407 7488 0
9 2024-11-05 00:45:00-08:00 2024-11-05 00:45:00-08:00 2024-11-05 00:50:00-08:00 -51 1566 794 193 161 155 -1 2267 8305 1534 -422 7464 0
10 2024-11-05 00:50:00-08:00 2024-11-05 00:50:00-08:00 2024-11-05 00:55:00-08:00 -51 1578 794 193 161 155 -1 2268 8270 1527 -477 7479 0
11 2024-11-05 00:55:00-08:00 2024-11-05 00:55:00-08:00 2024-11-05 01:00:00-08:00 -51 1611 795 194 161 154 -1 2267 8205 1521 -630 7603 0
12 2024-11-05 01:00:00-08:00 2024-11-05 01:00:00-08:00 2024-11-05 01:05:00-08:00 -51 1647 794 196 161 154 -1 2267 8193 1504 -735 7603 0
13 2024-11-05 01:05:00-08:00 2024-11-05 01:05:00-08:00 2024-11-05 01:10:00-08:00 -52 1670 794 194 162 155 -1 2267 8229 1403 -707 7537 0
14 2024-11-05 01:10:00-08:00 2024-11-05 01:10:00-08:00 2024-11-05 01:15:00-08:00 -51 1661 794 195 162 154 -1 2266 8256 1340 -794 7635 0
15 2024-11-05 01:15:00-08:00 2024-11-05 01:15:00-08:00 2024-11-05 01:20:00-08:00 -51 1661 794 196 161 155 -1 2267 8224 1331 -808 7659 0
16 2024-11-05 01:20:00-08:00 2024-11-05 01:20:00-08:00 2024-11-05 01:25:00-08:00 -51 1652 794 195 162 154 -1 2267 8192 1327 -869 7646 0
17 2024-11-05 01:25:00-08:00 2024-11-05 01:25:00-08:00 2024-11-05 01:30:00-08:00 -51 1621 795 196 162 155 -1 2268 8224 1323 -859 7558 0
18 2024-11-05 01:30:00-08:00 2024-11-05 01:30:00-08:00 2024-11-05 01:35:00-08:00 -51 1613 795 195 162 154 -1 2268 8214 1326 -853 7464 0
19 2024-11-05 01:35:00-08:00 2024-11-05 01:35:00-08:00 2024-11-05 01:40:00-08:00 -51 1606 795 195 162 155 -1 2267 8170 1326 -883 7470 0
20 2024-11-05 01:40:00-08:00 2024-11-05 01:40:00-08:00 2024-11-05 01:45:00-08:00 -51 1583 795 194 162 155 -1 2268 8111 1327 -838 7420 0
21 2024-11-05 01:45:00-08:00 2024-11-05 01:45:00-08:00 2024-11-05 01:50:00-08:00 -51 1556 796 199 162 155 -1 2268 8133 1326 -903 7453 0
22 2024-11-05 01:50:00-08:00 2024-11-05 01:50:00-08:00 2024-11-05 01:55:00-08:00 -52 1503 799 197 162 155 -1 2268 8111 1329 -897 7406 0
23 2024-11-05 01:55:00-08:00 2024-11-05 01:55:00-08:00 2024-11-05 02:00:00-08:00 -52 1432 801 198 162 155 -1 2269 8150 1331 -935 7403 0
24 2024-11-05 02:00:00-08:00 2024-11-05 02:00:00-08:00 2024-11-05 02:05:00-08:00 -52 1375 800 197 162 156 -1 2268 8148 1333 -925 7374 0
25 2024-11-05 02:05:00-08:00 2024-11-05 02:05:00-08:00 2024-11-05 02:10:00-08:00 -52 1343 799 200 162 156 -1 2269 8087 1312 -622 7134 0
26 2024-11-05 02:10:00-08:00 2024-11-05 02:10:00-08:00 2024-11-05 02:15:00-08:00 -52 1308 801 201 163 154 -1 2269 8105 1312 -567 7027 0
27 2024-11-05 02:15:00-08:00 2024-11-05 02:15:00-08:00 2024-11-05 02:20:00-08:00 -52 1284 809 200 162 154 -1 2270 8073 1311 -561 7016 0
28 2024-11-05 02:20:00-08:00 2024-11-05 02:20:00-08:00 2024-11-05 02:25:00-08:00 -52 1274 819 200 162 155 -1 2269 8015 1307 -456 6951 0
29 2024-11-05 02:25:00-08:00 2024-11-05 02:25:00-08:00 2024-11-05 02:30:00-08:00 -52 1260 815 200 163 154 -1 2271 8053 1309 -455 6904 0
30 2024-11-05 02:30:00-08:00 2024-11-05 02:30:00-08:00 2024-11-05 02:35:00-08:00 -52 1236 809 200 162 154 -1 2268 8098 1328 -499 6866 0
31 2024-11-05 02:35:00-08:00 2024-11-05 02:35:00-08:00 2024-11-05 02:40:00-08:00 -52 1276 801 201 162 154 -1 2270 8115 1320 -647 6973 0
32 2024-11-05 02:40:00-08:00 2024-11-05 02:40:00-08:00 2024-11-05 02:45:00-08:00 -52 1362 795 201 162 154 -1 2270 8184 1319 -720 6854 0
33 2024-11-05 02:45:00-08:00 2024-11-05 02:45:00-08:00 2024-11-05 02:50:00-08:00 -52 1440 795 200 162 154 -1 2269 8230 1317 -917 6909 0
34 2024-11-05 02:50:00-08:00 2024-11-05 02:50:00-08:00 2024-11-05 02:55:00-08:00 -52 1508 794 195 162 153 -1 2269 8252 1310 -1047 6980 0
35 2024-11-05 02:55:00-08:00 2024-11-05 02:55:00-08:00 2024-11-05 03:00:00-08:00 -52 1548 795 196 161 153 -1 2270 8286 1305 -1121 6934 0
36 2024-11-05 03:00:00-08:00 2024-11-05 03:00:00-08:00 2024-11-05 03:05:00-08:00 -52 1580 795 197 161 153 -1 2268 8240 1291 -1108 6959 0
37 2024-11-05 03:05:00-08:00 2024-11-05 03:05:00-08:00 2024-11-05 03:10:00-08:00 -52 1628 795 198 161 152 -1 2270 8121 1296 -953 6892 0
38 2024-11-05 03:10:00-08:00 2024-11-05 03:10:00-08:00 2024-11-05 03:15:00-08:00 -52 1626 796 198 161 148 -1 2269 8068 1298 -855 6865 0
39 2024-11-05 03:15:00-08:00 2024-11-05 03:15:00-08:00 2024-11-05 03:20:00-08:00 -52 1656 795 198 161 149 -1 2269 8028 1299 -839 6840 0
40 2024-11-05 03:20:00-08:00 2024-11-05 03:20:00-08:00 2024-11-05 03:25:00-08:00 -52 1714 795 199 161 148 -1 2269 7967 1297 -712 6734 0
41 2024-11-05 03:25:00-08:00 2024-11-05 03:25:00-08:00 2024-11-05 03:30:00-08:00 -52 1758 795 198 161 148 -1 2269 7917 1291 -666 6733 0
42 2024-11-05 03:30:00-08:00 2024-11-05 03:30:00-08:00 2024-11-05 03:35:00-08:00 -52 1861 795 198 161 148 -1 2269 7912 1289 -686 6661 0
43 2024-11-05 03:35:00-08:00 2024-11-05 03:35:00-08:00 2024-11-05 03:40:00-08:00 -52 1962 795 199 161 148 -1 2269 7938 1290 -781 6655 0
44 2024-11-05 03:40:00-08:00 2024-11-05 03:40:00-08:00 2024-11-05 03:45:00-08:00 -52 2049 796 198 161 148 -1 2269 7940 1292 -952 6746 0
45 2024-11-05 03:45:00-08:00 2024-11-05 03:45:00-08:00 2024-11-05 03:50:00-08:00 -52 2090 797 197 161 149 -1 2269 7957 1289 -1024 6776 0

Load#

or the energy demand throughout the current day as a Pandas DataFrame

caiso.get_load("today")
Time Interval Start Interval End Load
0 2024-11-05 00:00:00-08:00 2024-11-05 00:00:00-08:00 2024-11-05 00:05:00-08:00 21566.0
1 2024-11-05 00:05:00-08:00 2024-11-05 00:05:00-08:00 2024-11-05 00:10:00-08:00 21649.0
2 2024-11-05 00:10:00-08:00 2024-11-05 00:10:00-08:00 2024-11-05 00:15:00-08:00 21730.0
3 2024-11-05 00:15:00-08:00 2024-11-05 00:15:00-08:00 2024-11-05 00:20:00-08:00 21762.0
4 2024-11-05 00:20:00-08:00 2024-11-05 00:20:00-08:00 2024-11-05 00:25:00-08:00 21705.0
5 2024-11-05 00:25:00-08:00 2024-11-05 00:25:00-08:00 2024-11-05 00:30:00-08:00 21733.0
6 2024-11-05 00:30:00-08:00 2024-11-05 00:30:00-08:00 2024-11-05 00:35:00-08:00 21616.0
7 2024-11-05 00:35:00-08:00 2024-11-05 00:35:00-08:00 2024-11-05 00:40:00-08:00 21529.0
8 2024-11-05 00:40:00-08:00 2024-11-05 00:40:00-08:00 2024-11-05 00:45:00-08:00 21464.0
9 2024-11-05 00:45:00-08:00 2024-11-05 00:45:00-08:00 2024-11-05 00:50:00-08:00 21402.0
10 2024-11-05 00:50:00-08:00 2024-11-05 00:50:00-08:00 2024-11-05 00:55:00-08:00 21314.0
11 2024-11-05 00:55:00-08:00 2024-11-05 00:55:00-08:00 2024-11-05 01:00:00-08:00 21250.0
12 2024-11-05 01:00:00-08:00 2024-11-05 01:00:00-08:00 2024-11-05 01:05:00-08:00 21201.0
13 2024-11-05 01:05:00-08:00 2024-11-05 01:05:00-08:00 2024-11-05 01:10:00-08:00 21089.0
14 2024-11-05 01:10:00-08:00 2024-11-05 01:10:00-08:00 2024-11-05 01:15:00-08:00 21037.0
15 2024-11-05 01:15:00-08:00 2024-11-05 01:15:00-08:00 2024-11-05 01:20:00-08:00 20979.0
16 2024-11-05 01:20:00-08:00 2024-11-05 01:20:00-08:00 2024-11-05 01:25:00-08:00 20884.0
17 2024-11-05 01:25:00-08:00 2024-11-05 01:25:00-08:00 2024-11-05 01:30:00-08:00 20798.0
18 2024-11-05 01:30:00-08:00 2024-11-05 01:30:00-08:00 2024-11-05 01:35:00-08:00 20736.0
19 2024-11-05 01:35:00-08:00 2024-11-05 01:35:00-08:00 2024-11-05 01:40:00-08:00 20661.0
20 2024-11-05 01:40:00-08:00 2024-11-05 01:40:00-08:00 2024-11-05 01:45:00-08:00 20584.0
21 2024-11-05 01:45:00-08:00 2024-11-05 01:45:00-08:00 2024-11-05 01:50:00-08:00 20593.0
22 2024-11-05 01:50:00-08:00 2024-11-05 01:50:00-08:00 2024-11-05 01:55:00-08:00 20453.0
23 2024-11-05 01:55:00-08:00 2024-11-05 01:55:00-08:00 2024-11-05 02:00:00-08:00 20423.0
24 2024-11-05 02:00:00-08:00 2024-11-05 02:00:00-08:00 2024-11-05 02:05:00-08:00 20356.0
25 2024-11-05 02:05:00-08:00 2024-11-05 02:05:00-08:00 2024-11-05 02:10:00-08:00 20271.0
26 2024-11-05 02:10:00-08:00 2024-11-05 02:10:00-08:00 2024-11-05 02:15:00-08:00 20304.0
27 2024-11-05 02:15:00-08:00 2024-11-05 02:15:00-08:00 2024-11-05 02:20:00-08:00 20274.0
28 2024-11-05 02:20:00-08:00 2024-11-05 02:20:00-08:00 2024-11-05 02:25:00-08:00 20210.0
29 2024-11-05 02:25:00-08:00 2024-11-05 02:25:00-08:00 2024-11-05 02:30:00-08:00 20185.0
30 2024-11-05 02:30:00-08:00 2024-11-05 02:30:00-08:00 2024-11-05 02:35:00-08:00 20145.0
31 2024-11-05 02:35:00-08:00 2024-11-05 02:35:00-08:00 2024-11-05 02:40:00-08:00 20128.0
32 2024-11-05 02:40:00-08:00 2024-11-05 02:40:00-08:00 2024-11-05 02:45:00-08:00 20090.0
33 2024-11-05 02:45:00-08:00 2024-11-05 02:45:00-08:00 2024-11-05 02:50:00-08:00 20084.0
34 2024-11-05 02:50:00-08:00 2024-11-05 02:50:00-08:00 2024-11-05 02:55:00-08:00 20073.0
35 2024-11-05 02:55:00-08:00 2024-11-05 02:55:00-08:00 2024-11-05 03:00:00-08:00 20001.0
36 2024-11-05 03:00:00-08:00 2024-11-05 03:00:00-08:00 2024-11-05 03:05:00-08:00 19953.0
37 2024-11-05 03:05:00-08:00 2024-11-05 03:05:00-08:00 2024-11-05 03:10:00-08:00 19902.0
38 2024-11-05 03:10:00-08:00 2024-11-05 03:10:00-08:00 2024-11-05 03:15:00-08:00 19961.0
39 2024-11-05 03:15:00-08:00 2024-11-05 03:15:00-08:00 2024-11-05 03:20:00-08:00 19975.0
40 2024-11-05 03:20:00-08:00 2024-11-05 03:20:00-08:00 2024-11-05 03:25:00-08:00 19922.0
41 2024-11-05 03:25:00-08:00 2024-11-05 03:25:00-08:00 2024-11-05 03:30:00-08:00 19958.0
42 2024-11-05 03:30:00-08:00 2024-11-05 03:30:00-08:00 2024-11-05 03:35:00-08:00 19950.0
43 2024-11-05 03:35:00-08:00 2024-11-05 03:35:00-08:00 2024-11-05 03:40:00-08:00 20001.0
44 2024-11-05 03:40:00-08:00 2024-11-05 03:40:00-08:00 2024-11-05 03:45:00-08:00 19989.0
45 2024-11-05 03:45:00-08:00 2024-11-05 03:45:00-08:00 2024-11-05 03:50:00-08:00 19958.0

Load Forecast#

Another dataset we can query is the load forecast

nyiso = gridstatus.NYISO()
nyiso.get_load_forecast("today")
/home/docs/checkouts/readthedocs.org/user_builds/isodata/checkouts/latest/gridstatus/nyiso.py:905: FutureWarning: Parsed string "11/04/24 07:30 EST" included an un-recognized timezone "EST". Dropping unrecognized timezones is deprecated; in a future version this will raise. Instead pass the string without the timezone, then use .tz_localize to convert to a recognized timezone.
  return pd.Timestamp(last_updated_date, tz=self.default_timezone)
Time Interval Start Interval End Forecast Time Load Forecast
0 2024-11-05 00:00:00-05:00 2024-11-05 00:00:00-05:00 2024-11-05 01:00:00-05:00 2024-11-04 07:30:00-05:00 13303
1 2024-11-05 01:00:00-05:00 2024-11-05 01:00:00-05:00 2024-11-05 02:00:00-05:00 2024-11-04 07:30:00-05:00 12863
2 2024-11-05 02:00:00-05:00 2024-11-05 02:00:00-05:00 2024-11-05 03:00:00-05:00 2024-11-04 07:30:00-05:00 12618
3 2024-11-05 03:00:00-05:00 2024-11-05 03:00:00-05:00 2024-11-05 04:00:00-05:00 2024-11-04 07:30:00-05:00 12532
4 2024-11-05 04:00:00-05:00 2024-11-05 04:00:00-05:00 2024-11-05 05:00:00-05:00 2024-11-04 07:30:00-05:00 12770
... ... ... ... ... ...
139 2024-11-10 19:00:00-05:00 2024-11-10 19:00:00-05:00 2024-11-10 20:00:00-05:00 2024-11-04 07:30:00-05:00 16204
140 2024-11-10 20:00:00-05:00 2024-11-10 20:00:00-05:00 2024-11-10 21:00:00-05:00 2024-11-04 07:30:00-05:00 15754
141 2024-11-10 21:00:00-05:00 2024-11-10 21:00:00-05:00 2024-11-10 22:00:00-05:00 2024-11-04 07:30:00-05:00 15089
142 2024-11-10 22:00:00-05:00 2024-11-10 22:00:00-05:00 2024-11-10 23:00:00-05:00 2024-11-04 07:30:00-05:00 14288
143 2024-11-10 23:00:00-05:00 2024-11-10 23:00:00-05:00 2024-11-11 00:00:00-05:00 2024-11-04 07:30:00-05:00 13542

144 rows × 5 columns

Historical Data#

When supported, you can use the historical method calls to get data for a specific day in the past. For example,

caiso.get_load("Jan 1, 2020")
Time Interval Start Interval End Load
0 2020-01-01 00:00:00-08:00 2020-01-01 00:00:00-08:00 2020-01-01 00:05:00-08:00 21533
1 2020-01-01 00:05:00-08:00 2020-01-01 00:05:00-08:00 2020-01-01 00:10:00-08:00 21429
2 2020-01-01 00:10:00-08:00 2020-01-01 00:10:00-08:00 2020-01-01 00:15:00-08:00 21320
3 2020-01-01 00:15:00-08:00 2020-01-01 00:15:00-08:00 2020-01-01 00:20:00-08:00 21272
4 2020-01-01 00:20:00-08:00 2020-01-01 00:20:00-08:00 2020-01-01 00:25:00-08:00 21193
... ... ... ... ...
283 2020-01-01 23:35:00-08:00 2020-01-01 23:35:00-08:00 2020-01-01 23:40:00-08:00 20494
284 2020-01-01 23:40:00-08:00 2020-01-01 23:40:00-08:00 2020-01-01 23:45:00-08:00 20383
285 2020-01-01 23:45:00-08:00 2020-01-01 23:45:00-08:00 2020-01-01 23:50:00-08:00 20297
286 2020-01-01 23:50:00-08:00 2020-01-01 23:50:00-08:00 2020-01-01 23:55:00-08:00 20242
287 2020-01-01 23:55:00-08:00 2020-01-01 23:55:00-08:00 2020-01-02 00:00:00-08:00 20128

288 rows × 4 columns

Frequently, we want to get data across multiple days. We can do that by providing a start and end parameter to any iso.get_* method

caiso_load = caiso.get_load(start="Jan 1, 2021", end="Feb 1, 2021")
caiso_load
Time Interval Start Interval End Load
0 2021-01-01 00:00:00-08:00 2021-01-01 00:00:00-08:00 2021-01-01 00:05:00-08:00 21937.0
1 2021-01-01 00:05:00-08:00 2021-01-01 00:05:00-08:00 2021-01-01 00:10:00-08:00 21858.0
2 2021-01-01 00:10:00-08:00 2021-01-01 00:10:00-08:00 2021-01-01 00:15:00-08:00 21827.0
3 2021-01-01 00:15:00-08:00 2021-01-01 00:15:00-08:00 2021-01-01 00:20:00-08:00 21757.0
4 2021-01-01 00:20:00-08:00 2021-01-01 00:20:00-08:00 2021-01-01 00:25:00-08:00 21664.0
... ... ... ... ...
8923 2021-01-31 23:35:00-08:00 2021-01-31 23:35:00-08:00 2021-01-31 23:40:00-08:00 20054.0
8924 2021-01-31 23:40:00-08:00 2021-01-31 23:40:00-08:00 2021-01-31 23:45:00-08:00 19952.0
8925 2021-01-31 23:45:00-08:00 2021-01-31 23:45:00-08:00 2021-01-31 23:50:00-08:00 19859.0
8926 2021-01-31 23:50:00-08:00 2021-01-31 23:50:00-08:00 2021-01-31 23:55:00-08:00 19763.0
8927 2021-01-31 23:55:00-08:00 2021-01-31 23:55:00-08:00 2021-02-01 00:00:00-08:00 19650.0

8928 rows × 4 columns

We can now see there is data for all of January 2021

import plotly.express as px

fig = px.line(caiso_load, x="Time", y="Load", title="CAISO Load - Jan '21")
fig