dojogeorge
dojogeorge

Reputation: 1704

Youtube Data Api stopping after 1000 results

I have been trying to retrieve a list of all my subscribers for my youtube channel. I am using a query of the format:

https://content.googleapis.com/youtube/v3/subscriptions?mySubscribers=true&maxResults=50&part=subscriberSnippet&access_token=xxxx

However, after 1000 results (for example, 20 pages @ 50 per page, or 50 pages @ 20 per page) it stops. Within the documentation it say for myRecentSubscribers it should only retrieve 1000, but for mySubscribers there is no limit. Is there some unwritten limit?

Upvotes: 6

Views: 397

Answers (1)

Sid Palas
Sid Palas

Reputation: 11

I just ran into the same issue w/ the following code:

import os

import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors

scopes = ["https://www.googleapis.com/auth/youtube.readonly"]

def main():
    # Disable OAuthlib's HTTPS verification when running locally.
    # *DO NOT* leave this option enabled in production.
    os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"

    api_service_name = "youtube"
    api_version = "v3"
    client_secrets_file = "google_oauth_client_secret.json"

    # Get credentials and create an API client
    flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
        client_secrets_file, scopes)
    credentials = flow.run_console()
    youtube = googleapiclient.discovery.build(
        api_service_name, api_version, credentials=credentials)

    next_page_token = ''
    count = 0
    
    while next_page_token != None:
        print("Getting next page:", next_page_token, count)

        request = youtube.subscriptions().list(
            part="subscriberSnippet",
            maxResults=50,
            mySubscribers=True,
            pageToken=next_page_token
        )
        response = request.execute()
        next_page_token = response.get('nextPageToken')

        subscribers = response.get('items')
        for subscriber in subscribers:
            count += 1

    print('Total subscribers:', count)

if __name__ == "__main__":
    main()

This is the expected behavior if myRecentSubscribers=True but the list should continue with mySubscribers=True...

EDIT: Apparently this is a WONT FIX issue, and the documentation will likely eventually be updated to reflect.(https://issuetracker.google.com/issues/172325507)

Upvotes: 1

Related Questions