YTAnalytics is an R package designed to simplify data collection using the YouTube Analytics API. You can use this to get channel, playlist, and video data for your YouTube channel - just like what is found in YouTube Studio. Helpful data includes:
YTAnalytics
is built around one main function -
analytics_request()
which acts as the wrapper for the
YouTube Analytics API. youtube_GET
simplifies making
GET
requests using httr::GET
and structuring
the returned data in a data.frame.
data_channel_request()
,
data_playlist_request()
,
data_playlistItem_request()
, and
data_video_request()
are wrappers for the YouTube Data API,
meant only to help in getting some high level data or returning lists of
videos in a channel or playlist. For this purpose, added functionality
is not present. For more YouTube Data API functionality, refer here for the
tuber
package. To learn more about the YouTube Analytics
API or to experiment with their built-in app, check
them out here.
The most up-do-date version can be found on Github:
# install.packages("devtools")
::install_github("davisj95/YTAnalytics") devtools
In order to use the YouTube APIs, you need do the following:
Once you have your client Id and Secret, use them in
youtube_oauth()
like the following:
youtube_oauth(clientId = YOURAPPID, clientSecret = YOURAPPSECRET)
An authentication token is created (by default stored in a file
called .httr-oauth
) and saved in your working
directory.
Once authenticated, there are many functions to choose from.
Functions mostly fall into three categories: channel
,
playlist
, and video
data. Each function leads
with the category name followed by the particular function. For
example:
# To get views, averageViewDuration, estimatedMinutesWatched, shares, likes,
# dislikes, comments, subscribersGained & subscribersLost
# From Jan 1, 2000 - Today
channel_stats()
# For Jan 1, 2020 - Jan 1, 2021
channel_stats(startDate = "2020-01-01", endDate = "2021-01-01")
# To get only views, averageViewDuration and estimatedMinutesWatched for all time
channel_stats(metrics = "views,averageViewDuration,estimatedMinutesWatched"). #Note that there are no spaces between metrics
<- YOURPLAYLISTID
myPlaylist
playlist_daily_views(playlistId = myPlaylist)
playlist_live_onDemand(playlistId = myPlaylist)
<- YOURVIDEOID
myVideo
video_audience_retention(videoId = myVideo)
video_top_countries(videoId = myVideo)
If none of these pre-built functions do quite what you need, you can
always refer back to the analytics_request()
function for
more custom requests.
analytics_request(dimensions = "country",
metrics = "views",
filter = "video==YOURVIDEO",
sort = "-views",
maxResults = 50)
youtube_oauth()
channel_time_period()
playlist_time_period()
video_time_period()
channel_live_onDemand()
playlist_live_onDemand()
video_live_onDemand()
channel_playback_location()
playlist_playback_location()
video_playback_location()
channel_stats()
playlist_stats()
video_stats()
channel_countries()
playlist_countries()
video_countries()
channel_cities()
playlist_cities()
video_cities()
channel_demographics()
playlist_demographics()
video_demographics()
channel_devices()
playlist_devices()
video_devices()
channel_traffic_sources()
playlist_traffic_sources()
video_traffic_sources()
channel_traffic_details()
playlist_traffic_details()
video_traffic_details()
channel_top_sharing_services()
playlist_top_sharing_services()
video_top_sharing_services()
channel_subscription_status()
playlist_subscription_status()
video_subscription_status()
channel_top_videos()
playlist_top_videos()
channel_videos()
playlist_videos()
video_audience_retention()
playlist_metadata()
video_metadata()
analytics_request()
data_channel_request()
data_playlist_request()
data_playlistItem_request()
data_video_request()