A API do YouTube para em 100 buscas por dia. O Web Unlocker devolve cada página de busca que você pedir, com até 20 vídeos em cada, por $0.98 a cada 1.000. Sem chave da API do Google.
1.000 requisições grátis · Pague só se der certo · Mais de 195 países · Pronto para o Claude
As páginas do YouTube levam de 15 a 30 segundos para carregar. Ainda está em andamento, não precisa clicar de novo.
Pronto para suas próprias buscas? Obtenha uma chave de API ou agende uma demo.
Conte um pouco sobre sua equipe e receba:
O Web Unlocker cobra uma página de resultados de busca do YouTube como uma página, com todos os vídeos dela, até 20. Os scrapers de YouTube na Apify e na Bright Data cobram cada um desses vídeos como uma linha separada.
A API para em 100 buscas por dia.
Aqui 1.000 buscas custam $0.98.
Filtre a busca como o YouTube faz, por data de upload ou por visualizações: cada filtro é mais uma página pelo mesmo preço.
Quanto custam 1.000 buscas com 20 vídeos cada
1.000 páginas de busca e 20.000 vídeos, a preços publicados
A SerpApi cobra cada busca. A Bright Data cobra cada vídeo como um registro, $1.50 por 1.000. O scraper de YouTube mais usado na Apify cobra cada vídeo, $2.40 a $4.00 por 1.000.
A YouTube Data API é grátis até as 100 buscas por dia acabarem, e os scrapers de YouTube cobram cada vídeo. Veja o que cada caminho exige para as mesmas 1.000 buscas.
| O que é preciso | YouTube Data API | Apify | SerpApi | |
|---|---|---|---|---|
| Buscas por dia | Sem limite | 100 | Sem limite | Conforme o plano |
| Você paga por | Uma página | Grátis dentro da cota | Cada vídeo | Cada busca |
| 1.000 buscas com 20 vídeos | $0.98 | 10 dias de cota | $48 a $80 | $25 |
| Transcrições de qualquer vídeo | Com o Cloud Browser | Só vídeos próprios | Sim | Não |
| Começar sem um projeto do Google | Sim | Não | Sim | Sim |
| A página inteira em HTML | Sim | Não | Não | Não |
Faz scraping de mais do que o YouTube? O Web Unlocker devolve qualquer página do mesmo jeito, pelo mesmo preço.
A playlist de uploads de um canal lista 100 vídeos na primeira página, e cada página seguinte traz mais 78. O Web Unlocker cobra cada página uma vez: 10 páginas, 802 vídeos, $0.0098.
A Apify cobra $2.40 a $4.00 por 1.000 vídeos.
Aqui 800 custam 1 centavo.
O YouTube guarda todos os vídeos de uma página como JSON dentro do HTML. O Web Unlocker devolve esse HTML, e poucas linhas de código leem os vídeos.
Preencha o formulário acima. A chave chega por e-mail em até um dia útil.
Uma busca pela sua palavra-chave, um vídeo para os números dele, ou os uploads de um canal para todos os vídeos que ele tem.
Cada vídeo da página traz título, visualizações, canal, data e duração.
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python youtube_search.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport json
import os
import time
from urllib.parse import quote_plus
import requests
search = "home espresso"
def scrape(url):
for attempt in range(3):
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
params={"url": url, "geo": "us", "format": "json"},
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
timeout=90,
)
page = response.json().get("data", {}).get("html", "") if response.ok else ""
if '"videoRenderer"' in page:
return page
time.sleep(5)
raise RuntimeError("No videos came back, try again later")
def find(node, key):
if isinstance(node, dict):
for name, value in node.items():
if name == key:
yield value
yield from find(value, key)
elif isinstance(node, list):
for item in node:
yield from find(item, key)
def text(field):
if not field:
return None
return field.get("simpleText") or "".join(run["text"] for run in field.get("runs", []))
page = scrape(f"https://www.youtube.com/results?search_query={quote_plus(search)}")
data = json.loads(page.split("var ytInitialData = ")[1].split(";</script>")[0])
videos = {}
for video in find(data, "videoRenderer"):
videos[video["videoId"]] = {
"title": text(video.get("title")),
"url": f"https://www.youtube.com/watch?v={video['videoId']}",
"channel": text(video.get("ownerText")),
"views": text(video.get("viewCountText")),
"published": text(video.get("publishedTimeText")),
"length": text(video.get("lengthText")),
}
print(json.dumps(list(videos.values()), indent=2, ensure_ascii=False))
print(f"{len(videos)} videos from one search page")GOLOGIN_SCRAPING_API_KEY=your_key node youtube-channel.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst channelId = 'UCBJycsmduvYEL83R_U4JriQ';
const wanted = 800;
const uploads = `UU${channelId.slice(2)}`;
async function scrape(url) {
for (let attempt = 1; attempt <= 3; attempt++) {
const params = new URLSearchParams({ url, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes('var ytInitialData = ')) return JSON.parse(page.split('var ytInitialData = ')[1].split(';</script>')[0]);
await new Promise((resolve) => setTimeout(resolve, 5000));
}
throw new Error('The page came back without videos, try again later');
}
function* find(node, key) {
if (Array.isArray(node)) for (const item of node) yield* find(item, key);
else if (node && typeof node === 'object') {
for (const [name, value] of Object.entries(node)) {
if (name === key) yield value;
yield* find(value, key);
}
}
}
const videos = new Map();
for (const item of find(await scrape(`https://www.youtube.com/playlist?list=${uploads}`), 'lockupViewModel')) {
if (item.contentType === 'LOCKUP_CONTENT_TYPE_VIDEO') videos.set(item.contentId, item.metadata.lockupMetadataViewModel.title.content);
}
let pages = 1;
while (videos.size < wanted) {
const last = [...videos.keys()].at(-1);
const before = videos.size;
for (const item of find(await scrape(`https://www.youtube.com/watch?v=${last}&list=${uploads}`), 'playlistPanelVideoRenderer')) {
videos.set(item.videoId, item.title.simpleText);
}
pages++;
if (videos.size === before) break;
}
console.table([...videos].slice(0, 5).map(([id, title]) => ({ title, url: `https://www.youtube.com/watch?v=${id}` })));
console.log(`${videos.size} videos in ${pages} pages: $${(pages * 0.00098).toFixed(4)} on the Growth plan`);GOLOGIN_SCRAPING_API_KEY=your_key node youtube-video.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst video = 'https://www.youtube.com/watch?v=jNQXAC9IVRw';
async function scrape(url) {
for (let attempt = 1; attempt <= 3; attempt++) {
const params = new URLSearchParams({ url, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes('var ytInitialPlayerResponse = ')) return page;
await new Promise((resolve) => setTimeout(resolve, 5000));
}
throw new Error('The video page came back empty, try again later');
}
const page = await scrape(video);
const player = JSON.parse(page.split('var ytInitialPlayerResponse = ')[1].split(';var meta')[0]);
const { videoDetails: details, microformat, captions } = player;
console.log({
title: details.title,
channel: details.author,
views: Number(details.viewCount),
likes: Number(page.match(/along with ([\d,]+) other/)?.[1].replaceAll(',', '')),
comments: page.match(/"contextualInfo":\{"runs":\[\{"text":"([^"]+)"/)?.[1],
published: microformat.playerMicroformatRenderer.publishDate,
seconds: Number(details.lengthSeconds),
tags: details.keywords ?? [],
captions: captions?.playerCaptionsTracklistRenderer.captionTracks.map((track) => track.languageCode) ?? [],
});Pronto para rodar nas suas próprias buscas? Obtenha sua chave de API e requisições grátis.
O Web Unlocker devolve a página como o YouTube a envia primeiro. Os comentários só carregam ao rolar, e as transcrições só ao clicar. O Cloud Browser é o complemento que rola e clica por você, a partir de $4.50 por mês para 50 horas de navegador.
100 comentários de cada um de 1.000 vídeos saem por $6.95: 8,3 horas de navegador e 6,2 GB de tráfego. A Apify cobra de $30 a $200 pelo mesmo.
A API do YouTube só dá transcrições dos seus próprios vídeos, e servidores recebem um arquivo vazio. O Cloud Browser abre a transcrição como um espectador, em 25 segundos.
Cada sessão roda em um IP residencial no país que você escolher. O tráfego além do seu plano custa $1/GB.
Rode a partir do Playwright, Puppeteer ou do Claude. Conheça o Cloud Browser.
Uma conta, uma rede de proxies, um ecossistema. Escolha o produto de que a tarefa precisa.
Faz scraping de mais sites? Veja os scrapers do Reddit, do Google Maps e da Amazon, ou todas as ferramentas de web scraping.
Sim. O Web Unlocker é uma API de scraper de YouTube: envie uma busca, um vídeo ou os uploads de um canal, e ele carrega a página em um navegador real e a devolve com os dados que o YouTube guarda nela: títulos, visualizações, canais, datas e durações. $0.98 por 1.000 páginas, e o código acima lê o resultado.
Sim. A página de um vídeo do YouTube traz as visualizações exatas, as curtidas, o número de comentários, a descrição, as tags, a data de publicação e os idiomas das legendas, além de 20 vídeos relacionados, cobrados como uma página. A aba Dados do vídeo acima lê tudo isso.
Envie youtube.com/results com sua palavra-chave. Uma página traz até 20 vídeos e até 25 Shorts, cada um com visualizações, canal, tempo de publicação e duração, cobrados como uma página. Adicione os filtros do próprio YouTube, por data de upload ou por visualizações, para outros resultados.
100 chamadas de busca por dia por projeto por padrão, cada uma com até 50 resultados. Mais do que isso exige um pedido de cota e uma auditoria do Google. O Web Unlocker não tem limite diário: você paga por página, $0.98 por 1.000.
Sim, dentro da cota: 10.000 unidades por dia para a maioria das chamadas, mais 100 buscas. Acima disso, o Google só aumenta a cota após uma auditoria do seu projeto.
Sim. As páginas de busca, de vídeo e de canal são públicas e carregam sem login. O Web Unlocker as devolve como o navegador de um visitante as vê, sem projeto do Google e sem chave de API.
Abra a playlist de uploads do canal: a primeira página lista 100 vídeos com visualizações e tempo de publicação. Depois abra o último vídeo com essa playlist: cada página assim lista mais 78. 10 páginas trazem 802 vídeos, por 1 centavo.
O YouTube carrega os comentários conforme você rola, então o Web Unlocker não os devolve. O Cloud Browser rola o vídeo por você: 100 comentários em 26 segundos, e 100 comentários de cada um de 1.000 vídeos por $6.95.
Sim, com o Cloud Browser. A API do YouTube só dá transcrições dos seus próprios vídeos, e requisições vindas de servidores recebem um arquivo vazio. O Cloud Browser abre a transcrição como um espectador, em 25 segundos por vídeo.
Envie o endereço da busca ao Web Unlocker com a biblioteca requests e leia os vídeos na página. A aba Python acima é um script completo, testado na API real.
Sim. Uma página de busca traz até 25 Shorts com títulos e visualizações, a aba Shorts de um canal lista 48, e a página própria de um Short tem as curtidas, o número de comentários e a data.
O Web Unlocker devolve a página, não uma tabela, então nada é cortado antes de você ver. Transformar em CSV leva poucas linhas de código, ou um prompt: entregue a página ao Claude com a skill de scraping do Gologin e peça um CSV.
$0.98 por 1.000 páginas, o mesmo preço para toda página. Uma busca com até 20 vídeos é uma página, e um vídeo com seus números é uma página. Uma página que não carrega não custa nada. Os planos começam em $49 por mês para 50.000 requisições.
Sim, para começar: o Web Unlocker vem com 1.000 requisições grátis, o suficiente para 1.000 buscas ou 1.000 vídeos.
Depende do que você precisa. A API do YouTube é grátis para 100 buscas por dia. Apify e Bright Data vendem linhas prontas e cobram cada vídeo. O Web Unlocker devolve a página inteira por um preço único, então 20 vídeos custam o mesmo que um.
As páginas de busca, de vídeo e de canal são públicas e carregam sem login. O Web Unlocker as carrega como o navegador de um visitante e devolve a página. O que você coleta e como usa é decisão sua, então confira com as regras que valem para o seu projeto.
Conte um pouco sobre sua equipe e receba: