4

We got to build our own reporting database for our Youtube channel to measure the channel and video performance.

To support this, we implemented an ETL job to extract using Youtube Analytics API and used below python code to get the data.

def GetAnalyticsData(extractDate,accessToken, channelId):
    channelId = 'channel%3D%3D{0}'.format(channelId)
    headers = {'Authorization': 'Bearer {}'.format(accessToken),
               'accept': 'application/json'}
    url = 'https://youtubeanalytics.googleapis.com/v2/reports?dimensions={dimensions}&endDate={enddate}&ids={ids}&maxResults={maxresults}&metrics={metrics}&startDate={startdate}&alt={alt}&sort={sort}'.format(
        dimensions='video',
        ids=channelId,
        enddate= extractDate,
        startdate=extractDate,
        metrics = 'views%2Ccomments%2Clikes%2Cdislikes%2Cshares%2CestimatedMinutesWatched%2CsubscribersGained%2CsubscribersLost%2CannotationClicks%2CannotationClickThroughRate%2CaverageViewDuration%2CaverageViewPercentage%2CannotationCloseRate%2CannotationImpressions%2CannotationClickableImpressions%2CannotationClosableImpressions%2CannotationCloses',
        maxresults = 200,
        alt ='json',
        sort='-views' 
    )
    return requests.get(url,headers=headers)

We hit this API everyday and get all the video metric and sorted by views in descending order.

This solved our need partially and it returns only 200 videos, if we specify maxResults more than 200, its return 400 error code.

The challenge is, how to get all videos for the given date and given channel?

Thanks in advance. Regards, Guna

Benjamin Loison
  • 3,782
  • 4
  • 16
  • 33
Guna M
  • 41
  • 2

1 Answers1

0

I am not keen on YouTube analytics API, but it seems that you are looking for startIndex.

startIndex

integer

The 1-based index of the first entity to retrieve. (The default value is 1.) Use this parameter as a pagination mechanism along with the max-results parameter.

Benjamin Loison
  • 3,782
  • 4
  • 16
  • 33