Digite um local e o Web Unlocker devolve a página de avaliações do Google dele: a nota, quantas notas cada estrela recebeu, os tópicos que as pessoas mencionam e as principais avaliações com o texto, cobrados como uma página. Uma página que não carrega não custa nada.
1.000 requisições grátis · Pague só se der certo · Mais de 195 países · Pronto para o Claude
Uma página do Google Maps leva de 5 a 20 segundos, e uma página que volta vazia é pedida de novo. Ainda está em andamento, não precisa clicar de novo.
Pronto para seus próprios locais? Obtenha uma chave de API ou agende uma demo.
Conte um pouco sobre sua equipe e receba:
A página de um local no Google Maps traz a nota, a contagem de cada estrela, os tópicos que as pessoas mencionam e as principais avaliações, e o Web Unlocker a cobra como uma página. A Google Places API cobra cada chamada e devolve 5 avaliações. Os scrapers de avaliações cobram cada avaliação.
Uma página difícil custa
o mesmo que uma fácil.
Uma página que não carrega não custa nada. Você paga por uma página renderizada, mais nada.
Quanto custam as avaliações do Google de 1.000 locais
1.000 páginas de locais com suas principais avaliações, a preços publicados
Web Unlocker no plano Growth, $0.98 por 1.000 páginas. Os outros cobram as 3.000 avaliações dessas páginas, ou 1.000 chamadas com 5 avaliações cada.
A API oficial para em 5 avaliações por local e cobra cada chamada. Os scrapers de avaliações cobram cada avaliação. Veja o que cada caminho exige para os mesmos 1.000 locais.
| O que é preciso | Google Places API | Apify | Outscraper | |
|---|---|---|---|---|
| Começar sem uma chave de API do Google | Sim | Não | Sim | Sim |
| Você paga por | Uma página | Cada chamada | Cada avaliação | Cada avaliação |
| 1.000 locais com suas principais avaliações | $0.98 | $25 | $1.80 | $9 |
| Notas divididas por estrelas, de 5 a 1 | Sim | Não, só a média | Não | Sim |
| Tópicos das avaliações com contagem | Sim | Não | Não | Não |
| A página inteira em HTML ou Markdown | Sim | Não | Não | Não |
Faz scraping de mais do que as avaliações do Google? O Web Unlocker devolve qualquer página do mesmo jeito, pelo mesmo preço.
O Web Unlocker não tem alertas próprios. Seu script abre a página de cada local uma vez por dia: quando a nota ou o número de avaliações mudou, há avaliações novas para ler. 1.000 locais saem por $0.98 por dia.
As ferramentas de monitoramento de avaliações começam em $65 por mês por local.
Sua própria verificação custa $0.001.
Uma requisição por local: envie o endereço do Google Maps do local, receba a página renderizada, leia a nota, a contagem de estrelas, os tópicos e as avaliações. A demo acima roda o mesmo parser.
Preencha o formulário acima. A chave chega por e-mail em até um dia útil.
google.com/maps/search/ mais o local e a cidade dele, e o país de onde abrir.
A página traz a nota, a contagem de cada estrela, os tópicos com suas contagens e as principais avaliações, cada uma com autor, estrelas, data e texto.
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));Precisa dos locais primeiro? O scraper de Google Maps lista todos os locais de uma categoria em uma cidade, e cada um é mais uma página aqui.
Uma conta, uma rede de proxies, um ecossistema. Escolha o produto de que a tarefa precisa.
Faz scraping dos locais também? Veja o scraper de Google Maps, os scrapers do Reddit e do YouTube, ou todas as ferramentas de web scraping.
Envie o endereço do local no Google Maps ao Web Unlocker: google.com/maps/search/ mais o nome e a cidade. Ele abre a página em um navegador real, a partir do país que você escolher, e a devolve com a nota, a contagem de cada estrela, os tópicos que as pessoas mencionam e as principais avaliações, cada uma com autor, estrelas, data e texto. O código acima faz exatamente isso.
Envie o endereço do local ao Web Unlocker com a biblioteca requests e leia os campos na página. A aba Python acima é um script completo, testado na API real.
Sim. A página de um local no Google Maps é pública e carrega sem login. O Web Unlocker a devolve como o navegador de um visitante a vê, sem projeto no Google Cloud, sem chave de API e sem aprovação.
Duas oficiais. A Google Places API devolve a nota de um local e até 5 avaliações, a $25 por 1.000 chamadas. A Google Business Profile API devolve todas as avaliações, de graça, mas só dos locais de que você é dono ou que administra. Para as avaliações de outros locais além dessas 5, com as notas por estrela, o Web Unlocker devolve a própria página do Maps.
Esse é o limite documentado: o Place Details devolve no máximo 5 avaliações por local, ordenadas por relevância, no SKU que custa $25 por 1.000 chamadas. Ele dá a nota média e nenhuma divisão por estrelas. A página do Maps traz a contagem de cada estrela e os tópicos das avaliações, e o Web Unlocker devolve a página inteira.
As 3 principais avaliações com o texto completo, mais a nota, a contagem de cada nível de estrelas e os tópicos com suas contagens. Desde setembro de 2026, o Google Maps mostra a lista completa de avaliações de um local só depois de um login, e é isso que toda ferramenta que lê a página pública recebe. Para os seus próprios locais, a Google Business Profile API lista todas as avaliações de graça.
Não pela página pública: o Google mantém a lista completa e as opções de ordenação atrás do login do Google. O que continua público é o resumo e as principais avaliações, e isso volta como uma página por um preço.
A ordenação também fica atrás do login. A página traz as principais avaliações. Para pegar as novas, compare o número de avaliações e a nota com a sua última execução: a aba Verificação diária acima faz isso para uma lista de locais.
Sim: quantas notas cada nível de estrelas recebeu, de 5 a 1, para cada local. Franklin Barbecue, em Austin, no dia do nosso teste: 6.053 notas de cinco estrelas, 695 de quatro, 285 de três, 104 de duas e 199 de uma.
Sim, em duas etapas. O scraper de Google Maps lista os locais de uma categoria bloco por bloco, e cada local é mais uma página aqui. 146 dentistas em Miami saíram de 25 páginas de busca; suas 146 páginas de avaliações somam 171 páginas, cerca de 17 centavos no total.
Se você é dono ou administra o perfil, use a Google Business Profile API: ela lista todas as avaliações dos seus locais de graça, 50 por página, depois que o Google aprova o seu projeto. O Web Unlocker é para locais que você não administra.
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.
Menos de $1 por 1.000 páginas, e o mesmo preço para toda página: 1.000 locais com suas avaliações saem por $0.98. 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 locais com suas avaliações.
Não. O Web Unlocker escolhe o IP para você, em mais de 195 países, e abre a página a partir do país que você escolher.
Depende do que você precisa. Apify e Outscraper vendem linhas prontas e cobram cada avaliação. O Web Unlocker devolve a página inteira do Maps por um preço por página, com as notas por estrela e os tópicos que as linhas deixam de fora, e você faz o parse do seu jeito.
A página de um local no Maps é pública e carrega sem login. O Web Unlocker a 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: