Como Extrair Dados do Google Maps com Python

Última atualização em April 17, 2026

Se você já tentou montar uma lista de vendas segmentada, explorar novos mercados ou comparar concorrentes, sabe o quanto o Google Maps é uma verdadeira mina de ouro. Mas aqui está o ponto crucial: com mais de 1,5 bilhão de buscas “perto de mim” por mês e 76% das pessoas que fazem buscas locais visitando um negócio em até 24 horas (), a demanda por dados comerciais atualizados e baseados em localização nunca esteve tão alta.

Se você atua em vendas, marketing ou operações, extrair dados estruturados do Google Maps pode ser a diferença entre uma abordagem fria e um lead qualificado com alta chance de conversão.

Tenho anos de experiência em SaaS e automação e já vi de perto como equipes usam Python — e agora ferramentas com IA como — para transformar o Google Maps em um ativo estratégico. Neste guia, vou mostrar exatamente como extrair dados do Google Maps com Python em 2026, passo a passo, com código, dicas de conformidade e uma comparação com soluções sem código. Se você domina Python ou só quer o caminho mais rápido até dados acionáveis, este conteúdo é para você.

O que significa extrair dados do Google Maps com Python?

Vamos começar pelo básico: extrair dados do Google Maps com Python significa capturar programaticamente informações comerciais — como nome, endereço, avaliações, comentários, telefone e coordenadas — diretamente do Google Maps, para depois analisar, filtrar e exportar esses dados para uso em negócios.

city-data-tablet-connection.webp

Existem duas formas principais de fazer isso:

  1. Google Maps Places API: é o caminho oficial e licenciado. Você usa uma chave de API para consultar os servidores do Google e receber dados estruturados em JSON. É estável, previsível e, em geral, compatível com as regras, mas tem limites de uso e custos.
  2. Web scraping do HTML: você automatiza um navegador (com ferramentas como Playwright ou Selenium) para carregar o Google Maps, fazer buscas e interpretar a página renderizada. É mais flexível, mas também mais frágil — o Google altera a estrutura do site com frequência, e extrair o HTML pode violar os termos da plataforma.

Campos de dados mais comuns que você pode extrair:

  • Nome da empresa
  • Categoria/tipo
  • Endereço completo (incluindo cidade, estado, CEP e país)
  • Latitude e longitude
  • Número de telefone
  • URL do site
  • Avaliação e quantidade de comentários
  • Faixa de preço
  • Status do estabelecimento (aberto/fechado)
  • Horário de funcionamento
  • Place ID (identificador exclusivo do Google)
  • URL do Google Maps

Por que isso importa? Porque esses campos alimentam tudo, desde geração de leads e planejamento de território até análise de concorrência e pesquisa de mercado. O segredo é buscar os dados certos para o seu objetivo — não sair extraindo tudo sem critério.

Por que equipes de vendas e marketing extraem dados do Google Maps usando Python

Vamos ao que interessa. Por que tantas equipes de vendas e marketing estão tão obcecadas por dados do Google Maps em 2026?

  • Geração de leads: crie listas altamente segmentadas de negócios locais, com contatos e avaliações, para campanhas de prospecção.
  • Planejamento de território: mapeie territórios de vendas, áreas de entrega ou regiões de atendimento com base na densidade real de empresas e seus tipos.
  • Monitoramento de concorrentes: acompanhe localização, avaliações e comentários dos concorrentes ao longo do tempo para identificar tendências e oportunidades.
  • Pesquisa de mercado: analise categorias de negócios, horários de funcionamento e sentimento das avaliações para orientar estratégias de go-to-market.
  • Escolha de ponto comercial: em imóveis e varejo, avalie possíveis localizações com base em serviços próximos, fluxo de pessoas e concorrência.

Impacto no mundo real: segundo o , 92% das equipes de vendas pretendem ampliar investimentos em IA e dados, e equipes que usam dados locais e segmentados conseguem taxas de conversão até 8× maiores do que aquelas que dependem de listas frias genéricas (). Um estudo sobre geração de leads para franquias mostrou US$ 15 de nova receita para cada US$ 1 investido em listas de leads baseadas no Google Maps.

Relacionando objetivos de negócio aos campos do Google Maps:

Objetivo de negócioCampos do Google Maps necessários
Lista local de leadsnome, endereço, telefone, site, categoria
Planejamento de territórionome, lat/lng, business_status, opening_hours
Benchmark de concorrentesnome, rating, userRatingCount, priceLevel, reviews
Escolha de ponto comercialcategory, lat/lng, review density, openingDate
Insights de sentimento/cardápioreviews, editorialSummary, photos, types
Abordagem por e-mail/telefonenationalPhoneNumber, websiteUri (e depois enriquecer, se necessário)

Como preparar seu extrator do Google Maps em Python: ferramentas e requisitos

Antes de começar a extrair dados, você precisa configurar seu ambiente Python e reunir as ferramentas certas. Em 2026, você vai precisar do seguinte:

1. Instale Python e as bibliotecas necessárias

Versão recomendada do Python: 3.10 ou superior.

Instale as principais bibliotecas:

1pip install \
2  requests==2.33.1 httpx==0.28.1 \
3  beautifulsoup4==4.14.3 lxml==6.0.3 \
4  pandas==2.3.3 \
5  selenium==4.43.0 playwright==1.58.0 \
6  googlemaps==4.10.0 google-maps-places==0.8.0 \
7  schedule==1.2.2 APScheduler==3.11.2 \
8  python-dotenv==1.2.2 tenacity==9.1.4
9playwright install chromium

Para que servem:

  • requests, httpx: requisições HTTP (chamadas de API)
  • beautifulsoup4, lxml: parsing de HTML (para web scraping)
  • pandas: limpeza, análise e exportação de dados
  • selenium, playwright: automação de navegador (para scraping de HTML)
  • googlemaps, google-maps-places: clientes da API do Google Maps
  • schedule, APScheduler: agendamento de tarefas
  • python-dotenv: carregar chaves de API com segurança a partir de arquivos .env
  • tenacity: lógica de repetição para tratamento de erros

2. Obtenha uma chave da API do Google Maps (para extração via API)

  • Acesse o .
  • Crie ou selecione um projeto.
  • Ative o faturamento (obrigatório, mesmo no uso da camada gratuita).
  • Ative “Places API (New)” em APIs & Services > Library.
  • Vá em Credentials > Create Credentials > API Key.
  • Restrinja a chave a APIs e IPs específicos por segurança.
  • Guarde a chave em um arquivo .env (nunca coloque isso diretamente no código):
1GOOGLE_MAPS_API_KEY=sua_chave_api_real_aqui

Observação: em março de 2025, o Google deixou de oferecer um crédito universal de US$ 200 por mês. Em vez disso, passou a disponibilizar limites gratuitos mensais por faixa de API (veja a ).

Como extrair dados do Google Maps usando Python: guia passo a passo

Vamos dividir as duas abordagens principais — baseada em API e scraping do HTML — para que você escolha a que melhor se encaixa na sua necessidade.

Abordagem 1: usar a Google Maps Places API (recomendado)

Passo 1: instalar e importar as bibliotecas necessárias

1import os
2import httpx
3import pandas as pd
4from dotenv import load_dotenv

Passo 2: carregar sua chave de API com segurança

1load_dotenv()
2API_KEY = os.environ["GOOGLE_MAPS_API_KEY"]

Passo 3: montar sua consulta de busca

Você vai usar o endpoint Text Search para encontrar negócios que correspondam ao seu critério.

1URL = "https://places.googleapis.com/v1/places:searchText"
2FIELD_MASK = ",".join([
3    "places.id", "places.displayName", "places.formattedAddress",
4    "places.location", "places.rating", "places.userRatingCount",
5    "places.priceLevel", "places.types",
6    "places.nationalPhoneNumber", "places.websiteUri",
7    "nextPageToken",
8])

Passo 4: fazer a requisição à API

1def text_search(query, lat, lng, radius=3000, min_rating=4.0):
2    body = {
3        "textQuery": query,
4        "minRating": min_rating,  # filtro no lado do servidor
5        "includedType": "restaurant",
6        "openNow": False,
7        "pageSize": 20,
8        "locationBias": {
9            "circle": {
10                "center": {"latitude": lat, "longitude": lng},
11                "radius": radius,
12            }
13        },
14    }
15    headers = {
16        "Content-Type": "application/json",
17        "X-Goog-Api-Key": API_KEY,
18        "X-Goog-FieldMask": FIELD_MASK,  # sempre defina isso!
19    }
20    r = httpx.post(URL, json=body, headers=headers, timeout=30)
21    r.raise_for_status()
22    return r.json()

Passo 5: lidar com a paginação e coletar os resultados

1def collect_all_results(query, lat, lng, radius=3000, min_rating=4.0):
2    results = []
3    next_page_token = None
4    while True:
5        data = text_search(query, lat, lng, radius, min_rating)
6        places = data.get('places', [])
7        results.extend(places)
8        next_page_token = data.get('nextPageToken')
9        if not next_page_token:
10            break
11    return results

Passo 6: exportar os dados com Pandas

1df = pd.DataFrame(collect_all_results("coffee shops in Brooklyn", 40.6782, -73.9442))
2df.to_csv("brooklyn_coffee_shops.csv", index=False)

Dicas de especialista:

  • Sempre use o cabeçalho X-Goog-FieldMask para controlar custos. Se você solicitar comentários ou fotos, o preço por 1.000 requisições pode subir de US$ 5 para US$ 25 ().
  • Use filtros no lado do servidor (como minRating, includedType, locationBias) para não desperdiçar créditos com resultados irrelevantes.
  • Armazene os valores de place_id para deduplicação e atualizações futuras.

Abordagem 2: fazer scraping do HTML do Google Maps (para uso educacional ou pontual)

Aviso: o Google Maps é uma aplicação de página única. Você precisa usar automação de navegador (Playwright ou Selenium), e extrair o HTML pode violar os termos do Google. Use isso para pesquisa, não para produção.

Passo 1: instalar o Playwright e abrir o navegador

1from playwright.sync_api import sync_playwright
2import time, re
3def scrape_maps(query, max_results=100):
4    with sync_playwright() as pw:
5        browser = pw.chromium.launch(headless=True)
6        ctx = browser.new_context(
7            user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
8            locale="en-US",
9        )
10        page = ctx.new_page()
11        page.goto("https://www.google.com/maps", timeout=60_000)
12        page.fill("#searchboxinput", query)
13        page.click('button[aria-label="Search"]')
14        page.wait_for_selector('div[role="feed"]')
15        feed = page.locator('div[role="feed"]')
16        prev = 0
17        while True:
18            feed.evaluate("el => el.scrollBy(0, el.scrollHeight)")
19            time.sleep(2)
20            count = page.locator('div[role="feed"] > div > div[jsaction]').count()
21            if count == prev or count >= max_results:
22                break
23            prev = count
24            if page.locator("text=You've reached the end of the list").count():
25                break
26        rows = []
27        cards = page.locator('div[role="feed"] > div > div[jsaction]')
28        for i in range(cards.count()):
29            c = cards.nth(i)
30            name = c.locator("div.fontHeadlineSmall").inner_text() if c.locator("div.fontHeadlineSmall").count() else ""
31            rating_el = c.locator('span[role="img"]').first
32            raw = rating_el.get_attribute("aria-label") if rating_el.count() else ""
33            m = re.search(r"([\d.]+)\s+stars?\s+([\d,]+)\s+Reviews", raw or "")
34            rating  = float(m.group(1)) if m else None
35            reviews = int(m.group(2).replace(",", "")) if m else None
36            rows.append({"name": name, "rating": rating, "reviews": reviews})
37        browser.close()
38        return rows

Dicas:

  • O Google randomiza classes CSS a cada poucas semanas, então esse código pode exigir atualizações frequentes.
  • Use atrasos semelhantes aos humanos e evite extrair dados rápido demais para reduzir o risco de bloqueio.
  • Nunca tente burlar CAPTCHAs ou o sistema SearchGuard do Google — isso pode gerar risco jurídico.

Evite extração cega: como direcionar com precisão os dados que você precisa

Extrair tudo é receita para perder tempo e criar conjuntos de dados inchados. Veja como focar apenas no que realmente importa:

  • Gere listas de URLs segmentadas: use os próprios filtros de busca do Google Maps (categoria, localização, avaliação, aberto agora) para afunilar os resultados antes de extrair.
  • Use correspondência por expressão: pesquise tipos exatos de negócios ou palavras-chave específicas (por exemplo, “padaria vegana em Austin”).
  • Filtros de localização: especifique cidade, bairro ou até coordenadas e raio para maior precisão.
  • Filtragem no lado do servidor (API): use minRating, includedType e locationBias no corpo da requisição.
  • Filtragem no lado do cliente (Python): depois da extração, use o pandas para filtrar empresas com avaliação acima de 4.0, mais de 50 comentários ou categorias específicas.

Exemplo: filtrar apenas restaurantes em Manhattan com avaliação acima de 4.0

1df = pd.DataFrame(results)
2filtered = df[(df['rating'] >= 4.0) & (df['types'].apply(lambda x: 'restaurant' in x))]
3filtered.to_csv("manhattan_top_restaurants.csv", index=False)

Usando bibliotecas Python para organizar e exportar dados do Google Maps

Depois de extrair os dados, é hora de limpar, analisar e exportar tudo para sua equipe.

Limpando e estruturando dados com Pandas

1import pandas as pd
2df = pd.read_json("brooklyn_restaurants.json")
3df = (
4    df.dropna(subset=["name", "address"])
5      .drop_duplicates(subset=["place_id"])
6      .assign(
7          name=lambda d: d["name"].str.strip(),
8          phone=lambda d: d["phone"].astype(str)
9              .str.replace(r"\D", "", regex=True)
10              .str.replace(r"^1?(\d{10})$", r"+1\1", regex=True),
11          rating=lambda d: pd.to_numeric(d["rating"], errors="coerce"),
12          user_ratings_total=lambda d: pd.to_numeric(
13              d["user_ratings_total"], errors="coerce"
14          ).fillna(0).astype("int32"),
15      )
16)

Analisando e resumindo dados

Exemplo: média de avaliação por bairro

1by_neighborhood = (
2    df.groupby("neighborhood", as_index=False)
3      .agg(avg_rating=("rating", "mean"),
4           n_places=("place_id", "nunique"),
5           median_reviews=("user_ratings_total", "median"))
6      .sort_values("avg_rating", ascending=False)
7)

Exportando para Excel ou CSV

1df.to_csv("brooklyn_top.csv", index=False)
2df.to_excel("brooklyn_top.xlsx", index=False, sheet_name="Top Rated")

Conjuntos de dados grandes? Use o formato Parquet para ganhar velocidade e eficiência de armazenamento:

1df.to_parquet("brooklyn_top.parquet", compression="zstd")

Thunderbit: alternativa com IA ao extrator do Google Maps em Python

Agora, se você está pensando: “isso dá muito trabalho para montar uma simples lista de leads”, você não está sozinho. Foi exatamente por isso que criamos o — um web scraper sem código e com IA que torna a extração de dados do Google Maps (e muito mais) algo tão simples quanto alguns cliques.

Por que escolher o Thunderbit?

  • Sem programação nem chave de API: basta abrir a , acessar o Google Maps e clicar em “AI Suggest Fields”.
  • Detecção de campos por IA: a IA do Thunderbit lê a página e sugere as colunas certas — nome, endereço, avaliação, telefone, site e muito mais.
  • Extração de subpáginas: quer enriquecer sua tabela com dados de cada site de empresa? O Thunderbit pode visitar cada subpágina e coletar informações extras automaticamente.
  • Exportação para Excel, Google Sheets, Airtable ou Notion: nada de ficar lutando com pandas — é só clicar em “Export” e seus dados já estão prontos para a equipe.
  • Extração agendada: configure tarefas recorrentes para monitorar concorrentes ou atualizar sua lista de leads automaticamente.
  • Manutenção zero: a IA do Thunderbit se adapta a mudanças no site, então você não fica corrigindo script quebrado o tempo todo.

google-maps-restaurant-scraper.webp

Thunderbit versus fluxo em Python:

EtapaExtrator em PythonThunderbit
Instalação das ferramentas30–60 min (Python, pip, bibliotecas)2 min (Extensão Chrome)
Configuração da chave de API10–30 min (Cloud Console)Não é necessário
Seleção de camposCódigo manual, field masksAI Suggest Fields (1 clique)
Extração de dadosEscrever/rodar scripts, lidar com errosClique em “Scrape”
Exportaçãopandas para CSV/ExcelExportar para Excel/Sheets/Notion
ManutençãoAtualizações manuais quando o site mudaIA se adapta automaticamente

Bônus: o Thunderbit conta com a confiança de mais de , e o plano gratuito permite extrair até 6 páginas (ou 10 com bônus de teste) sem custo.

Como se manter em conformidade: termos de uso do Google Maps e ética no scraping

Aqui é onde muitos tutoriais em Python ficam perigosamente desatualizados. Em 2026, você precisa saber o seguinte:

  • Os Termos da Plataforma Google Maps §3.2.3 proíbem de forma rígida scraping, cache ou exportação de dados fora das APIs oficiais (). A única exceção: valores de latitude/longitude podem ser armazenados por até 30 dias; Place IDs podem ser guardados indefinidamente.
  • Usuários da API estão vinculados por contrato: se você usa uma chave de API, aceitou os termos do Google — mesmo que esteja lidando apenas com dados públicos.
  • Contornar barreiras técnicas (CAPTCHAs, SearchGuard) agora pode configurar uma possível violação da DMCA §1201, com risco de penalidades criminais ().
  • GDPR e leis de privacidade: se você coletar dados pessoais (e-mails, telefones, nomes de avaliadores) do Google Maps, precisa ter base legal e respeitar solicitações de exclusão. A autoridade francesa CNIL multou a KASPR em €200.000 em 2024 por extração de contatos do LinkedIn ().
  • Boas práticas:
    • Prefira a Places API sempre que possível.
    • Limite a taxa de requisições (≤10 QPS para API, 1–2 req/s para scraping de HTML).
    • Nunca burle CAPTCHAs ou bloqueios técnicos.
    • Não redistribua dados pessoais extraídos.
    • Respeite solicitações de exclusão e opt-out.
    • Revise sempre as leis locais — GDPR, CCPA e outras estão sendo aplicadas de forma ativa.

Resumo: se conformidade é uma preocupação, fique com a API e reduza ao mínimo os dados que você coleta. Para a maioria dos usuários de negócios, uma ferramenta sem código como o Thunderbit diminui o risco operacional (sem chave de API, sem redistribuição).

Agendando e automatizando sua extração do Google Maps com Python

Se você precisa manter os dados sempre atualizados — por exemplo, para monitoramento semanal de concorrentes ou atualização mensal de listas de leads — automação é sua aliada.

Agendamento simples com schedule

1import schedule, time
2from my_scraper import run_job
3schedule.every().day.at("03:00").do(run_job, query="restaurants in Brooklyn")
4schedule.every(6).hours.do(run_job, query="coffee shops in Manhattan")
5while True:
6    schedule.run_pending()
7    time.sleep(30)

Agendamento em nível de produção com APScheduler

1from apscheduler.schedulers.background import BackgroundScheduler
2from apscheduler.triggers.cron import CronTrigger
3sched = BackgroundScheduler(timezone="America/New_York")
4sched.add_job(
5    run_job,
6    CronTrigger(hour=3, minute=15, jitter=600),  # 3:15 AM ± 10 min
7    kwargs={"query": "restaurants in Brooklyn"},
8    id="brooklyn_daily",
9    max_instances=1,
10    coalesce=True,
11    misfire_grace_time=3600,
12)
13sched.start()

Dicas para automação segura

  • Adicione jitter aleatório ao agendamento para evitar padrões previsíveis.
  • No scraping de HTML, nunca ultrapasse 1–2 requisições por segundo.
  • No uso da API, monitore sua cota e configure alertas de faturamento.
  • Registre sempre os erros e mantenha um arquivo de “dead-letter” para requisições com falha.

Bônus do Thunderbit: com o Thunderbit, você pode agendar extrações recorrentes diretamente na interface — sem código, sem cron jobs, sem configuração de servidor.

Principais conclusões: extração de dados do Google Maps eficiente, segmentada e em conformidade

Vamos recapitular o essencial:

  • O Google Maps é a principal fonte de dados de localização comercial, sustentando tudo, de geração de leads a pesquisa de mercado.
  • A extração com Python oferece flexibilidade e controle, mas também exige configuração, manutenção e atenção à conformidade — especialmente com o avanço das medidas anti-bot do Google e da fiscalização legal.
  • A extração via API é o caminho mais seguro e escalável para a maioria das equipes. Use sempre field masks e filtros no lado do servidor para controlar custos.
  • O scraping de HTML é frágil e arriscado — use apenas em pesquisas pontuais e nunca burle barreiras técnicas.
  • Direcione os dados com precisão: use correspondência por expressão, filtros de localização e fluxos com pandas para extrair apenas o necessário.
  • O Thunderbit é o caminho mais rápido para quem não programa: com IA, sem configuração, exportação instantânea e agendamento embutido.
  • Conformidade importa: respeite os termos do Google, as leis de privacidade e os limites de requisição para evitar dores de cabeça jurídicas.

Para mais tutoriais e dicas, confira o e nosso .

FAQs

1. É legal extrair dados do Google Maps com Python em 2026?

Extrair dados do Google Maps pela API oficial é permitido dentro dos termos do Google, desde que você respeite as cotas e não redistribua dados restritos. Já o scraping do HTML do Google Maps é explicitamente proibido pelos Termos de Uso e traz risco jurídico, especialmente se você burlar barreiras técnicas ou coletar dados pessoais sem consentimento. Sempre verifique as leis locais (GDPR, CCPA etc.) e siga as melhores práticas de conformidade.

2. Qual é a diferença entre usar a API do Google Maps e fazer scraping do HTML?

A API é estável, licenciada e feita para extração de dados, mas exige chave de API e está sujeita a cotas e custos. O scraping de HTML usa automação de navegador para capturar dados da página renderizada, mas é frágil (o site muda com frequência), pode violar os termos e envolve mais risco jurídico. Para a maioria dos usos empresariais, a API é o caminho recomendado.

3. Quanto custa extrair dados do Google Maps usando Python em 2026?

A precificação da Places API do Google é por 1.000 requisições e varia de US$ 5 (Essentials) a US$ 25 (Enterprise+Atmosphere), dependendo dos campos solicitados. Existem limites gratuitos mensais (10.000 para Essentials, 5.000 para Pro, 1.000 para Enterprise), mas extrações em grande escala podem acumular custos rapidamente. Use sempre field masks e filtros no lado do servidor para controlar os gastos.

4. Como o Thunderbit se compara aos extratores do Google Maps baseados em Python?

O Thunderbit é um web scraper sem código, com IA, que permite extrair dados do Google Maps — e muito mais — sem programação, chave de API ou manutenção. É ideal para equipes de vendas e marketing que querem exportar rápido e com confiabilidade para Excel, Google Sheets, Airtable ou Notion. Para usuários técnicos que precisam de lógica personalizada, Python oferece mais flexibilidade, mas exige mais configuração e gestão de conformidade.

5. Como posso automatizar a extração recorrente de dados do Google Maps?

Com Python, use bibliotecas de agendamento como schedule ou APScheduler para executar seu extrator em intervalos definidos (diariamente, semanalmente etc.). Adicione jitter aleatório para evitar detecção e monitore sua cota de API. Com o Thunderbit, você pode agendar extrações recorrentes diretamente na interface — sem código nem configuração de servidor.

Pronto para transformar o Google Maps em uma superpotência para vendas e marketing? Seja você fã de Python ou alguém em busca da solução sem código mais rápida, as ferramentas já estão disponíveis em 2026. Experimente o para uma extração instantânea com IA — ou coloque a mão na massa e mergulhe na API. De qualquer forma, que suas listas de leads estejam sempre atualizadas, seus exports limpos e suas campanhas cheias de prospects locais com alta conversão. Boa extração!

Saiba mais

Ke
Ke
CTO @ Thunderbit. Ke is the person everyone pings when data gets messy. He's spent his career turning tedious, repetitive work into quiet little automations that just run. If you've ever wished a spreadsheet could fill itself in, Ke has probably already built the thing that does it.
Topics
Extrair Google Maps com pythonExtrator do Google Maps em PythonExtrair dados do Google Maps usando python
Sumário

Experimente a Thunderbit

Extraia leads e outros dados em apenas 2 cliques. Com tecnologia de IA.

Obter Thunderbit É grátis
Extraia dados usando IA
Transfira dados facilmente para Google Sheets, Airtable ou Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week