Prerequisite: YouTube API
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 videos
- Handle videos like retrieve information about a video, insert a video, delete a video etc.
- Handle Subscriptions like lists all the subscriptions, insert or delete a subscription etc.
In this article, we will discuss How to Extract YouTube Comments and reply using Google YouTube API in Python.
Understand step by step implementation:-
- Retrieve YouTube Video Results
- Here we will use commentThreads, list, execute method, it will give the list of comment and replies
- Inside list method, pass snippet and replies in part property and in videoId property pass video id of video URL
Python3
youtube = build( 'youtube' , 'v3' ,
developerKey = "Enter API Key" )
video_response = youtube.commentThreads(). list (
part = 'snippet,replies' ,
videoId = "Enter Video ID"
).execute()
|
- Iterate through each Video Response and fetch comments and replies
- The data comes in dictionary format, each comment data has reply count number, if reply count number is zero means no reply on that comment
- if count is greater than zero then we are iterating each reply and get text.
- nextPageToken contain the next data, here we are checking if nextPageToken has no value it means value is None, loop end, else loop will continue.
Below is the full implementation:
Python3
from googleapiclient.discovery import build
api_key = 'API KEY'
def video_comments(video_id):
replies = []
youtube = build( 'youtube' , 'v3' ,
developerKey = api_key)
video_response = youtube.commentThreads(). list (
part = 'snippet,replies' ,
videoId = video_id
).execute()
while video_response:
for item in video_response[ 'items' ]:
comment = item[ 'snippet' ][ 'topLevelComment' ][ 'snippet' ][ 'textDisplay' ]
replycount = item[ 'snippet' ][ 'totalReplyCount' ]
if replycount> 0 :
for reply in item[ 'replies' ][ 'comments' ]:
reply = reply[ 'snippet' ][ 'textDisplay' ]
replies.append(reply)
print (comment, replies, end = '\n\n' )
replies = []
if 'nextPageToken' in video_response:
video_response = youtube.commentThreads(). list (
part = 'snippet,replies' ,
videoId = video_id,
pageToken = video_response[ 'nextPageToken' ]
).execute()
else :
break
video_id = "Enter Video ID"
video_comments(video_id)
|
Output:

Let’s verify the results:

3 Comments and 2 Replies