Faça scraping dos resultados de busca do Google Maps em um navegador real e receba todos os locais da página: nome, nota, avaliações, categoria, endereço, horários e coordenadas. 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
Pronto para suas próprias buscas? Obtenha uma chave de API ou agende uma demo.
Conte um pouco sobre sua equipe e receba:
Toda busca no Google Maps para em cerca de 60 locais, no app e na API. Divida a cidade em blocos: cada bloco é mais uma página pelo mesmo preço, e a lista continua crescendo.
25 buscas por bloco, uma página cada, custam
Gologin Web Unlockercerca de $0.02
Google Places APIcerca de $0.80
A API oficial devolve os campos que o Google escolhe para ela. A página do Maps traz mais, e o Web Unlocker devolve a página inteira.
| O que você obtém | Google Places API | |
|---|---|---|
| 1.000 locais com telefone e site | Cerca de $1.10 | Cerca de $1.75 |
| Notas divididas por estrelas, de 5 a 1 | Sim | Não, só a média |
| Tópicos das avaliações com contagem | Sim | Não |
| Link de reserva online | Sim | Não, só um sim ou não |
| Guardar os resultados | Sem restrições de nossa parte | Só IDs de locais |
Faz scraping de mais do que o Google Maps? O Web Unlocker devolve qualquer página do mesmo jeito, pelo mesmo preço.
O Google Maps ordena os locais conforme a origem da busca. Escolha um país, uma região ou uma cidade, e o Web Unlocker carrega o mapa de lá.
Pronto para buscar da cidade dos seus clientes? Obtenha sua chave de API e requisições grátis.
Uma requisição por busca: envie o endereço do Maps, receba a página renderizada, leia os locais. 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 a sua consulta, e o país, a região ou a cidade de onde buscar.
Cada local é um cartão na página, com nome, nota, avaliações, endereço e horários à vista.
GOLOGIN_SCRAPING_API_KEY=your_key node maps-search.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst search = 'dentists in Miami';
const params = new URLSearchParams({
url: `https://www.google.com/maps/search/${encodeURIComponent(search)}?hl=en&ucbcb=1`,
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 },
});
const { data } = await response.json();
const text = (value) => value?.replaceAll('&', '&').replaceAll(''', "'").replaceAll('"', '"');
const places = data.html
.split('role="article"')
.slice(1)
.map((card) => ({
name: text(card.match(/class="hfpxzc" aria-label="([^"]+)"/)?.[1]),
rating: card.match(/>([1-5]\.\d)</)?.[1],
reviews: card.match(/>\(([\d,]+)\)</)?.[1],
lat: card.match(/!3d(-?[\d.]+)/)?.[1],
lng: card.match(/!4d(-?[\d.]+)/)?.[1],
}));
console.table(places);pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python maps_search.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport html as entities
import os
import re
from urllib.parse import quote
import requests
search = "dentists in Miami"
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
params={
"url": f"https://www.google.com/maps/search/{quote(search)}?hl=en&ucbcb=1",
"render_js": "true",
"wait": "9000",
"geo": "us",
"format": "json",
},
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
timeout=90,
)
html = response.json()["data"]["html"]
def find(pattern, card):
match = re.search(pattern, card)
return entities.unescape(match.group(1)) if match else None
for card in html.split('role="article"')[1:]:
print(
find(r'class="hfpxzc" aria-label="([^"]+)"', card),
find(r">([1-5]\.\d)<", card),
find(r">\(([\d,]+)\)<", card),
find(r"!3d(-?[\d.]+)", card),
find(r"!4d(-?[\d.]+)", card),
)GOLOGIN_SCRAPING_API_KEY=your_key node maps-tiles.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst query = 'dentists';
const center = { lat: 25.775, lng: -80.23 };
const step = 0.03;
const found = new Map();
async function tile(lat, lng) {
const params = new URLSearchParams({
url: `https://www.google.com/maps/search/${query}/@${lat},${lng},15z?hl=en&ucbcb=1`,
render_js: 'true',
wait: '9000',
geo: 'us',
format: 'json',
});
for (let attempt = 0; attempt < 3; attempt += 1) {
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
if (response.ok) return (await response.json()).data.html;
await new Promise((resolve) => setTimeout(resolve, 10000));
}
return '';
}
for (let row = -2; row <= 2; row += 1) {
for (let col = -2; col <= 2; col += 1) {
const html = await tile((center.lat + row * step).toFixed(4), (center.lng + col * step).toFixed(4));
for (const card of html.split('role="article"').slice(1)) {
const name = card.match(/class="hfpxzc" aria-label="([^"]+)"/)?.[1];
if (name) found.set(name, { name, lat: card.match(/!3d(-?[\d.]+)/)?.[1], lng: card.match(/!4d(-?[\d.]+)/)?.[1] });
}
console.log(`tile ${row},${col}: ${found.size} places so far`);
}
}
console.table([...found.values()]);Precisa clicar, rolar ou abrir a aba de avaliações antes? O Cloud Browser dá ao seu código o navegador inteiro.
Uma página de busca lista até 7 locais, e a página de cada local acrescenta o telefone e o site. Com um preço por página, 1.000 locais com contatos saem por cerca de $1.10.
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 1.000 locais com telefone e site
Preços publicados pela concorrência
Web Unlocker no plano Growth, $0.98 por 1.000 páginas.
Uma conta, uma rede de proxies, um ecossistema. Escolha o produto de que a tarefa precisa.
Faz scraping de outras lojas também? Veja os scrapers da Amazon, do eBay e do Walmart.
Envie o endereço de busca do Google Maps ao Web Unlocker. Ele abre a página em um navegador real, a partir do país que você escolher, e devolve o HTML renderizado. Cada local fica em um cartão próprio, então um parser curto lê nome, nota, avaliações, categoria, endereço, horários e coordenadas. O código acima faz exatamente isso.
Envie o endereço de busca do Maps ao Web Unlocker com a biblioteca requests e leia os locais no HTML. A aba Python acima é um script completo, com 37 linhas, testado na API real.
Os resultados de busca e as páginas de locais são públicos e carregam sem login. O Web Unlocker os 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.
Cerca de 7 a 11 por página, e nenhuma busca passa de cerca de 60: o Google encerra toda lista nesse ponto, no app e na API. Para uma cidade inteira, busque no mapa bloco por bloco. 25 blocos em Miami retornaram 146 dentistas diferentes por cerca de 2 centavos. A aba Cidade no código acima faz exatamente isso.
Sim. Abra a página de um local nos resultados: ela traz o telefone, o site, o plus code e um link de reserva quando o local tem um. É mais uma requisição pelo mesmo preço.
O Google Maps mostra o site de um local, não o e-mail. O e-mail está nesse site, e o Web Unlocker o abre do mesmo jeito: mais uma página pelo mesmo preço.
Faça o scraping da página do local: ela traz o resumo das avaliações, quantas notas cada nível de estrelas recebeu, os tópicos que as pessoas mencionam com suas contagens e as principais avaliações com autor, estrelas, data e texto completo.
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.
Sim. Defina um país, uma região ou uma cidade, e a página carrega de lá. Os resultados seguem a origem da busca, então a mesma consulta em Miami e em Tóquio retorna locais diferentes.
De 5 a 30 segundos nos nossos testes: o mapa carrega em um navegador real antes de a página voltar.
HTML renderizado, Markdown, texto simples e JSON com os metadados da página.
Menos de $1 por 1.000 páginas, e o mesmo preço para toda página, então 1.000 locais com telefone e site saem por cerca de $1.10. 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 cerca de 1.000 páginas de busca ou 7.000 locais. Depois disso, custa menos de $1 por 1.000 páginas.
Não. O Web Unlocker escolhe o IP para você, em mais de 195 países.
Depende do que você precisa. Apify e Outscraper vendem tabelas prontas por local. O Web Unlocker devolve a página completa do Maps de qualquer cidade por um preço por página, então você fica com todos os campos e faz o parse do seu jeito.
Conte um pouco sobre sua equipe e receba: