Wpisz miejsce, a Web Unlocker zwróci jego stronę z opiniami Google: ocenę, liczbę ocen dla każdej gwiazdki, tematy, o których piszą ludzie, i najlepsze opinie z tekstem, a całość jest rozliczana jak jedna strona. Strona, która się nie załaduje, nic nie kosztuje.
1000 darmowych żądań · Płatność tylko za sukces · 195+ krajów · Gotowe dla Claude
Strona Google Maps ładuje się od 5 do 20 sekund, a strona, która wraca pusta, jest pobierana ponownie. Nadal pracuję, nie musisz klikać ponownie.
Gotowy na własne miejsca? Pobierz klucz API albo umów demo.
Opowiedz nam trochę o swoim zespole i otrzymasz:
Strona miejsca w Google Maps zawiera ocenę, liczbę ocen dla każdej gwiazdki, tematy, o których piszą ludzie, i najlepsze opinie, a Web Unlocker rozlicza ją jako jedną stronę. Google Places API rozlicza każde wywołanie i zwraca 5 opinii. Scrapery opinii rozliczają każdą opinię.
Trudna strona kosztuje
tyle samo, co łatwa.
Strona, która się nie załaduje, nic nie kosztuje. Płacisz za wyrenderowaną stronę i za nic więcej.
Ile kosztują opinie Google dla 1000 miejsc
1000 stron miejsc z najlepszymi opiniami, według opublikowanych cen
Web Unlocker w planie Growth, $0.98 za 1000 stron. Pozostałe rozliczają 3000 opinii z tych stron albo 1000 wywołań po 5 opinii.
Oficjalne API kończy się na 5 opiniach na miejsce i rozlicza każde wywołanie. Scrapery opinii rozliczają każdą opinię. Oto, czego wymaga każda droga dla tych samych 1000 miejsc.
| Czego to wymaga | Google Places API | Apify | Outscraper | |
|---|---|---|---|---|
| Start bez klucza Google API | Tak | Nie | Tak | Tak |
| Płacisz za | Stronę | Każde wywołanie | Każdą opinię | Każdą opinię |
| 1000 miejsc z najlepszymi opiniami | $0.98 | $25 | $1.80 | $9 |
| Oceny rozbite na gwiazdki, od 5 do 1 | Tak | Nie, tylko średnia | Nie | Tak |
| Tematy opinii z liczbą wzmianek | Tak | Nie | Nie | Nie |
| Cała strona w HTML lub Markdown | Tak | Nie | Nie | Nie |
Scrapujesz nie tylko opinie Google? Web Unlocker zwraca każdą stronę w ten sam sposób, w tej samej cenie.
Web Unlocker nie ma własnych alertów. Twój skrypt otwiera stronę każdego miejsca raz dziennie: gdy zmieni się ocena lub liczba opinii, są nowe opinie do przeczytania. 1000 miejsc to $0.98 dziennie.
Narzędzia do monitorowania opinii zaczynają się od $65 miesięcznie za miejsce.
Twoje własne sprawdzenie kosztuje $0.001.
Jedno żądanie na miejsce: wyślij adres miejsca w Google Maps, odbierz wyrenderowaną stronę, odczytaj ocenę, liczbę ocen dla każdej gwiazdki, tematy i opinie. Demo powyżej uruchamia ten sam parser.
Wypełnij formularz powyżej. Klucz przychodzi e-mailem w ciągu jednego dnia roboczego.
google.com/maps/search/ plus miejsce i jego miasto oraz kraj, z którego je otwierasz.
Strona zawiera ocenę, liczbę ocen dla każdej gwiazdki, tematy z ich liczbą i najlepsze opinie, każdą z autorem, gwiazdkami, datą i tekstem.
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python google_reviews.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport json
import os
import re
import time
from urllib.parse import quote_plus
import requests
place = "Franklin Barbecue Austin"
address = f"https://www.google.com/maps/search/{quote_plus(place)}?hl=en&ucbcb=1"
html = ""
for attempt in range(3):
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
params={
"url": address if attempt == 0 else f"{address}&_r={int(time.time())}",
"render_js": "true",
"wait": "9000",
"geo": "us",
"format": "json",
},
timeout=120,
)
html = response.json().get("data", {}).get("html", "")
if 'data-review-id="' in html:
break
def first(pattern):
match = re.search(pattern, html)
return match.group(1) if match else None
blocks = {}
for match in re.finditer(r'data-review-id="([^"]+)"', html):
blocks.setdefault(match.group(1), match.start())
starts = sorted(blocks.values()) + [len(html)]
reviews = []
for start, end in zip(starts, starts[1:]):
block = html[start:end]
author = re.search(r'class="d4r55[^"]*"[^>]*>([^<]+)<', block)
text = re.search(r'class="wiI7pd"[^>]*>([^<]*)<', block)
if author and text:
stars = re.search(r'aria-label="(\d) stars?"', block)
date = re.search(r'class="rsqaWe"[^>]*>([^<]+)<', block)
reviews.append({
"author": author.group(1),
"stars": int(stars.group(1)) if stars else None,
"date": date.group(1) if date else None,
"text": text.group(1),
})
print(json.dumps({
"name": first(r"<h1[^>]*>([^<]+)"),
"rating": first(r'class="F7nice[^"]*"[^>]*>\s*<span><span aria-hidden="true">([\d.]+)<'),
"ratings": first(r'aria-label="([\d,]+) reviews?">\('),
"stars": {level: first(rf'aria-label="{level} stars?, ([\d,]+) reviews?"') for level in "54321"},
"topics": dict(re.findall(r'aria-label="([^",]+), mentioned in ([\d,]+) reviews?"', html)),
"reviews": reviews,
}, indent=2, ensure_ascii=False))GOLOGIN_SCRAPING_API_KEY=your_key node reviews-batch.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst places = [
'Franklin Barbecue Austin',
'Katz Delicatessen New York',
'Relax and Smile Dental Care Miami',
];
const number = (text) => (text ? Number(text.replace(/,/g, '')) : null);
async function pageOf(place, attempt) {
const address = `https://www.google.com/maps/search/${encodeURIComponent(place).replace(/%20/g, '+')}?hl=en&ucbcb=1`;
const params = new URLSearchParams({
url: attempt === 1 ? address : `${address}&_r=${Date.now()}`,
render_js: 'true',
wait: '9000',
geo: 'us',
format: 'json',
});
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
return (await response.json()).data?.html ?? '';
}
async function reviewsOf(place) {
let html = '';
for (let attempt = 1; attempt <= 3 && !html.includes('data-review-id='); attempt += 1) {
html = await pageOf(place, attempt);
}
const star = (level) => number(html.match(new RegExp(`aria-label="${level} stars?, ([\\d,]+) reviews?"`))?.[1]);
return {
place: html.match(/<h1[^>]*>([^<]+)/)?.[1] ?? place,
rating: number(html.match(/class="F7nice[^"]*"[^>]*>\s*<span><span aria-hidden="true">([\d.]+)</)?.[1]),
ratings: number(html.match(/aria-label="([\d,]+) reviews?">\(/)?.[1]),
fiveStar: star(5),
oneStar: star(1),
topReview: html.match(/class="wiI7pd"[^>]*>([^<]{0,80})/)?.[1],
};
}
const rows = [];
for (const place of places) rows.push(await reviewsOf(place));
console.table(rows);GOLOGIN_SCRAPING_API_KEY=your_key node reviews-watch.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { readFile, writeFile } from 'node:fs/promises';
const places = ['Franklin Barbecue Austin', 'Katz Delicatessen New York', 'Relax and Smile Dental Care Miami'];
const FILE = 'reviews.json';
const number = (text) => (text ? Number(text.replace(/,/g, '')) : null);
async function pageOf(place, attempt) {
const address = `https://www.google.com/maps/search/${encodeURIComponent(place).replace(/%20/g, '+')}?hl=en&ucbcb=1`;
const params = new URLSearchParams({
url: attempt === 1 ? address : `${address}&_r=${Date.now()}`,
render_js: 'true',
wait: '9000',
geo: 'us',
format: 'json',
});
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
return (await response.json()).data?.html ?? '';
}
async function countOf(place) {
let html = '';
for (let attempt = 1; attempt <= 3 && !html.includes('data-review-id='); attempt += 1) {
html = await pageOf(place, attempt);
}
return {
rating: number(html.match(/class="F7nice[^"]*"[^>]*>\s*<span><span aria-hidden="true">([\d.]+)</)?.[1]),
ratings: number(html.match(/aria-label="([\d,]+) reviews?">\(/)?.[1]),
};
}
const before = JSON.parse(await readFile(FILE, 'utf8').catch(() => '{}'));
const today = { ...before };
for (const place of places) {
const now = await countOf(place);
const was = before[place]?.ratings ?? null;
if (now.ratings === null) console.log(`${place}: no page today, ask again`);
else if (was === null) console.log(`${place}: first check, ${now.ratings} ratings, ${now.rating} stars`);
else if (now.ratings > was) console.log(`${place}: ${now.ratings - was} new, now ${now.ratings} ratings, ${now.rating} stars`);
else console.log(`${place}: nothing new`);
if (now.ratings !== null) today[place] = now;
}
await writeFile(FILE, JSON.stringify(today, null, 2));Potrzebujesz najpierw listy miejsc? Scraper Google Maps wymienia wszystkie miejsca z kategorii w mieście, a każde to jedna kolejna strona tutaj.
Jedno konto, jedna sieć proxy, jeden ekosystem. Wybierz produkt, którego wymaga zadanie.
Scrapujesz też same miejsca? Zobacz scraper Google Maps, scrapery Reddit i YouTube albo wszystkie narzędzia do web scrapingu.
Wyślij adres miejsca w Google Maps do Web Unlocker: google.com/maps/search/ plus nazwa i miasto. Otworzy stronę w prawdziwej przeglądarce z wybranego kraju i zwróci ją z oceną, liczbą ocen dla każdej gwiazdki, tematami, o których piszą ludzie, i najlepszymi opiniami, każdą z autorem, gwiazdkami, datą i tekstem. Kod powyżej robi dokładnie to.
Wyślij adres miejsca do Web Unlocker biblioteką requests i odczytaj pola ze strony. Zakładka Python powyżej to kompletny skrypt, przetestowany na działającym API.
Tak. Strona miejsca w Google Maps jest publiczna i ładuje się bez logowania. Web Unlocker zwraca ją tak, jak widzi ją przeglądarka użytkownika, bez projektu Google Cloud, bez klucza API i bez zatwierdzenia.
Dwa oficjalne. Google Places API zwraca ocenę miejsca i do 5 opinii, po $25 za 1000 wywołań. Google Business Profile API zwraca każdą opinię, za darmo, ale tylko dla lokalizacji, które posiadasz lub którymi zarządzasz. Aby dotrzeć do opinii innych miejsc poza tymi 5, razem z rozkładem gwiazdek, Web Unlocker zwraca samą stronę Maps.
Taki jest jego udokumentowany limit: Place Details zwraca najwyżej 5 opinii na miejsce, posortowanych według trafności, w SKU za $25 za 1000 wywołań. Zwraca średnią ocenę, bez rozkładu gwiazdek. Strona Maps zawiera liczbę ocen dla każdej gwiazdki i tematy opinii, a Web Unlocker zwraca całą stronę.
3 najlepsze opinie z pełnym tekstem, plus ocenę, liczbę ocen na każdym poziomie gwiazdek i tematy z ich liczbą. Od września 2026 Google Maps pokazuje pełną listę opinii miejsca dopiero po zalogowaniu, więc tyle dostaje każde narzędzie czytające publiczną stronę. Dla własnych lokalizacji Google Business Profile API wymienia każdą opinię za darmo.
Nie z publicznej strony: Google trzyma pełną listę i opcje sortowania za logowaniem Google. Publiczne zostaje podsumowanie i najlepsze opinie, a to wraca jako jedna strona w jednej cenie.
Sortowanie też jest za logowaniem. Strona zawiera najlepsze opinie. Aby wyłapać nowe, porównaj liczbę opinii i ocenę z ostatnim uruchomieniem: zakładka Codzienne sprawdzanie powyżej robi to dla listy miejsc.
Tak: ile ocen dostał każdy poziom gwiazdek, od 5 do 1, dla każdego miejsca. Franklin Barbecue w Austin w dniu naszego testu: 6053 oceny pięciogwiazdkowe, 695 czterogwiazdkowych, 285 trzygwiazdkowych, 104 dwugwiazdkowe i 199 jednogwiazdkowych.
Tak, w dwóch krokach. Scraper Google Maps wymienia miejsca z kategorii kafelek po kafelku, a każde miejsce to jedna kolejna strona tutaj. 146 dentystów w Miami pochodziło z 25 stron wyszukiwania; ich 146 stron z opiniami daje 171 stron, łącznie około 17 centów.
Jeśli posiadasz lub zarządzasz wizytówką, użyj Google Business Profile API: wymienia każdą opinię Twoich lokalizacji za darmo, po 50 na stronę, gdy Google zatwierdzi Twój projekt. Web Unlocker służy do miejsc, którymi nie zarządzasz.
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.
Poniżej $1 za 1000 stron i ta sama cena za każdą stronę: 1000 miejsc z opiniami to $0.98. 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 miejsc z opiniami.
Nie. Web Unlocker sam wybiera IP, w ponad 195 krajach, i otwiera stronę z kraju, który wybierzesz.
To zależy od potrzeb. Apify i Outscraper sprzedają gotowe wiersze i rozliczają każdą opinię. Web Unlocker zwraca całą stronę Maps w jednej cenie za stronę, z rozkładem gwiazdek i tematami, których wiersze nie zawierają, a Ty parsujesz ją po swojemu.
Strona miejsca w Maps jest publiczna i ładuje się bez logowania. Web Unlocker ładuje ją 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: