API YouTube zatrzymuje Cię na 100 wyszukiwaniach dziennie. Web Unlocker zwraca każdą stronę wyników, o którą poprosisz, z maksymalnie 20 filmami na każdej, za $0.98 za 1000. Klucz Google API niepotrzebny.
1000 darmowych żądań · Płatność tylko za sukces · 195+ krajów · Gotowe dla Claude
Strony YouTube ładują się od 15 do 30 sekund. Nadal pracuję, nie musisz klikać ponownie.
Gotowy na własne wyszukiwania? Pobierz klucz API albo umów demo.
Opowiedz nam trochę o swoim zespole i otrzymasz:
Web Unlocker rozlicza stronę wyników wyszukiwania YouTube jako jedną stronę, ze wszystkimi jej maksymalnie 20 filmami. Scrapery YouTube na Apify i Bright Data rozliczają każdy z tych filmów jako osobny wiersz.
API zatrzymuje się na 100 wyszukiwaniach dziennie.
Tutaj 1000 wyszukiwań kosztuje $0.98.
Filtruj wyszukiwanie tak jak YouTube, według daty dodania albo liczby wyświetleń: każdy filtr to jedna dodatkowa strona w tej samej cenie.
Ile kosztuje 1000 wyszukiwań po 20 filmów
1000 stron wyników i 20 000 filmów, według opublikowanych cen
SerpApi rozlicza każde wyszukiwanie. Bright Data rozlicza każdy film jako rekord, $1.50 za 1000. Najczęściej używany scraper YouTube na Apify rozlicza każdy film, $2.40 do $4.00 za 1000.
YouTube Data API jest darmowe, dopóki nie skończy się jego 100 wyszukiwań dziennie, a scrapery YouTube rozliczają każdy film. Oto, czego wymaga każda droga dla tych samych 1000 wyszukiwań.
| Czego to wymaga | YouTube Data API | Apify | SerpApi | |
|---|---|---|---|---|
| Wyszukiwań dziennie | Bez limitu | 100 | Bez limitu | Według planu |
| Płacisz za | Stronę | Gratis w przydziale | Każdy film | Każde wyszukiwanie |
| 1000 wyszukiwań po 20 filmów | $0.98 | 10 dni przydziału | $48 do $80 | $25 |
| Transkrypcje dowolnego filmu | Z Cloud Browser | Tylko własne filmy | Tak | Nie |
| Start bez projektu Google | Tak | Nie | Tak | Tak |
| Cała strona w HTML | Tak | Nie | Nie | Nie |
Scrapujesz nie tylko YouTube? Web Unlocker zwraca każdą stronę w ten sam sposób, w tej samej cenie.
Playlista przesłanych filmów kanału zawiera na pierwszej stronie 100 filmów, a każda kolejna strona dodaje 78. Web Unlocker rozlicza każdą stronę raz: 10 stron, 802 filmy, $0.0098.
Apify rozlicza $2.40 do $4.00 za 1000 filmów.
Tutaj 800 filmów kosztuje 1 cent.
YouTube trzyma wszystkie filmy ze strony jako JSON wewnątrz jej HTML. Web Unlocker zwraca ten HTML, a kilka linii kodu odczytuje z niego filmy.
Wypełnij formularz powyżej. Klucz przychodzi e-mailem w ciągu jednego dnia roboczego.
Wyszukiwanie Twojego słowa kluczowego, film dla jego liczb albo przesłane filmy kanału, żeby dostać wszystkie jego filmy.
Każdy film na stronie ma tytuł, wyświetlenia, kanał, datę i długość.
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) ?? [],
});Gotowy uruchomić to na własnych wyszukiwaniach? Odbierz klucz API i darmowe żądania.
Web Unlocker zwraca stronę taką, jaką YouTube wysyła na początku. Komentarze ładują się dopiero podczas przewijania, a transkrypcje dopiero po kliknięciu. Cloud Browser to dodatek, który przewija i klika za Ciebie, od $4.50 miesięcznie za 50 godzin przeglądarki.
100 komentarzy z każdego z 1000 filmów kosztuje $6.95: 8.3 godziny przeglądarki i 6.2 GB ruchu. Apify rozlicza za to samo $30 do $200.
API YouTube daje transkrypcje tylko własnych filmów, a serwery dostają pusty plik. Cloud Browser otwiera transkrypcję tak, jak robi to widz, w 25 sekund.
Każda sesja działa na adresie rezydencyjnym w kraju, który wybierzesz. Ruch ponad plan to $1/GB.
Uruchom z Playwright, Puppeteer lub Claude. Zobacz Cloud Browser.
Jedno konto, jedna sieć proxy, jeden ekosystem. Wybierz produkt, którego wymaga zadanie.
Scrapujesz więcej witryn? Zobacz scrapery Reddit, Google Maps i Amazon albo wszystkie narzędzia do web scrapingu.
Tak. Web Unlocker to API do scrapowania YouTube: wyślij mu wyszukiwanie, film albo przesłane filmy kanału, a załaduje stronę w prawdziwej przeglądarce i zwróci ją z danymi, które YouTube trzyma w środku: tytułami, wyświetleniami, kanałami, datami i długościami. $0.98 za 1000 stron, a kod powyżej je odczytuje.
Tak. Strona filmu YouTube zawiera dokładną liczbę wyświetleń, polubień i komentarzy, opis, tagi, datę publikacji i języki napisów, a do tego 20 powiązanych filmów, rozliczane jako jedna strona. Zakładka Statystyki filmu powyżej je odczytuje.
Wyślij youtube.com/results ze swoim słowem kluczowym. Jedna strona przynosi do 20 filmów i do 25 Shorts, każdy z wyświetleniami, kanałem, wiekiem i długością, rozliczane jako jedna strona. Dodaj własne filtry YouTube, według daty dodania albo liczby wyświetleń, by dostać inne wyniki.
Domyślnie 100 wywołań wyszukiwania dziennie na projekt, każde z maksymalnie 50 wynikami. Więcej wymaga wniosku o zwiększenie przydziału i audytu Google. Web Unlocker nie ma dziennego limitu: płacisz za stronę, $0.98 za 1000.
Tak, w ramach przydziału: 10 000 jednostek dziennie dla większości wywołań, plus 100 wyszukiwań. Po jego przekroczeniu Google zwiększa przydział dopiero po audycie Twojego projektu.
Tak. Strony wyszukiwania, filmów i kanałów są publiczne i ładują się bez logowania. Web Unlocker zwraca je tak, jak widzi je przeglądarka użytkownika, bez projektu Google i bez klucza API.
Otwórz playlistę przesłanych filmów kanału: pierwsza strona wymienia 100 filmów z wyświetleniami i wiekiem. Potem otwórz jej ostatni film z tą playlistą: każda taka strona wymienia 78 kolejnych. 10 stron przynosi 802 filmy, za 1 cent.
YouTube ładuje komentarze podczas przewijania, więc Web Unlocker ich nie zwraca. Cloud Browser przewija film za Ciebie: 100 komentarzy w 26 sekund, a 100 komentarzy z każdego z 1000 filmów kosztuje $6.95.
Tak, z Cloud Browser. API YouTube daje transkrypcje tylko własnych filmów, a żądania z serwerów dostają pusty plik. Cloud Browser otwiera transkrypcję tak, jak robi to widz, w 25 sekund na film.
Wyślij adres wyszukiwania do Web Unlocker biblioteką requests i odczytaj filmy ze strony. Zakładka Python powyżej to kompletny skrypt, przetestowany na działającym API.
Tak. Strona wyszukiwania przynosi do 25 Shorts z tytułami i wyświetleniami, zakładka Shorts kanału wymienia 48, a strona samego Shorta ma jego polubienia, liczbę komentarzy i datę.
Web Unlocker zwraca stronę, a nie tabelę, więc nic nie jest obcinane, zanim to zobaczysz. Zamiana na CSV to kilka linii kodu albo jedno polecenie: przekaż stronę Claude z Gologin scraping skill i poproś o CSV.
$0.98 za 1000 stron i ta sama cena za każdą stronę. Wyszukiwanie z maksymalnie 20 filmami to jedna strona, film z jego liczbami to jedna strona. Strona, która się nie załaduje, nic nie kosztuje. Plany zaczynają się od $49 miesięcznie za 50 000 żądań.
Tak, na start: Web Unlocker zawiera 1000 darmowych żądań, czyli wystarczająco na 1000 wyszukiwań albo 1000 filmów.
To zależy od zadania. API YouTube jest darmowe przy 100 wyszukiwaniach dziennie. Apify i Bright Data sprzedają gotowe wiersze i rozliczają każdy film. Web Unlocker zwraca całą stronę w jednej cenie, więc 20 filmów kosztuje tyle samo co jeden.
Strony wyszukiwania, filmów i kanałów to publiczne strony, które ładują się bez logowania. Web Unlocker ładuje je tak, jak robi to przeglądarka użytkownika, i zwraca stronę. To, co zbierasz i jak tego używasz, zależy od Ciebie, więc sprawdź to z zasadami obowiązującymi w Twoim projekcie.
Opowiedz nam trochę o swoim zespole i otrzymasz: