The New York Times web site provides a rich set of APIs, as described here: http://developer.nytimes.com/docs You’ll need to start by signing up for an API key. Your task is to choose one of the New York Times APIs, construct an interface in R to read in the JSON data, and transform it to an R dataframe.

I have selected article search API with search query - Brexit as it is very “hot” topic in the UK now.

Loading necessary library

library(jsonlite)

Signing up for an API key

api_key<-"?api-key=ec35a8674ec64bc2b24217d98784448a"

Setting up search criterias

q<-"&q=brexit"
begin_date<-"&begin_date=20180901"
end_date<-"&end_date=20181020"
page<-"&page="

Reading JSON and transforming data to R data frame

df<-data.frame()
 # getting 30 page (10 results per page)
for (i in 1:30){
  # constructing URL from search criterias
    url <- paste0('https://api.nytimes.com/svc/search/v2/articlesearch.json',api_key,q,begin_date,end_date,page,toString(i))
    data<-fromJSON(url,flatten = TRUE)
    # selecting only necessary columns from JSON file
    docs.df <- data$response$docs
    for(k in 1:nrow(docs.df)){
      temp_df <- data.frame(headline=docs.df[k,"headline.main"],source=docs.df[k,"source"],section=docs.df[k,"section_name"],news_description=docs.df[k,"news_desk"],document_type=docs.df[k,"document_type"])
      df <- rbind(df,temp_df)
    }
    Sys.sleep(2)
    print(paste("finished page ",i))
}
## [1] "finished page  1"
## [1] "finished page  2"
## [1] "finished page  3"
## [1] "finished page  4"
## [1] "finished page  5"
## [1] "finished page  6"
## [1] "finished page  7"
## [1] "finished page  8"
## [1] "finished page  9"
## [1] "finished page  10"
## [1] "finished page  11"
## [1] "finished page  12"
## [1] "finished page  13"
## [1] "finished page  14"
## [1] "finished page  15"
## [1] "finished page  16"
## [1] "finished page  17"
## [1] "finished page  18"
## [1] "finished page  19"
## [1] "finished page  20"
## [1] "finished page  21"
## [1] "finished page  22"
## [1] "finished page  23"
## [1] "finished page  24"
## [1] "finished page  25"
## [1] "finished page  26"
## [1] "finished page  27"
## [1] "finished page  28"
## [1] "finished page  29"
## [1] "finished page  30"
head(df)
##                                                       headline  source
## 1            Britain's Labour Will Not Vote for 'Blind Brexit' Reuters
## 2            EU Leaders Prepare Hardball Brexit Summit for May Reuters
## 3            Ireland Insists on Brexit 'Backstop': PM Varadkar Reuters
## 4    The Latest: Austria's Kurz Sees Border as Brexit 'Tactic'      AP
## 5 EU Negotiator Calls for 'Orderly Brexit' With Irish Backstop Reuters
## 6      DUP Brexit Spokesman Says No Deal 'Probably Inevitable' Reuters
##   section news_description document_type
## 1  Europe             None       article
## 2  Europe             None       article
## 3  Europe             None       article
## 4  Europe             None       article
## 5  Europe             None       article
## 6  Europe             None       article