Skip to contents

Downloads and tidies the HMRC Monthly Property Transactions bulletin, which counts residential and non-residential property transactions (SDLT returns, LBTT in Scotland, LTT in Wales) for England, Scotland, Wales, Northern Ireland, and the UK total. Data runs from April 2005 to the most recent completed month.

Usage

hmrc_property_transactions(
  type = c("all", "residential", "non_residential"),
  nation = NULL,
  start = NULL,
  end = NULL,
  cache = TRUE
)

Arguments

type

Character. One of "all" (default), "residential", or "non_residential".

nation

Character vector or NULL (default = all nations). Valid values: "uk", "england", "scotland", "wales", "northern_ireland".

start

Character "YYYY-MM" or a Date object.

end

Character "YYYY-MM" or a Date object.

cache

Logical. Use cached file if available (default TRUE).

Value

An hmrc_tbl with columns date, nation, type, transactions, and provisional (logical, TRUE for months HMRC flags as provisional).

Examples

# \donttest{
op <- options(hmrc.cache_dir = file.path(tempdir(), "hmrc"))
try({
  mpt <- hmrc_property_transactions(type = "residential", nation = "england",
                                    start = "2025-01")
  head(mpt)
})
#>  Resolving download URL from GOV.UK Content API
#>  Resolving download URL from GOV.UK Content API [481ms]
#> 
#>  Downloading data file
#>  Downloading data file [160ms]
#> 
#>  Parsing data
#>  Parsing data [108ms]
#> 
#> # Monthly UK property transactions
#> # Source: https://www.gov.uk/government/statistics/monthly-property-transactions-completed-in-the-uk-with-value-40000-or-above
#> # Fetched 2026-09-13 19:24:22 UTC | Vintage: latest | Cells: counts | Freq: monthly | 6 rows x 5 cols
#> 
#>         date  nation        type transactions provisional
#> 1 2025-01-01 england residential        70030       FALSE
#> 2 2025-02-01 england residential        79240       FALSE
#> 3 2025-03-01 england residential       149940       FALSE
#> 4 2025-04-01 england residential        44140       FALSE
#> 5 2025-05-01 england residential        66730       FALSE
#> 6 2025-06-01 england residential        80600       FALSE
options(op)
# }