YouTube API endpoint
Returns one page of comments for a YouTube video by its 11-character `id`. Each comment has its id, content, author `user_name` and `channel_id`, `likes_count`, `reply_count` and `published_time`. Pass the previous response's `continuation_token` to get the next page; leave it empty for the first.
/youtube/comments/{id}Path parameters:
id: required. YouTube video ID (11-character code).Query parameters:
continuation_token: optional. Pagination token returned by a previous request, first page if empty.Notable response behavior:
continuation_token value to fetch the next page.| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| comment_id | 20 | |
| content | 20 | |
| channel_id | 20 | |
| user_name | 20 | |
| published_time | 20 | 2025-10-13 to 2026-01-16 |
| reply_count | 20 | 0 to 33, median 1 |
| likes_count | 20 | 1 to 1,800, median 94 |
| continuation_token | 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | YouTube video ID (11-character code) | YbJOTdZBX1g | |
| continuation_token | string | No | Pagination token returned by a previous request, first page if empty | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/youtube/comments/YbJOTdZBX1g" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"comments": [
{
"comment_id": "UgzjL_eQm9EVQN5n9Ex4AaABAg",
"content": "This is OpenAI's daily reminder to NOT PUT ADS ON CHATGPT!!!",
"channel_id": "UC1VvgrsdOvQoQvXixTe9Y3Q",
"user_name": "@hudsonsknexproductions",
"published_time": "2025-07-02T17:13:47.01045379Z",
"reply_count": 7
}
],
"continuation_token": "Eg0SC2F0WHlYUDN5WVo0GAYy0AIKpgJnZXRfcmFua2VkX3N0cmVhbXMtLUNxVUJDSUFFRlJlMzBUZ2FtZ0VLbFFFSTJGOFFnQVFZQnlLS0Fac1VKOWstb2JpbmtlTGExaFI3aEhFV..."
}
}Request schema
No body schema
Response schema
#/definitions/youtube.commentsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | youtube.CommentResponse | No | ||||
| data.comments | array | No | Comments on this page of the video. | |||
| data.comments[].channel_id | string | No | YouTube channel ID of the commenter. | |||
| data.comments[].comment_id | string | No | YouTube ID of the comment. | |||
| data.comments[].content | string | No | Text of the comment. | |||
| data.comments[].continuation_token | string | No | Token for loading the replies to this comment. Omitted when none is available. | |||
| data.comments[].likes_count | integer | No | Number of likes on the comment. | |||
| data.comments[].published_time | string | No | Approximate time the comment was posted, in UTC (RFC 3339). | |||
| data.comments[].reply_count | integer | No | Number of replies to the comment. | |||
| data.comments[].user_name | string | No | Display name of the commenter, such as `@handle`. | |||
| data.continuation_token | string | No | Token to pass in the next request to get the following page. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Missing or invalid parameters | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/youtube/comments/YbJOTdZBX1g" \
-H "x-api-key: $CRAWLORA_API_KEY"