Skip to content
scrapeatlas.Dashboard

List a video's comments

Try in Playground

Read one page (20) of a video's top-level comments through the public comments continuation: text, author (name, channel ID, verified and creator flags, avatar, channel URL), relative publish time with its computed timestamp, like and reply counts, and a repliesContinuationToken for the replies operation. order=top (default) or newest; pass continuationToken for further pages.

GET/v1/youtube/video/commentsx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
5
urlstringrequiredquery

YouTube video or Short URL (youtube.com/watch?v=…, youtu.be/…, /shorts/…, /embed/…, /live/…; www, m and music subdomains) or a bare 11-character video ID.

max 2048 chars

Examplehttps://www.youtube.com/watch?v=Vid0000001a
continuationTokenstringquery

Continuation token from a previous comments response. Response: Token for the next comments page or null.

orderenumquery

top (default, ranked by engagement) or newest (newest first after a pinned comment); repeat it with continuationToken.

one of: top, newest

Exampletop
sincenumber | stringquery

Earliest publication time to include, ISO 8601 or Unix seconds.

untilnumber | stringquery

Publication time to stop before, ISO 8601 or Unix seconds; later than since.

Response fields
36
requestIdstring

Operation identifier for correlation.

Upstream HTTP attempts, decoded bytes and duration.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data was returned; inspect status and coverage.

statusenum

success, partial (coverage.warnings names the omission), failed or challenged.

one of: success, partial

Comments in YouTube's order: id, content, publishedTimeText, publishedTime (a best-effort estimate computed from the relative text, such as "3 weeks ago", at retrieval time; null when the text has no relative time), replyLevel (0), author {name with @, channelId, isVerified, isCreator, avatarUrl, channelUrl}, engagement {likes parsed from the displayed count, replies from the reply button}, repliesContinuationToken when the comment has replies and pinned (true on the pinned comment).

up to 100 items

comments.idstring

Always included.

min 1 chars

comments.contentstring

Always included.

comments.publishedTimeTextstringnullable

Always included.

comments.publishedTimestringnullable

Always included.

comments.replyLevelinteger

Always included.

≥ 0

Always included.

comments.author.namestringnullable

Always included.

comments.author.channelIdstringnullable

Always included.

comments.author.isVerifiedboolean

Always included.

comments.author.isCreatorboolean

Always included.

comments.author.avatarUrlstringnullable

Always included.

comments.author.channelUrlstringnullable

Always included.

Always included.

comments.engagement.likesintegernullable

Always included.

≥ 0

comments.engagement.repliesintegernullable

Always included.

≥ 0

comments.repliesContinuationTokenstringoptional

Optional.

comments.pinnedbooleanoptional

Optional.

continuationTokenstringnullable

Continuation token from a previous comments response. Response: Token for the next comments page or null.

sourceUrlstring

Public YouTube URL the operation represents (page or API route).

absolute HTTPS URL

fetchedAtstring

UTC retrieval timestamp.

source is public_api; order: ranked (top) or newest_first (newest). since/until filter each page; with order=newest pages end once older than since. Relative times ("3 weeks ago") make window edges approximate.

coverage.sourceenum

Always included.

one of: public_page, public_api

coverage.completeboolean

Always included.

coverage.warningsenum[]

Always included.

up to 8 items

coverage.orderenumoptional

Optional.

one of: newest_first, oldest_first, ranked, relevance, source_order

Optional.

coverage.window.sincestringoptional

Optional.

coverage.window.untilstringoptional

Optional.

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
13
HTTPfailure.codeMeaning
400invalid_requestMissing, malformed, duplicate or conflicting parameters, unsupported parameters or an unsafe URL.
400invalid_continuationYouTube rejected the supplied continuation token.
401unauthorizedMissing or invalid worker API key.
403restricted_pageThe channel, video, playlist or post is terminated, private, members-only or otherwise unavailable.
403age_restrictedThe video is age restricted and cannot be read logged out.
404not_foundYouTube reports no channel, video, playlist or post for the identifier.
429upstream_rate_limitedYouTube rate limited the request; no automatic retry.
502upstream_challengedYouTube rejected or challenged the request.
502unsupported_pageThe response lacks the embedded data, the data is malformed, or the resolved identity does not match the request.
502response_too_large payload_too_complexThe response exceeded byte, depth or node limits.
502unsafe_redirect request_limit upstream_errorThe bounded request could not complete.
503busyAll worker slots and the waiting queue are occupied.
504timeoutThe total retrieval deadline expired.