Como Construir um Localizador de Leads B2B com Google Places API e Python
A prospecção manual de prestadores de serviços locais consome horas de trabalho operacional repetitivo. Analisar mapas, copiar dados de contato, verificar sites desatualizados e validar endereços individualmente torna o pipeline comercial lento e propenso a erros.
A automação desse processo por meio de uma aplicação web conectada à API do Google Places permite mapear mercados inteiros em segundos, coletando dados estruturados de potenciais clientes para serviços B2B.
Neste artigo, você entenderá a arquitetura e a implementação prática de uma solução em Python para buscar, extrair e qualificar prestadores de serviços via Google Maps.
1. Arquitetura da Solução
Para construir um localizador de leads sustentável e eficiente, a arquitetura deve equilibrar precisão na extração e economia no consumo de cotas da Google Cloud Platform.
O fluxo técnico se divide em quatro etapas:
- Definição de Raio e Segmento: Coordenadas geográficas (latitude/longitude) e palavras-chave do nicho (ex.: clínicas, oficinas, encanadores).
- Busca Primária (Nearby Search): Obtenção de listas de estabelecimentos locais contendo identificadores únicos (
place_id). - Enriquecimento de Dados (Place Details): Consulta aprofundada para capturar telefone, website, horário de funcionamento e avaliações.
- Persistência e Qualificação: Armazenamento deduplicado e classificação baseada em métricas pré-estabelecidas.
2. Implementação Técnica com Python
Utilizaremos as bibliotecas requests para interação HTTP e pydantic para garantir a integridade dos dados retornados.
Estruturando a Consulta
python
import requests
from typing import List, Dict, Optional
APIKEY = “SUACHAVEGOOGLEMAPS”
BASE_URL = “https://maps.googleapis.com/maps/api/place”
def buscarprestadores(keyword: str, lat: float, lng: float, radius: int = 5000) -> List[Dict]:
endpoint = f”{BASEURL}/nearbysearch/json”
params = {
“location”: f”{lat},{lng}”,
“radius”: radius,
“keyword”: keyword,
“key”: API_KEY
}
response = requests.get(endpoint, params=params)
dados = response.json()
leads = []
for resultado in dados.get("results", []):
leads.append({
"place_id": resultado.get("place_id"),
"nome": resultado.get("name"),
"rating": resultado.get("rating", 0.0),
"total_avaliacoes": resultado.get("user_ratings_total", 0),
"endereco": resultado.get("vicinity")
})
return leads
Enriquecimento de Contato com Place Details
O endpoint de detalhes aprofunda a ficha da empresa, permitindo capturar os canais diretos de comunicação:
python
def extrairdetalhescontato(placeid: str) -> Dict[str, Optional[str]]:
endpoint = f”{BASEURL}/details/json”
params = {
“placeid”: placeid,
“fields”: “formattedphonenumber,internationalphonenumber,website,url”,
“key”: API_KEY
}
response = requests.get(endpoint, params=params)
detalhes = response.json().get("result", {})
return {
"telefone": detalhes.get("formatted_phone_number"),
"website": detalhes.get("website"),
"google_maps_url": detalhes.get("url")
}
Ao limitar o parâmetro fields apenas aos campos estritamente necessários, você reduz o custo por requisição na fatura da API.
3. Qualificação Inteligente dos Leads
Como especialista em IA e engenharia de dados, recomendo não tratar todos os dados extraídos de forma idêntica. Uma aplicação web moderna de prospecção deve aplicar filtros de valor imediato antes de enviar o contato para a equipe comercial:
- Identificação de Oportunidades Técnicas: Empresas sem
websitecadastrado representam oportunidades imediatas para agências de desenvolvimento web e marketing digital. - Score de Reputação: Empresas com nota média inferior a 4.0 ou poucas avaliações podem ser priorizadas para soluções de gestão de reputação ou automação de atendimento.
- Deduplicação Inteligente: Armazene o
place_idcomo chave primária em um banco de dados relacional (como PostgreSQL) para evitar consultas redundantes e custos extras.
4. Otimização de Custos e Escalabilidade
Para escalar a ferramenta e torná-la uma aplicação web multiusuário:
- Implemente Cache com Redis: Salve buscas geográficas por coordenadas e categorias por até 30 dias, evitando chamadas repetidas à API para o mesmo perímetro.
- Filas Assíncronas (Celery / RQ): O enriquecimento de dados deve ocorrer em segundo plano para não travar a interface do usuário.
- Paginação com
next_page_token: A API retorna até 20 resultados por requisição. Trate a paginação com atraso controlado (backoff) para respeitar os limites de ativação do token do Google.
Próximos Passos
Transformar a extração de dados públicos em um fluxo contínuo de inteligência comercial acelera as vendas e reduz o custo de aquisição de clientes.
Se sua empresa precisa de uma aplicação web robusta, integrada a APIs geoespaciais e com automações de dados sob medida para suas regras de negócio, entre em contato para avaliarmos seu projeto técnico em uma consultoria especializada.


