Las extensiones de navegador exportan los vídeos de un canal de YouTube desde la página que tienes abierta; una API lo hace desde un servidor, de forma programada, sin que tú scrollees. En 2026 hay dos vías de API, y el compromiso es real. La YouTube Data API v3 oficial es gratuita pero te da 10.000 unidades de cuota al día, y search.list cuesta 100 unidades por llamada, así que tienes unas 100 búsquedas al día antes de toparte con el límite de tasa y de rellenar un formulario de aumento de cuota de Google. Una API de datos como Scavio se salta el techo de cuota: search devuelve listas de vídeos y metadata devuelve las stats por vídeo, facturadas por petición. Este tutorial muestra la vía de Scavio y explica exactamente cuándo la API oficial gratuita es la mejor opción.
Requisitos previos
- Python 3.9+ con requests, o Node 18+
- Una clave de API de Scavio (50 créditos gratis)
- Un nombre de canal o un término de búsqueda
Guia paso a paso
Paso 1: Configura tu clave
Los endpoints REST de Scavio usan Authorization: Bearer.
export SCAVIO_API_KEY=sk_your_key_herePaso 2: Busca los vídeos de un canal
Fíjate en el nombre del campo: la búsqueda de YouTube usa search, mientras que Google usa query y Amazon usa query para el ASIN. Cada vídeo vuelve con un video_id.
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
# YouTube search takes the term in "search", not "query"
r = requests.post("https://api.scavio.dev/api/v1/youtube/search",
headers=H, json={"search": "mkbhd"}).json()["data"]
for v in r[:10]:
print(v["video_id"], v["title"], v.get("view_count"))Paso 3: Obtén las stats completas por vídeo
El endpoint metadata toma un video_id y devuelve recuentos de vistas, likes y comentarios. Un crédito por llamada, sin muro de cuota diaria.
meta = requests.post("https://api.scavio.dev/api/v1/youtube/metadata",
headers=H, json={"video_id": "dQw4w9WgXcQ"}).json()["data"]
print(meta["title"], meta["view_count"], meta["like_count"], meta["comment_count"])Paso 4: Decide: Scavio o la API oficial gratuita
Sé honesto con el volumen. Por debajo de ~100 búsquedas al día, la API oficial gratuita es la respuesta más barata y compensa montar OAuth. Por encima, el techo de cuota y el proceso de solicitud de aumento cuestan más tiempo del que ahorran las tarifas de la API.
# Official YouTube Data API v3: free, but
# - 10,000 quota units/day
# - search.list = 100 units -> ~100 searches/day
# - videos.list = 1 unit
# If you do < ~100 searches/day and can manage OAuth + quota, it is free.
# If you need volume, scheduled runs, or no quota paperwork, use Scavio:
# 1 credit/request flat, $0.005 each, no daily ceiling.Ejemplo en Python
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}",
"Content-Type": "application/json"}
# YouTube search takes the term in "search" (not "query")
r = requests.post("https://api.scavio.dev/api/v1/youtube/search",
headers=H, json={"search": "mkbhd channel"})
for v in r.json()["data"][:10]:
print(v["title"], v["channel"], v.get("view_count"), v["video_id"])
# Full stats for one video id
meta = requests.post("https://api.scavio.dev/api/v1/youtube/metadata",
headers=H, json={"video_id": "dQw4w9WgXcQ"}).json()["data"]
print(meta["like_count"], meta["comment_count"])Ejemplo en JavaScript
const H = { Authorization: `Bearer ${process.env.SCAVIO_API_KEY}`,
"Content-Type": "application/json" };
const r = await fetch("https://api.scavio.dev/api/v1/youtube/search", {
method: "POST", headers: H, body: JSON.stringify({ search: "mkbhd channel" })
}).then(r => r.json());
for (const v of r.data.slice(0, 10)) {
console.log(v.title, v.channel, v.view_count, v.video_id);
}Salida esperada
{
"video_id": "dQw4w9WgXcQ",
"title": "Channel Trailer 2026",
"view_count": 1840221,
"like_count": 92044,
"comment_count": 4117
}