YouTube Video Comments API reference
Your first 10 calls are free, no card needed. Pricing and FAQ
Get a free API keycurl "https://api.insightsocial.app/v1/youtube/video/comments?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ" \ -H "x-api-key: $INSIGHTSOCIAL_API_KEY"
Step-by-step: Sentiment analysis
Returns comments on a video, each with the author name, comment text, like count, reply count, and publish timestamp.
Use it for a video's top-level comments, then pass a comment's id as continuationToken to video/comment/replies to open a single thread.
10 credits per call.
Paginates by cursor: see Pagination.
Authorization
apiKey Your key from the dashboard. It starts with isk_.
In: header
Query Parameters
Full URL of the YouTube video to fetch comments for
Order of comments: 'top' (default, YouTube's relevance ranking) or 'newest' (exact newest-first on comment.published_at; each next page continues strictly older with no overlap: the lane for date-window and recency pulls).
Value in
- "top"
- "newest"
Filter comments to those containing this search term.
Text format for comment bodies: 'html' (default) or 'plainText'.
Value in
- "html"
- "plainText"
Comments per page, 1-100. The default page is already 100, so set this only to shrink a page; out-of-range values are rejected with a free 400 rather than degrading the response.
1 <= value <= 100YouTube channel id to fetch channel-level community comments for (instead of a video's comments).
Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.
Value in
- "1"
Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: next_cursor is not returned and pagination.stopped_at is since. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.
Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.
The pagination.next_cursor from the previous page, sent back unchanged. Omit it for the first page.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api.insightsocial.app/v1/youtube/video/comments?url=string"{ "success": true, "platform": "string", "endpoint": "string", "schema_version": "2", "pagination": { "next_cursor": "string", "has_more": true, "page_size": 0, "stopped_at": "since" }, "unavailable": [ "string" ], "credits_used": 0, "credits_remaining": 0, "request_id": "string", "cached": true, "idempotent_replay": true, "charge_reason": "string", "free_call": true, "data": { "items": [ { "comment": { "id": "string", "url": "http://example.com", "parent_id": "string", "post_id": "string", "text": "string", "author": { "id": "string", "username": "string", "display_name": "string", "avatar_url": "http://example.com", "verified": true }, "engagement": { "likes": 0, "replies": 0 }, "flags": { "pinned": true, "deleted": true }, "published_at": "2019-08-24T14:15:22Z", "language": "string", "replies": [ {} ], "ext": { "property1": null, "property2": null } } } ], "total": 0, "truncated": true, "ext": { "property1": null, "property2": null } }}Video › Comment › Replies GET
Returns the replies under one comment, each with the reply text, author details, like count, and publish date.
Video › Files GET
Returns the downloadable video streams for a video, each with a direct media URL, mime type, resolution, quality label, frame rate, bitrate, and duration.