Rodei um script de 180 linhas contra o Google Maps e trouxe 196 clínicas de estética de cinco cidades do interior paulista, com telefone, nota, número de avaliações e site. A coleta levou cerca de 4 minutos. Depois cruzei os campos e cheguei no número que não esperava: 80 dessas 196 clínicas não têm site próprio, o que dá 40,8% do total.
A que mais me chamou atenção fica em Sorocaba: 601 avaliações no Google, nota 4,7, verificada. Nenhum site. Quem procura por ela no Google encontra o mapa, o telefone e mais nada.
Abaixo estão os dados abertos, o método e o erro que meu próprio filtro cometeu na primeira rodada.

Como a coleta foi feita
O Google Maps não entrega busca em massa pela interface. Existem duas saídas: raspar a página, que quebra a cada mudança de layout e esbarra em bloqueio, ou usar uma API que já faz esse trabalho. Escolhi a segunda, com o Outscraper, porque o resultado volta estruturado em JSON e não depende de navegador aberto.
O fluxo do script é este:
- Monta uma busca por cidade no formato
clinica de estetica [cidade], com limite de 40 resultados - Dispara as cinco buscas em modo assíncrono e guarda o ID de cada job
- Faz polling a cada 10 segundos até os jobs virarem
Success - Classifica cada registro entre alvo e não alvo pelo campo de site
- Mescla no CSV existente sem sobrescrever quem já estava lá
O passo 5 é o que transforma o script em ferramenta de uso contínuo. A chave de deduplicação é nome + telefone em minúsculas, então rodar de novo na mesma cidade não duplica nada e não apaga a anotação de quem já foi contatado.
const dormir = (ms) => new Promise((r) => setTimeout(r, ms));
async function buscarResultado(chave, jobId, query) {
for (let tentativa = 0; tentativa < 30; tentativa++) {
await dormir(10000);
const resp = await fetch(`https://api.outscraper.cloud/requests/${jobId}`, {
headers: { 'X-API-KEY': chave },
});
const json = await resp.json();
if (json.status === 'Success') return json.data?.[0] ?? [];
if (json.status === 'Failed') return [];
}
return [];
}
Sobre custo: a API é paga por volume de registros e o preço muda por plano. Tentei ler a tabela oficial no dia 07/08/2026 para citar o valor exato e o site devolveu 403 para leitura automatizada, então prefiro não chutar número. O que dá para dizer com segurança é que 200 registros ficam dentro da faixa de teste da maioria dos planos de entrada.
O que os 196 registros mostram
Dados coletados em 31/07/2026, cruzados e verificados em 07/08/2026.
| Tipo de presença | Clínicas | % do total |
|---|---|---|
| Site próprio | 116 | 59,2% |
| Nenhuma presença | 46 | 23,5% |
| Instagram no lugar do site | 23 | 11,7% |
| Link de WhatsApp no lugar do site | 6 | 3,1% |
| 2 | 1,0% | |
| Diretório de terceiros | 2 | 1,0% |
| Agregador de links | 1 | 0,5% |
Os 46 sem nenhuma presença são o caso óbvio. O grupo interessante é o de baixo: 34 clínicas que preencheram o campo "site" no perfil do Google com algo que não é um site. Elas sabem que aquele espaço importa, tentaram resolver e resolveram errado.
O campo com api.whatsapp.com é o mais sintomático. A clínica coloca ali o link do próprio WhatsApp, e quem clica esperando conhecer o trabalho cai direto numa conversa que ninguém pediu.
A lacuna cresce conforme a cidade encolhe
| Cidade | Clínicas | Sem site próprio | % |
|---|---|---|---|
| Sorocaba | 40 | 22 | 55% |
| Bauru | 40 | 20 | 50% |
| São José do Rio Preto | 39 | 17 | 44% |
| Ribeirão Preto | 37 | 14 | 38% |
| Campinas | 40 | 7 | 18% |
Campinas destoa das outras quatro por uma margem grande. Com a mesma busca, o mesmo limite e o mesmo dia de coleta, a cidade tem três vezes menos clínicas descobertas sem site que Sorocaba.
Uma ressalva de método antes de tirar conclusão: o Google ordena por relevância, então os 40 primeiros resultados de Campinas tendem a ser os negócios mais estabelecidos de um mercado maior. A amostra não é aleatória, é o topo da busca. O que o número diz com segurança é que na primeira página de resultados de Campinas quase todo mundo já tem site, e nas outras quatro cidades metade não tem.
O erro que meu primeiro filtro cometeu
A função de classificação original marcava como alvo quem não tinha site ou usava rede social:
function ehAlvo(site) {
if (!site) return true;
const s = site.toLowerCase();
return ['instagram.com', 'linktr.ee', 'facebook.com', 'linkr.bio', 'beacons.ai']
.some((padrao) => s.includes(padrao));
}
Ela devolveu 72 alvos. Quando abri o CSV e olhei os domínios um por um, achei oito registros classificados como "tem site" que não tinham site nenhum: seis com link de WhatsApp e dois apontando para diretórios de profissionais, aqueles portais onde a clínica é só mais uma ficha entre centenas.
Oito em 196 parece pouco. Em porcentagem de alvo, é a diferença entre 36,7% e 40,8%. E em prospecção, cada um desses oito é uma ligação que você não faria.
A correção é uma linha na lista de padrões:
const NAO_E_SITE = [
'instagram.com', 'facebook.com', 'linktr.ee', 'linkr.bio', 'beacons.ai',
'api.whatsapp.com', 'wa.me', 'buscaterapeutas.com.br', 'doctoralia.com.br',
];
A lição que fica para qualquer coleta automatizada: o filtro só é confiável depois que você lê os dados brutos com os próprios olhos pelo menos uma vez. Foi o mesmo cuidado que tomei quando validei um nicho pelo Google Trends, onde a leitura errada de uma curva leva a uma decisão cara.
Quem tem site tem mais avaliação

| Tipo de presença | Clínicas | Média de avaliações | Mediana |
|---|---|---|---|
| Site próprio | 116 | 167 | 98 |
| Instagram no lugar do site | 23 | 78 | 57 |
| Nenhuma presença | 46 | 80 | 38 |
| Link de WhatsApp | 6 | 45 | 36 |
Usei mediana junto com média de propósito. A clínica de 601 avaliações puxa qualquer média para cima sozinha, e a mediana mostra o que acontece com o negócio do meio da lista.
O grupo com site tem mediana de 98 avaliações contra 38 de quem não tem presença nenhuma. Duas vezes e meia mais.
Isso é correlação, não relação de causa, e a distinção importa. Clínica maior tende a ter mais orçamento para site e mais cliente para avaliar. O site não fabrica avaliação sozinho. O que o dado mostra é que a clínica sem site está sistematicamente no grupo de menor reputação registrada, e reputação registrada é o que decide a escolha de quem pesquisa no celular às onze da noite.
A nota, por sinal, não separa ninguém: 4,9 de média nas clínicas sem site contra 4,8 nas com site. O trabalho é bom nos dois grupos. A diferença está em quantas pessoas ficaram sabendo.
O arquivo com os 196 registros
Publiquei a base anonimizada. Tirei nome e telefone das clínicas, porque prospecção é dado de trabalho e não material de divulgação, e mantive o que sustenta a análise: cidade, tipo de presença, nota, número de avaliações, verificação no Google e categoria.
Baixar a base anonimizada (.csv)São 196 linhas com separador ponto e vírgula, abre no Excel e no Google Sheets sem ajuste.
Como refazer isso no seu mercado
O método não tem nada de específico de estética. Três variáveis mudam:
- Termo de busca. Use o nome que o Google Maps usa na categoria, não o nome técnico do setor. "clinica de estetica" traz mais que "estetica avancada"
- Cidades. Rode uma por vez e compare. A diferença entre Campinas e Sorocaba só apareceu porque as cinco foram medidas com o mesmo critério
- Definição de alvo. É a parte que exige julgamento humano. Para vender site, quem usa Instagram é alvo. Para vender tráfego pago, talvez não
O ponto que economiza mais tempo vem depois da coleta: ordene por número de avaliações antes de abordar. Uma clínica com 300 avaliações e sem site tem demanda comprovada e um gargalo evidente. Uma com 8 avaliações tem outro problema, e não é o site.
O mesmo raciocínio de coletar sozinho em vez de comprar lista pronta vale para monitorar concorrente, e eu montei um workflow no n8n que faz isso com preço.
O próximo passo
Pegue sua cidade e seu segmento, rode 40 resultados e conte quantos não têm site. Se a proporção bater perto dos 40% que achei aqui, você tem uma lista de trabalho pronta em vez de uma tarde inteira copiando telefone do Google no caderno.



