Video comments

GET/api/v1/comments/:videoId

Read one page of public comments using your API key. Each nonempty page costs 1 credit from the same balance as transcripts, including continuation and reply pages. You do not need to fetch a transcript first. Errors and empty pages are not charged, but at least 1 credit must be available before the request runs.

Request

Pass an 11-character video ID. Optional sort is top (default) or newest. To page forward or open replies, pass an opaque continuation token from the previous response; it carries the ordering and thread context.

bash
curl -H "Authorization: Bearer yvt_live_..." \
  "https://api.youtubevideotranscript.io/api/v1/comments/dQw4w9WgXcQ?sort=top"

Response

The response contains video_id, nullable title, nullable total_comments, a comments array, and continuation (null when there is no next page). Title and total may be null on later pages. Top-level pages usually contain about 20 comments; page size is set by YouTube and reply pages can be smaller.

Each comment includes comment_id, text,likes, reply_count, published, author information, a YouTube url, and a nullable reply_continuation. Likes and publication times are display text, not exact numeric counts or timestamps. Replies include is_reply and parent_comment_id.

Comment fields

NameTypeDescription
comment_id, text, author, urlstringComment identifier, body, author display name, and direct YouTube comment link.
likes, publishedstring | nullYouTube's display text, not an exact count or timestamp.
reply_countnumberReported reply count for the comment; replies are fetched separately.
is_replybooleanTrue on reply rows.
parent_comment_idstring | nullTop-level parent for a reply, null for a top-level comment.
author_channel_idstring | nullAuthor's channel identifier when available.
author_is_creator, author_is_verifiedbooleanCreator and verification markers returned by the parser.
is_pinned, is_heartedbooleanPinned and creator-heart markers returned by the parser.
reply_continuationstring | nullToken for fetching this comment's replies; absent from saved bulk samples.

Pagination and billing

Send the response's continuation as the next request's continuation parameter for more comments. Send a comment's reply_continuation instead to open its replies. URL-encode tokens when building the query string. Each nonempty response costs another credit, even when requesting a page you fetched before. GET requests do not have idempotency protection.

bash
# Use the page continuation for more top-level comments,
# or a comment's reply_continuation for its replies.
curl --get -H "Authorization: Bearer yvt_live_..." \
  --data-urlencode "continuation=OPAQUE_TOKEN" \
  "https://api.youtubevideotranscript.io/api/v1/comments/dQw4w9WgXcQ"

Keep each reply walk separate from the top-level walk. The returned continuation advances whichever walk you requested; a null token ends that walk. Tokens contain the original video and ordering. To switch from Top to Newest, start without a token; sort does not change an existing continuation. There is no amount or all parameter on this endpoint. Your client chooses how many pages to fetch.

Insufficient credits return 402 insufficient_quota. Disabled comments return 404 not_found without a charge. Malformed IDs, sort values, or tokens return 400 bad_request. If you also want the transcript, call the transcript endpoint separately for 1 credit. MCP offers include_comments on its transcript tool for a combined cost of 2 credits when both succeed.

Saved samples and background collections

Transcript bulk jobs can include one Top page per successful transcript. Read those saved samples with GET /jobs/:id/videos?include=comments or download the ZIP; neither operation spends another credit.

For an amount per video, all available comments, optional replies, and a job-wide budget, use the website comments collector. There is no public API or MCP tool to create that standalone job yet. Once created, it appears in API job history and can be exported through GET /jobs/:id/export as JSON and CSV in one ZIP. Its comment rows are not returned by include=comments on the per-video endpoint; that flag reads transcript-job samples only.

See Quotas & credits for the full billing rules and GET /usage to check your balance without spending a credit.

We use Google Analytics cookies and note which site referred you, so we know how people find us. Nothing personal, nothing sold. See our Privacy Policy.