Skip to contents

RESIOS

To retrieve data you need to ask for it via email. You can find the official help page for the API with many examples.

Once you get the token I recommend to save it in your .Renviron file (if you only will use R to retrieve data)

get_token()
ea <- esios_archives()
head(ea)
#>                               name  id horizon archive_type
#> 1            REE_BalancingEnerBids 181      QM          csv
#> 2    Resultado_Subasta_Mensual_POR 159       M          xls
#> 3      Resultado_Subasta_Anual_POR 160       A          xls
#> 4 Resultado_Subasta_Trimestral_POR 161       T          xls
#> 5      Espec_Subasta_Trimestral_EP 149       T          pdf
#> 6      Espec_Subasta_Trimestral_PE 150       T          pdf
#>                      download.name
#> 1            REE_BalancingEnerBids
#> 2    Resultado_Subasta_Mensual_POR
#> 3      Resultado_Subasta_Anual_POR
#> 4 Resultado_Subasta_Trimestral_POR
#> 5      Espec_Subasta_Trimestral_EP
#> 6      Espec_Subasta_Trimestral_PE
#>                                                                          download.url
#> 1 https://esios /archives/181/download?date=2023-09-25T23%3A59%3A59T%2B0200&locale=es
#> 2 https://esios /archives/159/download?date=2023-09-25T23%3A59%3A59T%2B0200&locale=es
#> 3 https://esios /archives/160/download?date=2023-09-25T23%3A59%3A59T%2B0200&locale=es
#> 4 https://esios /archives/161/download?date=2023-09-25T23%3A59%3A59T%2B0200&locale=es
#> 5 https://esios /archives/149/download?date=2023-09-25T23%3A59%3A59T%2B0200&locale=es
#> 6 https://esios /archives/150/download?date=2023-09-25T23%3A59%3A59T%2B0200&locale=es
#>                  date date_time1 date_time2 publication_date
#> 1 2023-09-25 23:59:59       <NA>       <NA>       2023-09-25
#> 2 2023-09-25 23:59:59       <NA>       <NA>       2023-08-24
#> 3 2023-09-25 23:59:59       <NA>       <NA>       2022-12-15
#> 4 2023-09-25 23:59:59       <NA>       <NA>       2023-06-08
#> 5 2023-09-25 23:59:59       <NA>       <NA>       2023-06-06
#> 6 2023-09-25 23:59:59       <NA>       <NA>       2023-06-06
#>                                                                   taxonomy_terms
#> 1 156, 165, 178, Mercados y precios, Descargas, Regulación Terciaria, 20, 21, 22
#> 2  156, 165, 182, Mercados y precios, Descargas, Subastas explícitas, 20, 21, 22
#> 3  156, 165, 182, Mercados y precios, Descargas, Subastas explícitas, 20, 21, 22
#> 4  156, 165, 182, Mercados y precios, Descargas, Subastas explícitas, 20, 21, 22
#> 5  156, 165, 182, Mercados y precios, Descargas, Subastas explícitas, 20, 21, 22
#> 6  156, 165, 182, Mercados y precios, Descargas, Subastas explícitas, 20, 21, 22

Besides the archives you can get daily data from the more than 1900 indicators available:

ei_df <- esios_search_indicators()
#> Waiting 5s to retry ■■■■■■                          
#> Waiting 5s to retry ■■■■■■■■■■■■                    
#> Waiting 5s to retry ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■  
#> Waiting 5s to retry ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 
dim(ei_df)
#> [1] 1908    5
head(ei_df)
#>                                                                  name
#> 1                            Generación programada PBF Hidráulica UGH
#> 2                         Generación programada PBF Hidráulica no UGH
#> 3                        Generación programada PBF Turbinación bombeo
#> 4                                   Generación programada PBF Nuclear
#> 5      Generación programada PBF Hulla antracita Anexo II RD 134/2010
#> 6 Generación programada PBF Hulla sub-bituminosa Anexo II RD 134/2010
#>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                description
#> 1                            <p>Es el programa de energía diario, con desglose horario, de las diferentes Unidades de Programación correspondientes a ventas y adquisiciones de energía en el sistema eléctrico peninsular español. En concreto este indicador se refiere a las unidades de programación con tipo de producción hidráulica UGH.</p><p>Este programa es establecido por el OS a partir de la casación del OM y de las nominaciones de programas de todas y cada una de las Unidades de Programación que le han sido comunicadas por los sujetos titulares de dichas Unidades de Programación, incluyendo las correspondientes a la ejecución de contratos bilaterales con entrega física de los cuales se ha confirmado la ejecución.</p><p><b>Publicación:</b> diariamente a partir de las 13:45 horas con la información del día D+1.</p>
#> 2                         <p>Es el programa de energía diario, con desglose horario, de las diferentes Unidades de Programación correspondientes a ventas y adquisiciones de energía en el sistema eléctrico peninsular español. En concreto este indicador se refiere a las unidades de programación con tipo de producción hidráulica no UGH.</p><p>Este programa es establecido por el OS a partir de la casación del OM y de las nominaciones de programas de todas y cada una de las Unidades de Programación que le han sido comunicadas por los sujetos titulares de dichas Unidades de Programación, incluyendo las correspondientes a la ejecución de contratos bilaterales con entrega física de los cuales se ha confirmado la ejecución.</p><p><b>Publicación:</b> diariamente a partir de las 13:45 horas con la información del día D+1.</p>
#> 3                        <p>Es el programa de energía diario, con desglose horario, de las diferentes Unidades de Programación correspondientes a ventas y adquisiciones de energía en el sistema eléctrico peninsular español. En concreto este indicador se refiere a las unidades de programación con tipo de producción turbinación bombeo.</p><p>Este programa es establecido por el OS a partir de la casación del OM y de las nominaciones de programas de todas y cada una de las Unidades de Programación que le han sido comunicadas por los sujetos titulares de dichas Unidades de Programación, incluyendo las correspondientes a la ejecución de contratos bilaterales con entrega física de los cuales se ha confirmado la ejecución.</p><p><b>Publicación:</b> diariamente a partir de las 13:45 horas con la información del día D+1.</p>
#> 4                                   <p>Es el programa de energía diario, con desglose horario, de las diferentes Unidades de Programación correspondientes a ventas y adquisiciones de energía en el sistema eléctrico peninsular español. En concreto este indicador se refiere a las unidades de programación con tipo de producción nuclear.</p><p>Este programa es establecido por el OS a partir de la casación del OM y de las nominaciones de programas de todas y cada una de las Unidades de Programación que le han sido comunicadas por los sujetos titulares de dichas Unidades de Programación, incluyendo las correspondientes a la ejecución de contratos bilaterales con entrega física de los cuales se ha confirmado la ejecución.</p><p><b>Publicación:</b> diariamente a partir de las 13:45 horas con la información del día D+1.</p>
#> 5      <p>Es el programa de energía diario, con desglose horario, de las diferentes Unidades de Programación correspondientes a ventas y adquisiciones de energía en el sistema eléctrico peninsular español. En concreto este indicador se refiere a las unidades de programación con tipo de producción Hulla antracita Anexo II RD 134/2010.</p><p>Este programa es establecido por el OS a partir de la casación del OM y de las nominaciones de programas de todas y cada una de las Unidades de Programación que le han sido comunicadas por los sujetos titulares de dichas Unidades de Programación, incluyendo las correspondientes a la ejecución de contratos bilaterales con entrega física de los cuales se ha confirmado la ejecución.</p><p><b>Publicación:</b> diariamente a partir de las 13:45 horas con la información del día D+1.</p>
#> 6 <p>Es el programa de energía diario, con desglose horario, de las diferentes Unidades de Programación correspondientes a ventas y adquisiciones de energía en el sistema eléctrico peninsular español. En concreto este indicador se refiere a las unidades de programación con tipo de producción Hulla sub-bituminosa Anexo II RD 134/2010.</p><p>Este programa es establecido por el OS a partir de la casación del OM y de las nominaciones de programas de todas y cada una de las Unidades de Programación que le han sido comunicadas por los sujetos titulares de dichas Unidades de Programación, incluyendo las correspondientes a la ejecución de contratos bilaterales con entrega física de los cuales se ha confirmado la ejecución.</p><p><b>Publicación:</b> diariamente a partir de las 13:45 horas con la información del día D+1.</p>
#>                         short_name id renew
#> 1                   Hidráulica UGH  1 13:45
#> 2                Hidráulica no UGH  2 13:45
#> 3               Turbinación bombeo  3 13:45
#> 4                          Nuclear  4 13:45
#> 5      Hulla antracita RD 134/2010  5 13:45
#> 6 Hulla sub-bituminosa RD 134/2010  6 13:45

Some of them are really interesting, like the price per MWh

ei <- esios_pvpc()
#> Waiting 6s to retry ■■■■■■■■■■■■■                   
#> Waiting 6s to retry ■■■■■■■■■■■■■■■■■■■■■■■■■■■■    
#> Waiting 6s to retry ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 
library("ggplot2")
ggplot(ei) +
  geom_path(aes(tz_time, value, col = geo_name, linetype = geo_name)) +
  theme_minimal() +
  labs(y = "€/MWh", x = "Hour", title = "Price per time", 
       col = "Region", linetype = "Region") +
  scale_y_continuous(sec.axis = sec_axis(trans = function(x){x/1000}, name = "€/KWh", 
                                         labels = scales::label_number(accuracy = 0.01, suffix = "€"))) +
  scale_x_datetime(date_breaks = "4 hours", date_labels = "%H") +
  theme(legend.position = "bottom", legend.direction = "horizontal")

REE

You can also query the Red Electrica Española which have also very interesting data.

rc0 <- ree_call(widget = "demanda-tiempo-real", category = "demanda")
#> Last updated: 2023-09-25 00:00:00
plot(rc0$`Demanda real`$datetime, rc0$`Demanda real`$value, type = "l", pch = 2,
     main = "Electricity demand in peninsular Spain", 
     xlab = "Time", ylab = "Value (?)")
lines(rc0$`Demanda programada`$datetime, rc0$`Demanda programada`$value, 
      type = "l", col = "blue", lty = 2)
lines(rc0$`Demanda prevista`$datetime, rc0$`Demanda prevista`$value, 
      type = "l", col = "red", lty = 3)
abline(h = Sys.time(), col = "black")
legend("topleft", legend = c("real", "foreseen", "programmed"), 
       fill = c("black", "red", "blue"))