Introduction

This RMD connects to NYTimes’ Most Popular API, reads in JSON data, and transforms it into a R Dataframe.

Most Popular API

Provides services for getting the most popular articles on NYTimes.com based on emails, shares, or views.

Setup

library(jsonlite)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Use an alternative but a more consistent mapping to rjson and RJSONIO to convert JSON strings to R objects. Turned on the flatten option to automatically flatten nested data frames into a single non-nested data frame. Skipped the step to use flattern function later on.

Top 10 most emailed articles in the past 7 days (published date AND URL)

most_emailed_articles <- fromJSON("https://api.nytimes.com/svc/mostpopular/v2/emailed/7.json?api-key=BLtybA60SxbT2XcgepyXjVVGOQUCn6iR", flatten = TRUE) %>% data.frame()

# str(most_emailed_articles)
# dim(most_emailed_articles)



most_emailed_articles %>% select (results.published_date, results.url) %>% head(10)
##    results.published_date
## 1              2020-03-21
## 2              2020-03-20
## 3              2020-03-22
## 4              2020-03-22
## 5              2020-03-24
## 6              2020-03-26
## 7              2020-03-26
## 8              2020-03-27
## 9              2020-03-20
## 10             2020-03-22
##                                                                               results.url
## 1       https://www.nytimes.com/2020/03/21/opinion/scott-kelly-coronavirus-isolation.html
## 2  https://www.nytimes.com/2020/03/20/opinion/coronavirus-pandemic-social-distancing.html
## 3                     https://www.nytimes.com/2020/03/22/opinion/coronavirus-economy.html
## 4              https://www.nytimes.com/2020/03/22/health/coronavirus-restrictions-us.html
## 5                     https://www.nytimes.com/2020/03/24/magazine/coronavirus-family.html
## 6     https://www.nytimes.com/article/coronavirus-stimulus-package-questions-answers.html
## 7          https://www.nytimes.com/2020/03/26/nyregion/coronavirus-brooklyn-hospital.html
## 8          https://www.nytimes.com/2020/03/27/opinion/coronavirus-trump-evangelicals.html
## 9             https://www.nytimes.com/2020/03/20/opinion/sunday/coronavirus-outcomes.html
## 10        https://www.nytimes.com/2020/03/22/health/coronavirus-symptoms-smell-taste.html

Top 10 most shared articles on facebook in the past 1 day (published date AND URL)

# Most shared articles on Facebook for the last day

most_shared_articles_fb <- fromJSON("https://api.nytimes.com/svc/mostpopular/v2/shared/1/facebook.json?api-key=BLtybA60SxbT2XcgepyXjVVGOQUCn6iR", flatten = TRUE) %>% data.frame()

# str(most_shared_articles_fb)
# dim(most_shared_articles_fb)

most_shared_articles_fb %>% select (results.published_date, results.url) %>% head(10)
##    results.published_date
## 1              2020-03-28
## 2              2020-03-26
## 3              2020-03-27
## 4              2020-03-28
## 5              2020-03-29
## 6              2020-03-27
## 7              2020-03-27
## 8              2020-03-27
## 9              2020-03-28
## 10             2020-03-26
##                                                                                     results.url
## 1  https://www.nytimes.com/2020/03/28/technology/coronavirus-fauci-trump-conspiracy-target.html
## 2           https://www.nytimes.com/article/coronavirus-stimulus-package-questions-answers.html
## 3                https://www.nytimes.com/2020/03/27/sunday-review/coronavirus-hospitalized.html
## 4    https://www.nytimes.com/2020/03/28/parenting/nyc-coronavirus-hospitals-visitors-labor.html
## 5    https://www.nytimes.com/2020/03/29/us/politics/coronavirus-liberty-university-falwell.html
## 6                https://www.nytimes.com/2020/03/27/opinion/coronavirus-trump-evangelicals.html
## 7                      https://www.nytimes.com/2020/03/27/health/us-coronavirus-face-masks.html
## 8                https://www.nytimes.com/2020/03/27/us/trump-signing-statement-coronavirus.html
## 9                       https://www.nytimes.com/2020/03/28/world/europe/sweden-coronavirus.html
## 10                         https://www.nytimes.com/2020/03/26/health/usa-coronavirus-cases.html

Top 10 most viewed articles in the past 30 days (published date AND URL)

most_viewed_articles <- fromJSON("https://api.nytimes.com/svc/mostpopular/v2/viewed/30.json?api-key=BLtybA60SxbT2XcgepyXjVVGOQUCn6iR", flatten = TRUE) %>% data.frame()

# str(most_viewed_articles)
# dim(most_viewed_articles)

most_viewed_articles %>% select (results.published_date, results.url) %>% head(10)
##    results.published_date
## 1              2020-03-14
## 2              2020-03-18
## 3              2020-03-26
## 4              2020-03-26
## 5              2020-03-11
## 6              2020-03-22
## 7              2020-02-29
## 8              2020-03-13
## 9              2020-03-18
## 10             2020-03-21
##                                                                                   results.url
## 1  https://www.nytimes.com/2020/03/14/technology/coronavirus-purell-wipes-amazon-sellers.html
## 2              https://www.nytimes.com/2020/03/18/nyregion/new-jersey-family-coronavirus.html
## 3                        https://www.nytimes.com/2020/03/26/health/usa-coronavirus-cases.html
## 4         https://www.nytimes.com/article/coronavirus-stimulus-package-questions-answers.html
## 5                              https://www.nytimes.com/2020/03/11/world/coronavirus-news.html
## 6             https://www.nytimes.com/2020/03/22/health/coronavirus-symptoms-smell-taste.html
## 7                   https://www.nytimes.com/2020/02/29/health/coronavirus-n95-face-masks.html
## 8                      https://www.nytimes.com/2020/03/13/us/coronavirus-deaths-estimate.html
## 9                              https://www.nytimes.com/2020/03/18/world/coronavirus-news.html
## 10      https://www.nytimes.com/2020/03/21/world/europe/italy-coronavirus-center-lessons.html

Final Remarks

Figured out that this API only takes 3 different periods of time, namely, 1, 7, 30 days in the past.