Author: Vinicius Santos
Date: 2026-04-08

# senatebR: coletando dados do Senado Federal brasileiro

#### Vinicius Santos

#### 2026-04-08

## Introdução

No debate sobre governo aberto, a disponibilidade de dados é vista como basilar para o funcionamento transparente e eficaz de qualquer democracia. No caso do Senado brasileiro, esses dados não apenas fornecem insights sobre o processo legislativo, mas também permitem a análise das políticas públicas e do comportamento dos legisladores.

O pacote senatebR foi criado com o propósito de simplificar a interação com as APIs e a obtenção de dados por meio de web scraping do Senado Federal / Congresso Nacional. O objetivo central é disponibilizar à comunidade acadêmica uma ferramenta que permita o acesso eficiente a dados legislativos.

    library(senatebR)

## Escopo e propósito

O senatebR abrange cinco dimensões principais de dados:

1. Projetos e Matérias — projetos de lei, propostas legislativas e matérias em tramitação, com título, autor, status e histórico.
2. Parlamentares — perfis de senadores, biografias, filiações partidárias e histórico legislativo.
3. Composição — distribuição partidária, unidades federativas, duração de mandatos e dados demográficos.
4. Comissões — funções, membros, agendas e atividades das comissões.
5. Plenário — pautas de votação, transcrições de debates, vetos, medidas provisórias e decisões.

## Exemplos de uso

### 1. Senadores por Legislatura

A função `obter_dados_senadores_legislatura()` recebe como argumentos a legislatura inicial e final do intervalo desejado.

    df_senadores <- obter_dados_senadores_legislatura(47, 56)
    dplyr::glimpse(df_senadores)

### 2. Medidas Provisórias

O pacote oferece duas funções para MPs: em tramitação e encerradas.

    # MPs em tramitação
    mpv_tramitacao <- coletar_medidas_provisorias_em_tramitacao()
    dplyr::glimpse(mpv_tramitacao)

    # MPs encerradas (todas as páginas)
    mpv_encerradas <- coletar_medidas_provisorias_encerradas(364)
    dplyr::glimpse(mpv_encerradas)

### 3. Vetos

    dados_vetos <- info_vetos(pages = 20)
    dplyr::glimpse(dados_vetos)

## Estudo de Caso: Pronunciamentos dos Parlamentares

### Coleta de dados

Coletando os senadores da 56ª legislatura e, em seguida, seus pronunciamentos entre 2020 e 2024:

    df_56 <- obter_dados_senadores_legislatura(56, 56)

    codigos <- df_56$IdentificacaoParlamentar.CodigoParlamentar

    dados_multi <- extrair_pronunciamentos_multi(
      codigos_parlamentares = codigos,
      anos = c(2020:2024)
    )

### Transformação dos dados

Separando partido e UF em colunas distintas:

    dados_multi <- dados_multi |>
      tidyr::separate(Partido_UF, into = c("Partido", "UF"), sep = "/")

### Análise temporal

    library(ggplot2)

    pronunciamentos_por_ano <- dplyr::count(dados_multi, Ano)

    ggplot(pronunciamentos_por_ano, aes(x = factor(Ano), y = n, fill = factor(Ano))) +
      geom_bar(stat = "identity", show.legend = FALSE) +
      geom_text(aes(label = n), vjust = -0.5, size = 3) +
      scale_fill_brewer(palette = "Set3") +
      theme_minimal() +
      labs(
        title = "Distribuição de Pronunciamentos por Ano",
        x = "Ano",
        y = "Número de Pronunciamentos"
      )

### Distribuição por tipo de pronunciamento

    tipos <- dplyr::count(dados_multi, Tipo_Pronunciamento) |>
      dplyr::arrange(n)

    ggplot(tipos, aes(x = reorder(Tipo_Pronunciamento, n), y = n)) +
      geom_bar(stat = "identity", fill = "skyblue") +
      coord_flip() +
      theme_minimal() +
      labs(
        title = "Frequência de Tipos de Pronunciamento",
        x = "Tipo",
        y = "Número de Pronunciamentos"
      )

## Referências

- Wickham, H., Çetinkaya-Rundel, M., & Grolemund, G. (2023). R for Data Science (2nd ed.). O’Reilly.
- Meireles, F., Silva, D., & Costa, E. (2016). congressbr: An R Package for Analysing Data from Brazil’s Chamber of Deputies and Federal Senate.
- Gherghina, S., & Katsanidou, A. (2013). Data Availability in Political Science Journals. European Political Science, 12(3), 333–349.