El problema
La API de datos oficial de YouTube tiene límites de cuota estrictos que hacen que la extracción masiva de comentarios no sea práctica para investigación o monitoreo. La eliminación de comentarios viola directamente los ToS, se interrumpe cuando cambia el DOM y se bloquea mediante la detección de bots. Las herramientas de terceros cuestan $50 al mes para funciones básicas de exportación o generan datos no estructurados que requieren una limpieza manual. Los investigadores, los equipos de marca y los community managers necesitan datos de comentarios en un formato tabular limpio, pero cada camino para llegar allí es frágil, costoso o ambas cosas.
La solucion de Scavio
El punto final de búsqueda de YouTube de Scavio devuelve datos de comentarios estructurados junto con metadatos de vídeo. Busca la URL de un video o un tema, obtiene comentarios con autor, marca de tiempo, recuento de me gusta y responde hilos en JSON normalizado. A partir de ahí, escribir en CSV son cinco líneas de código. Sin raspado, sin gimnasia de cuotas, sin análisis DOM. La misma llamada API que encuentra videos puede extraer sus datos de participación, brindándole un proceso de investigación completo en una sola integración.
Antes
Antes de Scavio, exportar comentarios de YouTube significaba agotar la cuota oficial de API en minutos, ejecutar frágiles scripts de Selenium o pagar $50 al mes por una herramienta de exportación de un solo propósito.
Después
Después de Scavio, un script de Python extrae datos de comentarios estructurados para cualquier vídeo y escribe CSV limpio en segundos. No hay límites de cuota que administrar, ni automatización del navegador que mantener.
Para quien es
Investigadores de YouTube, administradores de comunidades de marca y creadores de contenido que necesitan datos de comentarios masivos en formato CSV sin administrar cuotas de API ni ejecutar infraestructura de raspado.
Beneficios clave
- Datos de comentarios estructurados con autor, marca de tiempo y recuento de me gusta
- No hay cuota de API de datos de YouTube para administrar o solicitar aumentos
- La salida JSON limpia se convierte a CSV en cinco líneas de código
- Hilos de respuesta incluidos con relaciones padre-hijo
- Funciona para cualquier vídeo público sin complejidad de autenticación.
Ejemplo en Python
import requests
import csv
from pathlib import Path
API_KEY = "your_scavio_api_key"
def fetch_video_comments(video_query: str) -> list[dict]:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "youtube", "query": video_query},
timeout=15,
)
res.raise_for_status()
data = res.json()
comments = []
for video in data.get("organic", []):
for comment in video.get("comments", []):
comments.append({
"video_title": video.get("title", ""),
"author": comment.get("author", ""),
"text": comment.get("text", ""),
"likes": comment.get("likes", 0),
"published": comment.get("published", ""),
})
return comments
comments = fetch_video_comments("react server components tutorial")
if comments:
output = Path("comments_export.csv")
with output.open("w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=comments[0].keys())
writer.writeheader()
writer.writerows(comments)
print(f"Exported {len(comments)} comments to {output}")Ejemplo en JavaScript
const API_KEY = "your_scavio_api_key";
async function fetchVideoComments(videoQuery) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "youtube", query: videoQuery }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
const comments = [];
for (const video of data.organic ?? []) {
for (const comment of video.comments ?? []) {
comments.push({
videoTitle: video.title ?? "",
author: comment.author ?? "",
text: comment.text ?? "",
likes: comment.likes ?? 0,
published: comment.published ?? "",
});
}
}
return comments;
}
const comments = await fetchVideoComments("react server components tutorial");
if (comments.length) {
const header = Object.keys(comments[0]).join(",");
const rows = comments.map((c) => Object.values(c).map((v) => `"${String(v).replace(/"/g, '""')}"`).join(","));
const fs = await import("fs/promises");
await fs.writeFile("comments_export.csv", [header, ...rows].join("\n"));
console.log(`Exported ${comments.length} comments`);
}Plataformas utilizadas
YouTube
Búsqueda de videos con transcripciones y metadatos