Criar base de dados/série temporal atraves de API FIPE

Estou criando uma base de dados de preços originados da FIPE e fiquei na dúvida sobre como seria mais eficiente criar uma base de dados. Estou rodando o seguinte código (baseado na aula 1 do curso de WS):

library(httr)
library(httr2)

u_base <- "https://brasilapi.com.br/api"
endpoint_preco <- "/fipe/preco/v1/"

carro <- "004530-6"
u_fipe_preco <- paste0(u_base, endpoint_preco, carro)
q_tabela <- list(tabela_referencia = 285)
r_fipe_preco <- GET(u_fipe_preco, query = q_tabela)

preco <- r_fipe_preco |>
  content(simplifyDataFrame = TRUE) |>
  tibble::as_tibble()

É possível fazer múltiplas queries, ou devo fazer uma de cada vez para criar uma base de dados? Por exemplo, há alguma maneira de fazer um request de várias tabela_referencia, ou múltiplos códigos de carros? Ou o caminho seria fazer uma função em que estes parâmetros sejam definidos em uma lista e depois roda-se um apply ou loop (semelhante ao case da sabesp) ?

Olá Henrique,

Respondemos essa dúvida na nossa live lá no Youtube. Segue o código de exemplo para referência:

library(httr)
library(httr2)

u_base <- "https://brasilapi.com.br/api"
endpoint_preco <- "/fipe/preco/v1/"

carro <- "004530-6"
u_fipe_preco <- paste0(u_base, endpoint_preco, carro)
q_tabela <- list(tabela_referencia = 282)
r_fipe_preco <- GET(u_fipe_preco, query = q_tabela)

preco <- r_fipe_preco |>
  content(simplifyDataFrame = TRUE) |>
  tibble::as_tibble()

preco

vetor_de_meses <- 100:280

baixa_um_mes <- function(mes){
  print(mes)
  
  carro <- "004530-6"
  u_fipe_preco <- paste0(u_base, endpoint_preco, carro)
  q_tabela <- list(tabela_referencia = 282)
  r_fipe_preco <- GET(u_fipe_preco, query = q_tabela)
  
  r_fipe_preco |>
    content(simplifyDataFrame = TRUE) |>
    tibble::as_tibble()
}

tictoc::tic()
tabela_com_varios_meses <- purrr::map_dfr(
  vetor_de_meses, baixa_um_mes)
tictoc::toc()

tictoc::tic()
tabela_com_varios_meses <- furrr::future_map_dfr(
  vetor_de_meses, baixa_um_mes)
tictoc::toc()