Youtube Data API Subscription | Set-1
Last Updated :
30 Sep, 2022
In this article, we will be discussing about the Youtube Subscriptions. How API can be used to retrieve and manipulate these subscriptions.
There are three operations that we will be discussing:
- List all the subscriptions associated with a Youtube channel
- Insert a new subscription
- Delete a subscription.
All these methods will be requiring user's authorization, so we will be first discussing how to get a OAuth Credential.
Follow the steps below to generate a Client Id and a Secret Key.
- Go to Google Google Developers Console and Click on Sign In in the upper rightmost corner of the page. Sign In using the credentials of the valid Google Account. If you don’t have a google account, setup a account first and then use the details to Sign In on the Google Developers Homepage.
- Now navigate to the Developer Dashboard and create a new Project.
- Click on Enable API option.
- In the search field, search for Youtube Data API and select the Youtube Data API option that comes in the drop down list.
- You will be redirected to a screen that says information about the Youtube Data API, along with two options : ENABLE and TRY API.
- Click on ENABLE option to get started with the API.
- In the sidebar under APIs & Services, select Credentials.
- At the top of the page, select the OAuth consent screen tab. Select an Email address, enter a Product name if not already set, and click the Save button.
- In the Credentials tab, select the Create credentials drop-down list, and choose OAuth Client Id. OAuth is generally used where authorization is required like in the case of retrieving liked videos of a user.
- Select the application type Other, enter the name "YouTube Data API Myvideos", and click the Create button.
- Click OK.
- Click on Download button to the right of the client Id to download the JSON file.
- Save and rename the file as client_secret.json and move it to the working directory.
Install additional libraries using the
pip command:
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
Note: Let's discuss how to find the channel Id to use it as a parameter in the first code - to lists all subscriptions associated with a Youtube Channel Id.
Follow the steps below to find the channel Id:
- Sign in to your Youtube Account.
- In the top left corner, CLick on three lines icon and go to Settings.

- Now in the same menu in the left hand side it will show option of Advance Settings.

- You will see your Channel Id under Account Information.
Code to list subscriptions: Here are three ways to accomplish this task. We will be discussing these in detail.
- List Subscriptions associated with a channel Id
- List subscriptions of one's own account
- Check whether a desired subscription exist or not
Code to list all subscriptions associated with a Channel Id: This example shows how channel Id can be used as a parameter to retrieve all subscriptions for that particular Youtube Channel.
Python3 1==
import os
import google.oauth2.credentials
import google_auth_oauthlib.flow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google_auth_oauthlib.flow import InstalledAppFlow
# The CLIENT_SECRETS_FILE variable specifies
# the name of a file that contains
# client_id and client_secret.
CLIENT_SECRETS_FILE = "client_secret.json"
# This scope allows for full read/write access
# to the authenticated user's account and
# requires requests to use an SSL connection.
SCOPES = ['https://www.googleapis.com/auth/youtube.force-ssl']
API_SERVICE_NAME = 'youtube'
API_VERSION = 'v3'
def get_authenticated_service():
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)
credentials = flow.run_console()
return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)
def print_response(response):
print(response)
# Build a resource based on a list of properties
# given as key-value pairs. Leave properties with
# empty values out of the inserted resource.
def build_resource(properties):
resource = {}
for p in properties:
# Given a key like "snippet.title", split into
# "snippet" and "title", where "snippet" will be
# an object and "title" will be a property in that object.
prop_array = p.split('.')
ref = resource
for pa in range(0, len(prop_array)):
is_array = False
key = prop_array[pa]
# For properties that have array values, convert a name like
# "snippet.tags[]" to snippet.tags, and set a flag to handle
# the value as an array.
if key[-2:] == '[]':
key = key[0:len(key)-2:]
is_array = True
if pa == (len(prop_array) - 1):
# Leave properties without values
# out of inserted resource.
if properties[p]:
if is_array:
ref[key] = properties[p].split(', ')
else:
ref[key] = properties[p]
elif key not in ref:
# For example, the property is "snippet.title",
# but the resource does not yet have a "snippet" object.
# Create the snippet object here.
# Setting "ref = ref[key]" means that in the next time
# through the "for pa in range ..." loop, we will be
# setting a property in the resource's "snippet" object.
ref[key] = {}
ref = ref[key]
else:
# For example, the property is "snippet.description",
# and the resource already has a "snippet" object.
ref = ref[key]
return resource
# Remove keyword arguments that are not set
def remove_empty_kwargs(**kwargs):
good_kwargs = {}
if kwargs is not None:
for key, value in kwargs.items():
if value:
good_kwargs[key] = value
return good_kwargs
def subscriptions_list_by_channel_id(client, **kwargs):
kwargs = remove_empty_kwargs(**kwargs)
response = client.subscriptions().list(**kwargs).execute()
return print_response(response)
if __name__ == '__main__':
# When running locally, disable OAuthlib's HTTPs verification.
# When running in production * do not * leave this option enabled.
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
client = get_authenticated_service()
subscriptions_list_by_channel_id(client,
part ='snippet, contentDetails',
channelId ='UCqoMU8lNdUq63ZmTJFd620w',
maxResults = 3)
Output:
While executing the code you will be asked for the authorization code. For getting the code you need to follow the link mentioned in the command prompt screen above the line: Enter the Authorization code.

Now follow the link and copy paste the authorization code that you will get by granting the permission.

We have set the maxResults parameter to 3 i.e. why the output shows only top three subscriptions name. But you can see from the
totalResults value which is 38, which means there are in total 38 subscriptions in the associated channel.
References: https://developers.google.com/youtube/v3/docs/subscriptions
Similar Reads
Youtube Data API Subscription | Set-3
In the previous articles Youtube Data API Subscription | Set 1, Set 2 we have discussed three methods- To retrieve the list of subscriptions associated with a channel Id To retrieve my subscriptions i.e. associated with authorized user's account To check whether a subscription exist or not. In this
8 min read
Youtube Data API Subscription | Set-2
Prerequisite: Youtube Data API Subscription | Set-1 Now we will be discussing remaining two methods to list subscriptions i.e. to list subscriptions for authorized user's account and to check whether a subscription exists or not. Code to list subscriptions for authorized user's account: This example
6 min read
Youtube Data API | Set-1
Google provides a large set of API's for the developer to choose from. Each and every service provided by Google has an associated API. Being one of them, Youtube Data API is very simple to use provides features like - Search for videosHandle videos like retrieve information about a video, insert a
5 min read
Youtube Data API | Set-2
Prerequisite: Youtube Data API | Set-1 In the previous article we have discussed first two variants of search method. Now let's discuss the remaining three- Search Live Events, Search Related Videos and Search My Videos. Search by Live Events: Given example retrieves top 5 live broadcasts associated
6 min read
Youtube Data API Playlist | Set-1
After covering all types of search and video methods, we will be discussing in this article about Playlist. Everyone must be knowing what playlist is in Youtube. There are two ways to retrieve the playlist using Youtube Data API:Â Retrieve all PlaylistRetrieve My Playlist We will discuss these metho
8 min read
Youtube Data API Playlist | Set-4
In the last article, we discussed how to list the contents of the desired playlist and how to insert a video in a playlist. Now, in this article, we will be discussing how to update a video in the desired playlist and how to delete the video. So starting with the Updating a video, Let's quickly disc
8 min read
Youtube Data API Playlist | Set-3
From the previous article, we have seen that API can be used to insert, update or delete a playlist. Now the question comes that once we have created a playlist, do we have to go to Youtube and manually add the video to the newly created playlist. NO!!! all you have to do is use the OAuth Credential
8 min read
Youtube Data API Playlist | Set-2
We already have discussed first two methods for a Playlist - to list all Playlist associated with a Channel Id, To retrieve my Playlist i.e. playlist of authorized user's account. Now, we will be discussing three more methods: Insert a Playlist, Update a Playlist and Delete a Playlist. This means we
11 min read
Youtube Data API for handling videos | Set-1
Before proceeding further let's have a look at what we have in store for the videos section. Youtube Data API allows to perform following operations on the video: list insert update rate getRating reportAbuse delete Let's discuss how to use Youtube Data API for handling videos. Please follow the ste
4 min read
Youtube Data API for handling videos | Set-4
Prerequisite: Youtube Data API for handling videos | Set-1, Set-2, Set-3 In this article we will discuss two methods related to video: Update a Video, Delete a Video. Updating a video and deleting an uploaded video requires user's authorization, so we will be creating OAuth type of credential for th
7 min read