National Income and Product Accounts - NIPA

Data - BEA

Last observation: Q4 2024 (N = 26) · 2024 (N = 26)

First observation: 1929 (N = 26) · Q1 1947 (N = 26)

Last data update: 25 juil. 2026, 12:36

Last compile: 05 sept. 2026, 22:43

List of Main Tables

Code
paste0("https://apps.bea.gov/api/data/?&",
       "UserID=", bea_key, "&",
       "method=GetParameterValues&",
       "datasetname=NIPA&",
       "ParameterName=TableName&") |>
  fromJSON() |>
  pluck("BEAAPI", "Results", "ParamValue") |>
  select(TableName, Description) |>
  mutate(N = 1:n()) %>%
  filter(TableName %in% (list.files(pattern = "\\.qmd$") %>% gsub(".qmd$", "", .))) |>
  # Data-file date: each T<name>.qmd page reads T<name>_{A,Q,M}.parquet
  # (annual / quarterly / monthly, written by _download_one_NIPA.R) and/or a
  # plain T<name>.parquet. The old code looked at a non-existent
  # T<name>.RData, so every Download cell rendered as "NA". Take the newest
  # of whichever of those files exist; blank if the table has no data file.
  mutate(Download = suppressWarnings(do.call(pmax, c(
           lapply(c(".parquet", "_A.parquet", "_Q.parquet", "_M.parquet"), function(sfx)
             as.Date(file.info(paste0("~/iCloud/website/data/bea/", TableName, sfx))$mtime)),
           na.rm = TRUE)))) |>
  mutate(Download = ifelse(is.na(Download), "",
           paste0('<a target=_blank href=https://apps.bea.gov/iTable/iTable.cfm?reqid=19&step=3&isuri=1&nipa_table_list=', N, '&categories=survey>', Download, '</a>'))) |>
  mutate(Compile = as.Date(file.info(paste0("~/iCloud/website/data/bea/", TableName, ".html"))$mtime)) |>
  mutate(Compile = ifelse(is.na(Compile), "",
           paste0('<a target=_blank href=', TableName, '.html>', Compile, '</a>'))) |>
  select(-N) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

List of Other Tables

Code
paste0("https://apps.bea.gov/api/data/?&",
       "UserID=", bea_key, "&",
       "method=GetParameterValues&",
       "datasetname=NIPA&",
       "ParameterName=TableName&") |>
  fromJSON() |>
  pluck("BEAAPI", "Results", "ParamValue") |>
  select(TableName, Description) |>
  mutate(N = 1:n()) %>%
  filter(!(TableName %in% (list.files(pattern = "\\.qmd$") %>% gsub(".qmd$", "", .)))) |>
  mutate(bea = paste0('<a  target=_blank href=https://apps.bea.gov/iTable/iTable.cfm?reqid=19&step=3&isuri=1&nipa_table_list=', N, '&categories=survey > bea </a>')) |>
  select(-N) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

List of Parameters

Code
paste0("https://apps.bea.gov/api/data/?&",
       "UserID=", bea_key, "&",
       "method=GetParameterList&",
       "DataSetName=NIPA&") |>
  fromJSON() |>
  pluck("BEAAPI", "Results", "Parameter") |> 
  select(ParameterName, ParameterDataType, ParameterDescription) %>%
  {if (is_html_output()) print_table(.) else .}
ParameterName ParameterDataType ParameterDescription
Frequency string A - Annual, Q-Quarterly, M-Monthly
ShowMillions string A flag indicating that million-dollar data should be returned.
TableID integer The standard NIPA table identifier
TableName string The new NIPA table identifier
Year integer List of year(s) of data to retrieve (X for All)

Real GDP

All

Code
ig_d("bea", "T10106", "us-log-real-gdp-nipa-Q")
Source Dataset Updated PNG PDF
bea T10106 25 juil. 2026 png pdf

2005-

Code
ig_d("bea", "T10106", "us-log-real-gdp-nipa-Q-2005")
Source Dataset Updated PNG PDF
bea T10106 25 juil. 2026 png pdf

Net Exports

All

Code
ig_d("bea", "T10105", "us-net-exports")
Source Dataset Updated PNG PDF
bea T10105 25 juil. 2026 png pdf