Введите место, и Web Unlocker вернёт его страницу отзывов Google: рейтинг, разбивку по звёздам, темы и лучшие отзывы с текстом по цене одной страницы. Страница, которая не загрузилась, не оплачивается.
1000 бесплатных запросов · Оплата только за результат · 195+ стран · Работает с Claude
Страница Google Maps загружается от 5 до 20 секунд, а если она пришла пустой, мы запрашиваем её снова. Всё ещё работаем, нажимать снова не нужно.
Готовы собрать отзывы нужных мест? Получите API‑ключ или запишитесь на демо.
Расскажите немного о вашей команде и получите:
Страница места в Google Maps содержит рейтинг, число оценок по звёздам, темы, которые упоминают люди, и лучшие отзывы, и Web Unlocker берёт за неё как за одну страницу. Google Places API берёт за каждый вызов и возвращает 5 отзывов. Парсеры отзывов берут за каждый отзыв.
Сложная страница стоит
столько же, сколько простая.
Страница, которая не загрузилась, не оплачивается. Вы платите за отрисованную страницу и ни за что больше.
Сколько стоят отзывы Google для 1000 мест
1000 страниц мест с лучшими отзывами по опубликованным ценам
Web Unlocker на тарифе Growth, $0.98 за 1000 страниц. Остальные берут за 3000 отзывов на этих страницах или за 1000 вызовов по 5 отзывов.
Официальный API останавливается на 5 отзывах на место и берёт деньги за каждый вызов. Парсеры отзывов берут за каждый отзыв. Вот что нужно на каждом пути для тех же 1000 мест.
| Что нужно | Google Places API | Apify | Outscraper | |
|---|---|---|---|---|
| Старт без ключа Google API | Да | Нет | Да | Да |
| Вы платите за | Страницу | Каждый вызов | Каждый отзыв | Каждый отзыв |
| 1000 мест с лучшими отзывами | $0.98 | $25 | $1.80 | $9 |
| Разбивка оценок по звёздам, от 5 до 1 | Да | Нет, только среднее | Нет | Да |
| Темы отзывов с числом упоминаний | Да | Нет | Нет | Нет |
| Страница целиком в HTML или Markdown | Да | Нет | Нет | Нет |
Парсите не только отзывы Google? Web Unlocker возвращает любую страницу так же и по той же цене.
Своих алертов у Web Unlocker нет. Ваш скрипт открывает страницу каждого места раз в день: если рейтинг или число отзывов изменились, появились новые отзывы. 1000 мест обходятся в $0.98 в день.
Сервисы мониторинга отзывов стоят от $65 в месяц за место.
Ваша проверка стоит $0.001.
Один запрос на место: отправьте адрес места в Google Maps, получите отрисованную страницу, прочитайте рейтинг, число оценок по звёздам, темы и отзывы. Демо выше запускает тот же парсер.
Заполните форму выше. Ключ придёт на почту в течение одного рабочего дня.
google.com/maps/search/ плюс место и его город, а также страна, из которой его открыть.
На странице есть рейтинг, число оценок по звёздам, темы с числом упоминаний и лучшие отзывы, у каждого автор, звёзды, дата и текст.
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));Нужно сначала найти места? Парсер Google Maps перечисляет все места категории в городе, и каждое из них - ещё одна страница здесь.
Один аккаунт, одна прокси-сеть, одна экосистема. Выберите продукт под задачу.
Парсите и сами места? Смотрите парсер Google Maps, парсеры Reddit и YouTube или все инструменты для веб-парсинга.
Отправьте адрес места в Google Maps в Web Unlocker: google.com/maps/search/ плюс название и город. Он откроет страницу в настоящем браузере из выбранной вами страны и вернёт её с рейтингом, числом оценок по каждой звезде, темами, которые упоминают люди, и лучшими отзывами, у каждого автор, звёзды, дата и текст. Код выше делает именно это.
Отправьте адрес места в Web Unlocker через библиотеку requests и прочитайте поля со страницы. Вкладка Python выше - это готовый скрипт, проверенный на живом API.
Да. Страница места в Google Maps общедоступна и открывается без входа. Web Unlocker возвращает её такой, какой её видит браузер посетителя, без проекта Google Cloud, без ключа API и без одобрения.
Два официальных. Google Places API возвращает рейтинг места и до 5 отзывов, $25 за 1000 вызовов. Google Business Profile API возвращает все отзывы бесплатно, но только для организаций, которыми вы владеете или управляете. Чтобы получить отзывы чужих мест сверх этих 5, с разбивкой по звёздам, Web Unlocker возвращает саму страницу Maps.
Таков его документированный лимит: Place Details возвращает не больше 5 отзывов на место, отсортированных по релевантности, в тарифе за $25 за 1000 вызовов. Он даёт средний рейтинг без разбивки по звёздам. Страница Maps содержит число оценок по каждой звезде и темы отзывов, а Web Unlocker возвращает страницу целиком.
Три лучших отзыва с полным текстом, а также рейтинг, число оценок по каждому уровню звёзд и темы с числом упоминаний. С сентября 2026 года Google Maps показывает полный список отзывов места только после входа, поэтому именно это получает любой инструмент, читающий публичную страницу. Для ваших собственных организаций Google Business Profile API перечисляет все отзывы бесплатно.
Не с публичной страницы: Google держит полный список и варианты сортировки за входом в Google. Публичными остаются сводка и лучшие отзывы, и они приходят одной страницей по одной цене.
Сортировка тоже за входом. На странице лучшие отзывы. Чтобы заметить новые, сравнивайте число отзывов и рейтинг с прошлым запуском: вкладка «Ежедневная проверка» выше делает это для списка мест.
Да: сколько оценок получил каждый уровень звёзд, от 5 до 1, для каждого места. Franklin Barbecue в Остине в день нашего теста: 6053 пятизвёздочные оценки, 695 четырёхзвёздочных, 285 трёхзвёздочных, 104 двухзвёздочные и 199 однозвёздочных.
Да, в два шага. Парсер Google Maps перечисляет места категории квадрат за квадратом, а затем каждое место - ещё одна страница здесь. 146 стоматологов в Майами пришли из 25 страниц поиска; их 146 страниц отзывов дают 171 страницу, всего около 17 центов.
Если вы владеете карточкой компании или управляете ею, используйте Google Business Profile API: он бесплатно перечисляет все отзывы ваших организаций, по 50 на страницу, после того как Google одобрит ваш проект. Web Unlocker - для мест, которыми вы не управляете.
Web Unlocker возвращает страницу, а не таблицу, поэтому до вас ничего не обрезается. Превратить её в CSV можно несколькими строками кода или одним запросом: передайте страницу Claude вместе с Gologin scraping skill и попросите CSV.
Меньше $1 за 1000 страниц и одна цена за любую страницу: 1000 мест с отзывами обходятся в $0.98. Страница, которая не загрузилась, не оплачивается. Тарифы начинаются от $49 в месяц за 50 000 запросов.
Да, для старта: с Web Unlocker вы получаете 1000 бесплатных запросов, этого хватит на 1000 мест с отзывами.
Нет. Web Unlocker сам подбирает IP в более чем 195 странах и открывает страницу из выбранной вами страны.
Зависит от задачи. Apify и Outscraper продают готовые строки и берут деньги за каждый отзыв. Web Unlocker возвращает всю страницу Maps по одной цене за страницу, с разбивкой по звёздам и темами, которых нет в строках, а разбираете вы её по-своему.
Страница места в Maps общедоступна и открывается без входа. Web Unlocker загружает её так же, как браузер посетителя, и возвращает страницу. Что вы собираете и как используете, решаете вы, поэтому сверьтесь с правилами, которые относятся к вашему проекту.
Расскажите немного о вашей команде и получите: