How to Extract YouTube Comments in Python using YouTube API?

By | September 27, 2021
How to Extract YouTube Comments in Python using YouTube API?

Extracting information from the web is pretty cool, and it becomes more professional when you use APIs provides by the specific vendor or Application. Youtube is the most popular video-sharing platform, and it is own by the world’s biggest tech giant Google.

Although Extracting data from Youtube can be performed with the help of Web Scaping. But web-scraping is slow and sometimes big web-applications do not promote web scrapping and they also might block your request considering you as a bot.

Luckily Google provides many APIs to the developers, so they can interact with the Google suite applications and extract data.

Here in this Python tutorial, we will be using the Google Youtube API’s and extracting the top 10 comments from the most-watched Youtube video “Luis Fonsi – Despacito ft. Daddy Yankee”.

How to Extract YouTube Comments in Python using YouTube API?

This Python tutorial is divided into 4 parts.

Vamware
  1. Setup Youtube API and get API credentials.
  2. Get the Youtube Video ID.
  3. Install the Required Python Libraries.
  4. Write the Python Program to extract comments from the Youtube video.

If you only wish to see the Python code, you can directly Jump to the 4th step. Else you can read the complete article and know how to set up API, Youtube Video ID, and what Python library you need to Install.

Step 1: Setup Youtube API and Get Credentials

When It’s come to APIs provided by Google you can set a project and enable the API for that specific project and generate credentials like an API key.

Vamware

The first step toward setting the project is, you need to visit the Google API Dashboard, which is provided by Google for the developers.

When you use the Google API Dashboard or Google Developer Console it goes without saying that you should have logged in to the system with a Google or Gmail account.

Click here to visit the Google API Dashboard. And you will see a similar screen.

 

Here You need to click on the Drop Down option Select a project and click on the New PROJECT button to create a new Project.

Now give the name to your project, for this tutorial I have specified my project name “MyFirstYoutubeAPI”. After writing the project name click on the CREATE button. This will create a new project for you, now you need to select the Project from the Select a Project option.

After successfully creating and selecting the project Now you need to search for the YouTube Data API v3.

Now ENABLE the API.

Now the Youtube Data API v3 has been enabled for your project, now you need to create the Credentials, fro that click on the Credentials Option, and click on the +CREATE CREDENTIALS button.

When you click on the CREATE CREDENTIALS button, you will get three options, among those three options You need to click on API KEY.

When you click on the API KEY a window will pop up with the API Key, you need to copy that because we will be using that key in our Python program.

After Successfully copying the API Key on your keyboard click on the close button.

Note: Never share your API key with anyone.

Now we have our API key, so here the Step 1 Complete.

Step 2: Get the Youtube Video ID

Now we need to get the Youtube Video ID, for this tutorial we will be extracting comments from the  “Luis Fonsi – Despacito ft. Daddy Yankee” so we require its video id.

It’s very easy to get the video ID of any video present on Youtube, you can simply get the video ID from its URL.

To get the ID we need to check the video Page URL “https://www.youtube.com/watch?v=kJQP7kiw5Fk

The characters after the v= represent the video Id. So the videoID of ‘” Luis Fonsi – Despacito ft. Daddy Yankee” is “kJQP7kiw5Fk”

Now we also have the video ID of the youtube video which comments we want to extract. Now here our second step ends.

Step 3: Install the Required Python Libraries

Now we need to install the required library which we help us to connect our Python program to connect with youtube and extract data.

Whenever we use any Google API in Python it’s always a good practice to use thegoogle-api-python-clientlibrary instead of requests. The google-api-python-client library is provided by Google itself so the Python developer can interact with Google APIs.

Run the following pip install command on your terminal to install google-api-python-client library.

pip install google-api-python-client

By we are all set, now it’s time to write the Python code. Open your favorite Python IDE and Text editor and start coding with me.

Python Implementation 

Let’s first import the required Library and specify the credentials.

from googleapiclient.discovery import build

#credentials https://console.developers.google.com/

api_key ="AIzaSyDMXwwsjndhdbsnsjgidkmehsVCK9uJkA"
video_id= "kJQP7kiw5Fk"

Now build a Google resource for Youtube API.

#build a resource for youtube
resource = build('youtube', 'v3', developerKey=api_key)

The build()method will build a resource for the youtube API version 3.

Now create a request using the resource object to fetch the comments from the specific Youtube Video.

#create a request to get all the comments on the video
request = resource.commentThreads().list(
                                 part="snippet",
                                 videoId=video_id,
                                 order="orderUnspecified") #top comments.

Here we have used the build object resource  commentThreads()method.

The comment thread method will fetch all the comments on a specific video. By default, all comments will be fetched with the time, but here by specifying the orderparameter to relevance we will fetch the top relevant comments.

now to get the response we need to execute the request. To execute the request we will call the execute()method on the request object.

#execute the request
response =request.execute()

The response is a list of all the comments of the specified video. But in this tutorial we will only be extracting the top 10 comments, so now let’s get only 10 items from the response object.

#get first 10 items for 10 comments 
items = response["items"][:10]

Now we have the top 10 items from the response object now let’s loop through those items and extract every comment text, its publish date, number of likes on the comments, and the comment user.

print("------------------------------------------------------------------------------------------------------")
for item in items:
    item_info = item["snippet"]
    
    #the top level comment can have sub reply comments
    topLevelComment = item_info["topLevelComment"]
    comment_info = topLevelComment["snippet"]
    
    print("Comment By:", comment_info["authorDisplayName"])
    print("Comment Text:" ,comment_info["textDisplay"])
    print("Likes on Comment:", comment_info["likeCount"])
    print("Comment Date: ", comment_info['publishedAt'])
    print("================================\n")

Now put all the code together and execute

#Python program to extract comments from Youtube using Youtube API.

from googleapiclient.discovery import build

#credentials 
api_key ="AIzaSyDMXwwsjndhdbsnsjgidkmehsVCK9uJkA"
video_id= "kJQP7kiw5Fk"

#build a resource for youtube
resource = build('youtube', 'v3', developerKey=api_key)

#create a request to get all the comments on the video
request = resource. commentThreads().list(
                            part="snippet",
                            videoId=video_id,
                            order="orderUnspecified")  #top comments.
#execute the request
response =request.execute()

#get first 10 items for 10 comments 
items = response["items"][:10]

print("------------------------------------------------------------------------------------------------------")
for item in items:
    item_info = item["snippet"]
    
    #the top level comment can have sub reply comments
    topLevelComment = item_info["topLevelComment"]
    comment_info = topLevelComment["snippet"]
    
    print("Comment By:", comment_info["authorDisplayName"])
    print("Coment Text:" ,comment_info["textDisplay"])
    print("Likes on Comment :", comment_info["likeCount"])
    print("Comment Date: ", comment_info['publishedAt'])
    print("================================\n")

Output

------------------------------------------------------------------------------------------------------
Comment By: cruisendude
Comment Text: The first viewer must feel like the king of the world...
Likes on Comment: 86399
Comment Date: 2020-08-21T23:15:01Z
================================

Comment By: Hazzard
Comment Text: Man, you are wonderful channel
Likes on Comment: 509
Comment Date: 2021-01-25T22:32:12Z
================================

Comment By: Mr_Saiiko
Comment Text: me reading the comments be like: ""“Minecraft" "asmr" "pewdiepie" "music" "fortnite" "markiplier" “YouTube is a perfectly balanced game with no exploits.” "Runescape" "World of Warcraft" "Shadowlands" "Dream" "MrBeast" "Warzone" "FaZe Clan" "100 Thieves" "Call of Duty" "Pokemon" "Pokemon cards" "card unboxing" "charizard" "they don't want you to know" "Flat earth" "round earth" "triangle earth" "earth is not earth" "what even is earth if not earth omg government is lying to you" "minecraft" "asmr" "pewdiepie" "music" "fortnite" "markiplier" “YouTube is a perfectly balanced game with no exploits.” "Runescape" "World of Warcraft" "Shadowlands" "Dream" "MrBeast" "Warzone" "FaZe Clan" "100 Thieves" "Call of Duty" "Pokemon" "Halo" "Devil may cry" “YouTube is a perfectly balanced game with no exploits.” “Cocomelon” “t series” “Minecraft" "asmr" "pewdiepie" "music" "fortnite" "markiplier" “YouTube is a perfectly balanced game with no exploits.” "Runescape" "World of Warcraft" "Shadowlands" "Dream" "MrBeast" "Warzone" "FaZe Clan" "100 Thieves" "Call of Duty" "Pokemon" "Pokemon cards" "card unboxing" "charizard" "they don't want you to know" "Flat earth" "round earth" "triangle earth" "earth is not earth" "what even is earth if not earth omg government is lying to you" "minecraft" "asmr" "pewdiepie" "music" "fortnite" "markiplier" “YouTube is a perfectly balanced game with no exploits.” "Runescape" "World of Warcraft" "Shadowlands" "Dream" "MrBeast" "Warzone" "FaZe Clan" "100 Thieves" "Call of Duty" "Pokemon" "Halo" "Devil may cry" “YouTube is a perfectly balanced game with no exploits.” “Cocomelon” “t series”
Likes on Comment: 83
Comment Date: 2021-01-26T18:48:00Z
================================

Comment By: Wade Coleman
Comment Text: I hated when people tried to sing the lyrics and were all like<br />“Despacito”<br />“All I want is a burrrito”
Likes on Comment: 10
Comment Date: 2021-01-27T04:33:03Z
================================

Comment By: Wassxm
Comment Text: Teacher : What is the world’s population<br />Me : Around one despacito
Likes on Comment: 42
Comment Date: 2021-01-25T18:27:03Z
================================

Comment By: Aishath Saila
Comment Text: No-one:<br />Literally no-one:<br />Not even world itself:<br />Me: despacito ndyhwu jwbjabjqbjqbj
Likes on Comment: 330
Comment Date: 2021-01-25T13:31:38Z
================================

Comment By: Fernando Nancabil
Comment Text: Yo buscando un comentario en español 🤡
Likes on Comment: 85
Comment Date: 2021-01-25T19:06:24Z
================================

Comment By: Noah- Brawl Stars
Comment Text: nobody:<br />secretly everyone: Just checks the comments
Likes on Comment: 263
Comment Date: 2021-01-25T20:35:12Z
================================

Comment By: vMuffin IOS
Comment Text: Random Singer: Sings in spanish<br /><br />ALMOST ALL OF THE FUCKING WORLD : interesting
Likes on Comment: 20
Comment Date: 2021-01-26T12:01:44Z
================================

Comment By: Anshu Soren
Comment Text: Who just came to check the views?
Likes on Comment: 343059
Comment Date: 2019-04-27T06:58:42Z
================================

Conclusion

In this Python tutorial, you learned How to Extract YouTube Comments in Python using Google Youtube API and Python google-api-python-clientlibrary. In this Python tutorial, we have only extracted the youtube video comments, but the Youtube API provides many methods that can be used to extract much data from Youtube which might impossible with web-scrapping.

I would recommend you to go through the Amazing documentation provided by Google Youtube on its Youtube API.

People are also reading: 

Author: Vinay

I am a Full Stack Developer with a Bachelor's Degree in Computer Science, who also loves to write technical articles that can help fellow developers.

Leave a Reply

Your email address will not be published. Required fields are marked *