Skip to contents

Retrieves National Income and Product Accounts data from the Bureau of Economic Analysis API. Requires a BEA API key saved in the BEA_API_KEY environment variable.

Usage

get_bea_nipa(
  tables,
  years,
  frequency = c("year", "quarter", "month"),
  underlying = FALSE,
  metadata = FALSE,
  bea_api_key = Sys.getenv("BEA_API_KEY")
)

Arguments

tables

Character vector of NIPA table names (e.g., "T10101", "T20305"). Can be a named vector to add custom names.

years

Numeric vector of years or "ALL" for all available years

frequency

Character string: "year" (annual), "quarter" (quarterly), or "month" (monthly). Can specify multiple as comma-separated string.

underlying

Logical flag to use NIUnderlyingDetail dataset instead of NIPA (default: FALSE)

metadata

Logical flag to return additional metadata columns (default: FALSE)

bea_api_key

BEA API key (defaults to BEA_API_KEY environment variable)

Value

A tibble with columns: table_name, table_description, line_number, line_description, date_frequency, date, value, and date variables (year, quarter, month) appropriate to the frequency of data returned. Annual data includes only year; quarterly data includes year and quarter; monthly data includes year, quarter, and month. If metadata = TRUE, also includes unit_mult, metric_name, cl_unit, series_code, and note_text (list column). If tables is a named vector, includes a "name" column as the first column.

Examples

get_bea_nipa("T10101", years = 2020:2024, frequency = "quarter")
#> # A tibble: 500 × 9
#>    table_name table_description      line_number line_description date_frequency
#>    <chr>      <chr>                        <int> <chr>            <chr>         
#>  1 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#>  2 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#>  3 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#>  4 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#>  5 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#>  6 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#>  7 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#>  8 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#>  9 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#> 10 T10101     Table 1.1.1. Percent …           1 Gross domestic … quarter       
#> # ℹ 490 more rows
#> # ℹ 4 more variables: date <date>, year <int>, quarter <int>, value <dbl>

get_bea_nipa(
  c("gdp" = "T10101", "personal_income" = "T20305"),
  years = 2023:2024,
  frequency = "year"
)
#> # A tibble: 112 × 9
#>    name  table_name table_description               line_number line_description
#>    <chr> <chr>      <chr>                                 <int> <chr>           
#>  1 gdp   T10101     Table 1.1.1. Percent Change Fr…           1 Gross domestic …
#>  2 gdp   T10101     Table 1.1.1. Percent Change Fr…           1 Gross domestic …
#>  3 gdp   T10101     Table 1.1.1. Percent Change Fr…           2 Personal consum…
#>  4 gdp   T10101     Table 1.1.1. Percent Change Fr…           2 Personal consum…
#>  5 gdp   T10101     Table 1.1.1. Percent Change Fr…           3 Goods           
#>  6 gdp   T10101     Table 1.1.1. Percent Change Fr…           3 Goods           
#>  7 gdp   T10101     Table 1.1.1. Percent Change Fr…           4 Durable goods   
#>  8 gdp   T10101     Table 1.1.1. Percent Change Fr…           4 Durable goods   
#>  9 gdp   T10101     Table 1.1.1. Percent Change Fr…           5 Nondurable goods
#> 10 gdp   T10101     Table 1.1.1. Percent Change Fr…           5 Nondurable goods
#> # ℹ 102 more rows
#> # ℹ 4 more variables: date_frequency <chr>, date <date>, year <int>,
#> #   value <dbl>

get_bea_nipa("T10101", years = 2023, frequency = "year", metadata = TRUE)
#> # A tibble: 25 × 15
#>    table_name table_description      line_number line_description date_frequency
#>    <chr>      <chr>                        <int> <chr>            <chr>         
#>  1 T10101     Table 1.1.1. Percent …           1 Gross domestic … year          
#>  2 T10101     Table 1.1.1. Percent …           2 Personal consum… year          
#>  3 T10101     Table 1.1.1. Percent …           3 Goods            year          
#>  4 T10101     Table 1.1.1. Percent …           4 Durable goods    year          
#>  5 T10101     Table 1.1.1. Percent …           5 Nondurable goods year          
#>  6 T10101     Table 1.1.1. Percent …           6 Services         year          
#>  7 T10101     Table 1.1.1. Percent …           7 Gross private d… year          
#>  8 T10101     Table 1.1.1. Percent …           8 Fixed investment year          
#>  9 T10101     Table 1.1.1. Percent …           9 Nonresidential   year          
#> 10 T10101     Table 1.1.1. Percent …          10 Structures       year          
#> # ℹ 15 more rows
#> # ℹ 10 more variables: date <date>, year <int>, quarter <int>, month <int>,
#> #   value <dbl>, unit_mult <int>, metric_name <chr>, cl_unit <chr>,
#> #   series_code <chr>, note_text <list>