Learn R Programming

YTAnalytics: R Wrapper for YouTube Analytics API

Overview

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:

  • Video/Playlist/Channel Statistics
  • Daily/Monthly Views
  • Location Data (Country/City)
  • Demographics (Age/Gender)
  • Devices
  • Traffic Sources
  • Sharing Services

Details

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.

Installation

The most up-do-date version can be found on Github:

# install.packages("devtools")
devtools::install_github("davisj95/YTAnalytics")

Authentication

In order to use the YouTube APIs, you need do the following:

  1. Create a Project in your Google Developers Console.
  2. Enable the YouTube Data and YouTube Analytics APIs in the developer library.
  3. Create an OAuth consent screen.
  4. Create OAuth authorization credentials.

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.

How To Use

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:

Channel

# 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

Playlist

myPlaylist <- YOURPLAYLISTID

playlist_daily_views(playlistId = myPlaylist)

playlist_live_onDemand(playlistId = myPlaylist)

Video

myVideo <- YOURVIDEOID

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)

All Functions Currently Available

  • Authentication
    • youtube_oauth()
  • Get Daily/Monthly Views
    • channel_time_period()
    • playlist_time_period()
    • video_time_period()
  • Get Live vs. On Demand Views
    • channel_live_onDemand()
    • playlist_live_onDemand()
    • video_live_onDemand()
  • Get Playback Location
    • channel_playback_location()
    • playlist_playback_location()
    • video_playback_location()
  • Get Overall Stats
    • channel_stats()
    • playlist_stats()
    • video_stats()
  • Get Countries
    • channel_countries()
    • playlist_countries()
    • video_countries()
  • Get Cities
    • channel_cities()
    • playlist_cities()
    • video_cities()
  • Get Demographics (Age & Gender)
    • channel_demographics()
    • playlist_demographics()
    • video_demographics()
  • Get Devices
    • channel_devices()
    • playlist_devices()
    • video_devices()
  • Get Traffic Sources
    • channel_traffic_sources()
    • playlist_traffic_sources()
    • video_traffic_sources()
  • Get Traffic Details
    • channel_traffic_details()
    • playlist_traffic_details()
    • video_traffic_details()
  • Get Top Sharing Services
    • channel_top_sharing_services()
    • playlist_top_sharing_services()
    • video_top_sharing_services()
  • Get Subscription Status
    • channel_subscription_status()
    • playlist_subscription_status()
    • video_subscription_status()
  • Get Top Videos
    • channel_top_videos()
    • playlist_top_videos()
  • Get List of Videos
    • channel_videos()
    • playlist_videos()
  • Get Audience Retention Ratios
    • video_audience_retention()
  • Get Metadata (Title, Description, etc)
    • playlist_metadata()
    • video_metadata()
  • Wrapper for Analytics/Data APIS
    • analytics_request()
    • data_channel_request()
    • data_playlist_request()
    • data_playlistItem_request()
    • data_video_request()

Copy Link

Version

Install

install.packages('YTAnalytics')

Monthly Downloads

210

Version

0.2.1

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Jake Davis

Last Published

March 16th, 2025

Functions in YTAnalytics (0.2.1)

data_playlist_request

Playlist Data Requests - YouTube Data API
data_video_request

Video Data Requests - YouTube Data API
channel_traffic_sources

Channel Traffic Sources Data
playlist_countries

Playlist Country Data
channel_traffic_details

Channel Traffic Sources Data
playlist_demographics

Playlist Demographic Data
playlist_top_videos

Playlist Top Videos
video_countries

Video Country Data
playlist_traffic_details

Playlist Traffic Sources Data
video_demographics

Video Demographic Data
video_cities

Video City Data
video_audience_retention

Video Audience Retention
video_subscription_status

Video Subscription Status
channel_subscription_status

Channel Subscription Status
playlist_subscription_status

Playlist Subscription Status
playlist_traffic_sources

Playlist Traffic Sources Data
channel_time_period

Channel Time Period Views
playlist_stats

Playlist Statistics
playlist_videos

Playlist Videos List
playlist_devices

Playlist Device Data
video_time_period

Video Time Period Views
video_sharing_services

Video Sharing Services Data
channel_videos

Channel Videos List
playlist_metadata

Playlist Metadata
data_playlistItem_request

Playlist Item Data Requests - YouTube Data API
playlist_live_onDemand

Playlist Live & OnDemand Data
video_playback_location

Video Playback Location
video_metadata

Video Metadata
youtube_oauth

YouTube API OAuth
playlist_playback_location

Playlist Playback Location
video_traffic_sources

Video Traffic Sources Data
video_live_onDemand

Video Live & OnDemand Data
video_devices

Video Device Data
video_traffic_details

Video Traffic Details Data
video_stats

Video Statistics
channel_demographics

Channel Demographic Data
channel_cities

Channel City Data
channel_countries

Channel Country Data
analytics_request

Analytics Request Function - YouTube Analytics API
channel_playlists

Channel Playlists
channel_playback_location

Channel Playback Location
channel_stats

Channel Statistics
channel_sharing_services

Channel Sharing Services Data
channel_devices

Channel Device Data
channel_live_onDemand

Channel Live & OnDemand Data
channel_top_videos

Channel Top Videos
data_channel_request

Channel Data Requests - YouTube Data API