yt-comment-dl
Simple script for downloading YouTube comments without using the YouTube API. The output is in JSON format.
This is a maintained fork of egbertbouman/youtube-comment-downloader.
Installation
Preferably inside a python virtual environment install this package via:
pip install yt-comment-dl
Or directly from the GitHub repository:
pip install git+https://github.com/youssefadly237/yt-comment-dl.git
Usage as command-line interface
$ yt-comment-dl --help
usage: yt-comment-dl [-h] [--output OUTPUT] [--pretty] [--limit LIMIT] [--language LANGUAGE] [--sort {0,1}] url
Download YouTube comments without using the YouTube API
positional arguments:
url YouTube video URL or video ID
options:
-h, --help Show this help message and exit
--output OUTPUT, -o OUTPUT Output filename (default: comments_<video_id>.json)
--pretty, -p Pretty-print JSON output
--limit LIMIT, -l LIMIT Maximum number of comments to download
--language LANGUAGE, -a LANGUAGE Language for YouTube generated text (e.g. en)
--sort {0,1}, -s {0,1} Sort by: 0=popular, 1=recent (default: 1)
Examples
Download comments using a YouTube URL:
yt-comment-dl "https://www.youtube.com/watch?v=ScMzIvxBSi4" --output ScMzIvxBSi4.json
Download comments using just the video ID:
yt-comment-dl ScMzIvxBSi4 --output ScMzIvxBSi4.json
Download the 50 most popular comments with pretty formatting:
yt-comment-dl ScMzIvxBSi4 --sort 0 --limit 50 --pretty
For YouTube IDs starting with - (dash), you may need to use quotes:
yt-comment-dl "-idwithdash"
Usage as library
You can also use this script as a library. For instance, if you want to print out the 10 most popular comments for a particular YouTube video you can do the following:
from itertools import islice
from yt_comment_dl import YoutubeCommentDownloader
downloader = YoutubeCommentDownloader()
comments = downloader.get_comments('ScMzIvxBSi4', sort_by=0) # 0 = popular
for comment in islice(comments, 10):
print(comment.to_dict())
Output format
The output is a JSON array containing comment objects. Each comment has the following structure:
[
{
"cid": "comment_id",
"text": "Comment text",
"time": "2 hours ago",
"author": "Author Name",
"channel": "author_channel_id",
"votes": 42,
"photo": "author_profile_photo_url",
"heart": false,
"reply": false,
"time_parsed": 1234567890
}
]
License
MIT License - see LICENSE file for details
Metadata
Release files for yt-comment-dl 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| yt_comment_dl-0.1.0.tar.gz | 8.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| yt_comment_dl-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.9 kB
Release files / yt_comment_dl-0.1.0.tar.gz
| Download URL | yt_comment_dl-0.1.0.tar.gz |
|---|---|
| Size | 8.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b33352b0d0414df22e067ed1b56557b61968eed199d69e878644d8d1a2f7ff6b
|
|
BLAKE2b-256 checksum How to use checksums |
216a754a185800e0b5dff0e6871f718162081ce994c9070eca8fd4328da66c13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.
Transparency logRelease files / yt_comment_dl-0.1.0-py3-none-any.whl
| Download URL | yt_comment_dl-0.1.0-py3-none-any.whl |
|---|---|
| Size | 12.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4383cabfee9bef04c7708b4e91bc239e1f09cc6ca10774eac5c04d4704cf08b6
|
|
BLAKE2b-256 checksum How to use checksums |
79760c1751d624459a1a1023817d5fd9b226a55a80232464c39b3de9cf2e61bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.
Transparency log