Author: Marcelo Perlin
Date: 2026-02-02

# Getting Started

#### Marcelo Perlin

#### 2026-02-02

## Motivation

The Central Bank of Brazil (BCB) offers access to its SGS system (sistema gerenciador de series temporais) with a official API available here.

Package GetBCBData offers a R interface to the API and many other advantages:

- A caching system with package `memoise` to speed up repeated requests of data;
- User can utilize all cores of the machine (parallel computing) when fetching a large batch of time series;
- Error handling internally. Even if requested series does not exist, the function will still return all results.

## A simple example

Let’s have a look at the interest rate in Brazil. After searching for the ids in the SGS system, we find that the daily SELIC rate is 432.

Now, lets download the data with `GetBCBData`:

    library(GetBCBData)
    library(dplyr)
    library(ggplot2)

    my.id <- c(selic = 432)

    df.bcb <- gbcbd_get_series(id = my.id ,
                           first.date = '2000-01-01',
                           last.date = Sys.Date(),
                           format.data = 'long',
                           use.memoise = TRUE,
                           cache.path = tempdir(), # use tempdir for cache folder
                           do.parallel = FALSE)

    glimpse(df.bcb)

    ## Rows: 9,530
    ## Columns: 4
    ## $ ref.date    <date> 2000-01-01, 2000-01-02, 2000-01-03, 2000-01-04, 2000-01-0…
    ## $ value       <dbl> 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19…
    ## $ id.num      <dbl> 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432…
    ## $ series.name <chr> "selic", "selic", "selic", "selic", "selic", "selic", "sel…

    p <- ggplot(df.bcb, aes(x = ref.date, y = value/100) ) +
      geom_line() +
      labs(title = 'Selic Rate',
           subtitle = paste0(min(df.bcb$ref.date), ' to ', max(df.bcb$ref.date)),
           x = '', y = 'Interest Rate') +
      theme_light()

    print(p)