Department of Labor Logo United States Department of Labor
Dot gov

The .gov means it's official.
Federal government websites often end in .gov or .mil. Before sharing sensitive information, make sure you're on a federal government site.

Https

The site is secure.
The https:// ensures that you are connecting to the official website and that any information you provide is encrypted and transmitted securely.

Developer's Site
PRINT:Print

Accessing the Public Data API with R

On This Page:

The following code is compatible with versions 2.0 and 1.0 of the Public Data API.

Installation

library(devtools)
install_github("mikeasilva/blsAPI")

Description

+Package: blsAPI 
+Title: Requests data from the BLS API 
+Version: 0.1 
+Authors@R: "Michael Silva [aut, cre]" 
+Description: Allows users to request data for one or multiple series through 
+    the BLS API.  Users provide parameters as specified in 
+    https://www.bls.gov/developers/api_signature.htm and the function returns a 
+    JSON string. 
+Depends: 
+    R (>= 3.1.1) 
+License: What license is it under? 
+LazyData: true 

Namespace

+# Generated by roxygen2 (4.0.1): do not edit by hand 
+ 
+export(blsAPI)

R/blsAPI-package.r

+#' blsAPI. 
+#' 
+#' @name blsAPI 
+#' @docType package 
+NULL

R/blsAPI.R

+## BLS API.R 
+# 
+#' This function allows users to request data from the BLS API.   
+#' See https://www.bls.gov/developers/ and https://www.bls.gov/developers/api_signature.htm for more details. 
+#' @param data Information to send to the API. 
+#' @keywords bls api economics 
+#' @export 
+#' @examples 
+#' ## These examples are taken from https://www.bls.gov/developers/api_signature.htm 
+#'  
+#' ## Single Series request 
+#' response <- blsAPI('LAUCN040010000000005') 
+#' json <- fromJSON(response) 
+#'  
+#' ## Multiple Series  
+#' payload <- list('seriesid'=c('LAUCN040010000000005','LAUCN040010000000006')) 
+#' response <- blsAPI(payload) 
+#' json <- fromJSON(response) 
+#'  
+#' ## One or More Series, Specifying Years 
+#' payload <- list('seriesid'=c('LAUCN040010000000005','LAUCN040010000000006'), 'startyear'='2010', 'endyear'='2012') 
+#' response <- blsAPI(payload) 
+#' json <- fromJSON(response) 
+ 
+blsAPI <- function(data=NA){ 
+  require(rjson) 
+  require(RCurl) 
+  h = basicTextGatherer() 
+  h$reset() 
+  if(is.na(data)){ 
+    message('blsAPI: No parameters specified.') 
+  } 
+  else{ 
+    ## Parameters specified so make the request 
+    if(is.list(data)){ 
+      ## Multiple Series or One or More Series, Specifying Years request 
+      curlPerform(url='https://api.bls.gov/publicAPI/v1/timeseries/data/', 
+                httpheader=c('Content-Type' = "application/json;"), 
+                postfields=toJSON(data), 
+                verbose = FALSE,  
+                writefunction = h$update 
+      ) 
+    }else{ 
+      ## Single Series request 
+      curlPerform(url=paste0('https://api.bls.gov/publicAPI/v1/timeseries/data/',data), 
+                verbose = FALSE,  
+                writefunction = h$update 
+      ) 
+    } 
+  } 
+  h$value() 
+} No newline at end of file

man/blsAPI.Rd

+% Generated by roxygen2 (4.0.1): do not edit by hand 
+\docType{package} 
+\name{blsAPI} 
+\alias{blsAPI} 
+\alias{blsAPI-package} 
+\title{blsAPI} 
+\usage{ 
+blsAPI(data = NA) 
+} 
+\arguments{ 
+\item{data}{Information to send to the API.} 
+} 
+\description{ 
+This function allows users to request data from the BLS API. 
+See https://www.bls.gov/developers/ and https://www.bls.gov/developers/api_signature.htm for more details. 
+} 
+\examples{ 
+## These examples are taken from https://www.bls.gov/developers/api_signature.htm 
+ 
+## Single Series request 
+response <- blsAPI('LAUCN040010000000005') 
+json <- fromJSON(response) 
+ 
+## Multiple Series 
+payload <- list('seriesid'=c('LAUCN040010000000005','LAUCN040010000000006')) 
+response <- blsAPI(payload) 
+json <- fromJSON(response) 
+ 
+## One or More Series, Specifying Years 
+payload <- list('seriesid'=c('LAUCN040010000000005','LAUCN040010000000006'), 'startyear'='2010', 'endyear'='2012') 
+response <- blsAPI(payload) 
+json <- fromJSON(response) 
+} 
+\keyword{api} 
+\keyword{bls} 
+\keyword{economics}

 

Acknowledgments:

The BLS API Team thanks Michael Silva for contributing the above sample R Script.

 

Last Modified Date: October 16, 2014