Google Maps scraper: API e MCP

Uma Google Maps scraper API executa uma busca limitada de empresas a partir do seu aplicativo ou de um agente. Uma chave de espaço de trabalho com escopo, um orçamento explícito da tarefa e uma chave de idempotência estável cobrem cada nova tentativa. Os resultados são JSON, e um campo ausente permanece vazio.

Antes de começar · Pesquisas ao vivo exigem uma fonte de dados configurada. Os exemplos são identificados. Planos pagos ainda não estão disponíveis.

Criar um trabalho limitado

Conecte uma chave de escopo limitado a REST ou a um cliente HTTP MCP. Estime tarefas, defina orçamentos e obtenha resultados estruturados.

curl -X POST https://mapsscraper.dev/api/v1/jobs \
  -H "Authorization: Bearer $MAPSSCRAPER_API_KEY" \
  -H "Idempotency-Key: dentists-austin-tx-001" \
  -H "X-Max-Units: 1" \
  -H "Content-Type: application/json" \
  -d '{"kind":"search","query":"Dentists in Austin, TX","limit":20,"region":"us"}'

HTTP/1.1 202 Accepted
{"id":"6f1c2b3a-0000-4000-8000-000000000000","status":"queued","reserved":1}

Repita a mesma operação com a mesma chave de idempotência. Uma solicitação alterada com essa chave retorna 409. As tarefas passam por na fila, em execução, concluída, parcial, com falha, cancelada ou incerta. Uma solicitação incerta à fonte de dados exige conciliação em vez de uma repetição paga automática.

O que é uma Google Maps scraper API?

Uma Google Maps scraper API aceita uma categoria e uma área, devolve fichas públicas em JSON e mostra o orçamento máximo da tarefa antes da solicitação. Cada tarefa usa uma chave com escopo e uma chave de idempotência. As avaliações são uma solicitação à parte.

Leia os resultados

Jobs concluídos e parciais mantêm os resultados durante o período de retenção do seu espaço de trabalho. Leia-os página por página com offset e limit; ler resultados armazenados nunca executa uma nova pesquisa.

Exemplo de resposta, resumido. Os valores são ilustrativos, não dados reais de empresas.

{
  "items": [
    {
      "business_id": "sample-business-id",
      "name": "Sample Dental Studio",
      "full_address": "100 Example Ave, Austin, TX 78701",
      "phone_number": "+1 512-555-0100",
      "website": "https://dental.example",
      "type": "Dentist",
      "rating": 4.8,
      "review_count": 214,
      "latitude": 30.2672,
      "longitude": -97.7431,
      "_source": {
        "provider": "live_maps",
        "fetched_at": "2026-11-01T12:00:00Z",
        "website_status": "provided_unverified"
      }
    }
  ],
  "count": 1,
  "offset": 0,
  "next_offset": null,
  "provider": "live_maps",
  "coverage": "bounded_sample",
  "fetched_at": "2026-11-01T12:00:00Z"
}

API de avaliações do Google Maps

Solicite avaliações de um ID da empresa por tarefa, até 100 por página, ordenadas por relevância, mais recentes, nota mais alta ou mais baixa. Cada avaliação inclui texto, nota, data, autor e a resposta do proprietário, quando disponível. Uma página adicional exige tarefa e orçamento próprios.

Extrator de avaliações
POST /api/v1/jobs
Idempotency-Key: reviews-sample-business-001
X-Max-Units: 1

{"kind":"reviews","business_id":"sample-business-id","limit":50,"review_options":{"sort_by":"newest"}}

Exemplo em Python

Com a Google Maps scraper API, estime uma pesquisa, crie o job, aguarde um status final e leia os resultados com a biblioteca requests.

import os
import time
import uuid

import requests

API = "https://mapsscraper.dev/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['MAPSSCRAPER_API_KEY']}"}
task = {"kind": "search", "query": "Dentists in Austin, TX", "limit": 20, "region": "us"}

# An estimate reserves nothing.
units = requests.post(f"{API}/estimate", json=task, headers=HEADERS, timeout=30).json()["units"]

# Keep the key: a retry of the same task must send it again.
key = str(uuid.uuid4())
job = requests.post(
    f"{API}/jobs",
    json=task,
    headers={**HEADERS, "Idempotency-Key": key, "X-Max-Units": str(units)},
    timeout=30,
)
job.raise_for_status()
job_id = job.json()["id"]

while True:
    status = requests.get(f"{API}/jobs/{job_id}", headers=HEADERS, timeout=30).json()["status"]
    if status not in ("queued", "running"):
        break
    time.sleep(5)

if status in ("completed", "partial"):
    page = requests.get(
        f"{API}/jobs/{job_id}/results",
        params={"offset": 0, "limit": 100},
        headers=HEADERS,
        timeout=30,
    ).json()
    for business in page["items"]:  # follow page["next_offset"] for more
        print(business.get("name"), business.get("phone_number"), business.get("website"))

Perguntas sobre a Google Maps scraper API

Documentação
Esta é a Google Places API?

Não. O MapsScraper.dev é um serviço independente e não é afiliado ao Google. Os resultados vêm de uma fonte de dados empresariais de terceiros e usam nosso próprio formato JSON.

Como as solicitações são cobradas?

Na Google Maps scraper API, a maioria das tarefas usa uma unidade. O enriquecimento de contatos em uma busca ou captura de ranking reserva uma unidade a mais por registro solicitado e cobra apenas os registros entregues. Detalhes da empresa usam uma unidade, ou duas com contatos; o enriquecimento usa duas. Defina X-Max-Units como pelo menos a estimativa.

Emails e telefones são garantidos?

Não. A cobertura depende da fonte e da empresa. O enriquecimento pode trazer contatos públicos. Confira dados ausentes ou antigos antes de usá-los.

Recursos

Sua próxima lista começa por um lugar.

Explore o fluxo com exemplos identificados e conecte seu espaço para pesquisas reais.

Explorar exemplo