YouTube Video Comment Reply
curl --request POST \
--url https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"comment_id": "comment_id",
"page_size": 100,
"next_page_token": null
}
'import requests
url = "https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply"
payload = {
"comment_id": "comment_id",
"page_size": 100,
"next_page_token": None
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({comment_id: 'comment_id', page_size: 100, next_page_token: null})
};
fetch('https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'comment_id' => 'comment_id',
'page_size' => 100,
'next_page_token' => null
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply"
payload := strings.NewReader("{\n \"comment_id\": \"comment_id\",\n \"page_size\": 100,\n \"next_page_token\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"comment_id\": \"comment_id\",\n \"page_size\": 100,\n \"next_page_token\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"comment_id\": \"comment_id\",\n \"page_size\": 100,\n \"next_page_token\": null\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "reply_id_1",
"text": "Reply content",
"published_at": "2024-01-01T00:00:00Z",
"like_count": 5,
"author": {
"id": "user_id",
"name": "username",
"channel_url": "https://..."
}
},
{
"id": "reply_id_2",
"text": "Another reply",
"published_at": "2024-01-02T00:00:00Z",
"like_count": 3,
"author": {
"id": "user_id_2",
"name": "username2",
"channel_url": "https://..."
}
}
],
"next_page_token": "CAoQAA",
"page_info": {
"total_results": 50,
"results_per_page": 100
}
}
YouTube
YouTube Video Comment Reply
Get the reply list for YouTube video comments.
POST
/
youtube
/
video
/
comment
/
reply
YouTube Video Comment Reply
curl --request POST \
--url https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"comment_id": "comment_id",
"page_size": 100,
"next_page_token": null
}
'import requests
url = "https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply"
payload = {
"comment_id": "comment_id",
"page_size": 100,
"next_page_token": None
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({comment_id: 'comment_id', page_size: 100, next_page_token: null})
};
fetch('https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'comment_id' => 'comment_id',
'page_size' => 100,
'next_page_token' => null
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply"
payload := strings.NewReader("{\n \"comment_id\": \"comment_id\",\n \"page_size\": 100,\n \"next_page_token\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"comment_id\": \"comment_id\",\n \"page_size\": 100,\n \"next_page_token\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"comment_id\": \"comment_id\",\n \"page_size\": 100,\n \"next_page_token\": null\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "reply_id_1",
"text": "Reply content",
"published_at": "2024-01-01T00:00:00Z",
"like_count": 5,
"author": {
"id": "user_id",
"name": "username",
"channel_url": "https://..."
}
},
{
"id": "reply_id_2",
"text": "Another reply",
"published_at": "2024-01-02T00:00:00Z",
"like_count": 3,
"author": {
"id": "user_id_2",
"name": "username2",
"channel_url": "https://..."
}
}
],
"next_page_token": "CAoQAA",
"page_info": {
"total_results": 50,
"results_per_page": 100
}
}
Product: Visual Intelligence — Social Media Scraping
Use case: Fetch video metadata, transcripts, captions, and comments from YouTube, Instagram, TikTok, and Twitter/X
Host:
https://mavi-backend.memories.ai/serve/api/v2
Auth: Authorization: sk-mavi-... (no Bearer prefix)Channel routing guide: see Social Media Scraping Overview. Endpoints with a
channel request field let you choose apify, rapid, or memories.ai; endpoints without this field use managed routing.Each API call costs $0.01 USD.
Channel Options
If your request supports achannel option, use it to control how scraper data is sourced:
| Channel | What it means | Typical trade-off |
|---|---|---|
apify | Uses Apify, a dedicated web scraping platform with broad content coverage. | Most stable and most complete results, but usually more expensive. |
rapid | Uses RapidAPI, a lower-cost aggregation platform. | Lower cost, but less stable and often narrower coverage. |
memories.ai | Managed routing by Memories.ai. | Automatically selects the best price/performance path for your request. |
Recommendation: Start with
memories.ai unless you need to force a specific provider.- The maximum value for pagination parameter
page_sizeis 100 next_page_tokenshould be null for the first request, use thenext_page_tokenreturned from the previous response for subsequent requests- When
next_page_tokenin the response isnull, it indicates all replies have been retrieved
Code Example
import requests
BASE_URL = "https://mavi-backend.memories.ai/serve/api/v2"
API_KEY = "sk-mavi-..."
HEADERS = {
"Authorization": f"{API_KEY}",
"Content-Type": "application/json"
}
def youtube_video_comment_reply(comment_id: str):
url = f"{BASE_URL}/youtube/video/comment/reply"
page_size = 100
next_page_token = None
all_replies = []
while True:
data = {"comment_id": comment_id, "page_size": page_size, "next_page_token": next_page_token}
resp = requests.post(url, json=data, headers=HEADERS).json()
replies = resp.get("items", [])
all_replies.extend(replies)
next_page_token = resp.get("next_page_token")
if not next_page_token:
break
return all_replies
# Usage example
replies = youtube_video_comment_reply("comment_id")
print(replies)
const axios = require('axios');
const BASE_URL = 'https://mavi-backend.memories.ai/serve/api/v2';
const API_KEY = 'sk-mavi-...';
const headers = {
'Authorization': API_KEY,
'Content-Type': 'application/json'
};
async function youtubeVideoCommentReply(commentId) {
const response = await axios.post(
`${BASE_URL}/youtube/video/comment/reply`,
{ comment_id: commentId, page_size: 100, next_page_token: null },
{ headers }
);
return response.data;
}
// Usage example
youtubeVideoCommentReply('comment_id')
.then(result => console.log(result));
curl -X POST "https://mavi-backend.memories.ai/serve/api/v2/youtube/video/comment/reply" \
-H "Authorization: sk-mavi-..." \
-H "Content-Type: application/json" \
-d '{
"comment_id": "comment_id",
"page_size": 100,
"next_page_token": null
}'
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| comment_id | string | Yes | Comment ID (obtained from the YouTube Video Comment response) |
| page_size | number | No | Number of replies returned per page, maximum value is 100, default is 100 |
| next_page_token | string | null | No | Next page token, should be null for the first request, use the value returned from the previous response for subsequent requests |
Response
Returns an object containing the reply list and pagination information.{
"items": [
{
"id": "reply_id_1",
"text": "Reply content",
"published_at": "2024-01-01T00:00:00Z",
"like_count": 5,
"author": {
"id": "user_id",
"name": "username",
"channel_url": "https://..."
}
},
{
"id": "reply_id_2",
"text": "Another reply",
"published_at": "2024-01-02T00:00:00Z",
"like_count": 3,
"author": {
"id": "user_id_2",
"name": "username2",
"channel_url": "https://..."
}
}
],
"next_page_token": "CAoQAA",
"page_info": {
"total_results": 50,
"results_per_page": 100
}
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| items | array[object] | Reply list array |
| items[].id | string | Reply ID |
| items[].text | string | Reply content |
| items[].published_at | string | Reply published time (ISO 8601 format) |
| items[].like_count | number | Like count |
| items[].author | object | Reply author information |
| items[].author.id | string | Author ID |
| items[].author.name | string | Author username |
| items[].author.channel_url | string | Author channel URL |
| next_page_token | string | null | Next page token, used to get the next page of data, null indicates all data has been retrieved |
| page_info | object | Pagination information |
| page_info.total_results | number | Total number of replies |
| page_info.results_per_page | number | Number of results per page |
Authorizations
Body
application/json
Comment ID
Example:
"comment_id"
Number of replies returned per page, maximum value is 100, default is 100
Required range:
x <= 100Example:
100
Next page token, should be null for the first request, use the value returned from the previous response for subsequent requests
Example:
null
⌘I
