Skip to main content

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)

Source distribution for yt-comment-dl 0.1.0
File Size Uploaded
yt_comment_dl-0.1.0.tar.gz 8.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yt-comment-dl 0.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page