Google Maps Scraper API und MCP

Eine Google Maps Scraper API führt eine begrenzte Unternehmenssuche aus Ihrer Anwendung oder von einem Agenten aus. Ein Arbeitsbereichsschlüssel mit begrenztem Umfang, ein ausdrückliches Aufgabenbudget und ein stabiler Idempotenzschlüssel gelten für jeden Wiederholungsversuch. Die Ergebnisse sind JSON, und ein fehlendes Feld bleibt leer.

Vor dem Start · Live-Recherchen benötigen eine eingerichtete Datenquelle. Beispieldaten sind gekennzeichnet. Bezahlte Tarife sind noch nicht verfügbar.

Einen begrenzten Auftrag erstellen

Verbinden Sie einen eingeschränkten Arbeitsbereichsschlüssel mit REST oder einem HTTP-MCP-Client. Schätzen Sie Aufgaben, setzen Sie Budgets und rufen Sie strukturierte Ergebnisse ab.

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}

Wiederholen Sie dieselbe Geschäftsoperation mit demselben Idempotenzschlüssel. Eine geänderte Anfrage mit diesem Schlüssel gibt 409 zurück. Aufträge durchlaufen die Status „In Warteschlange“, „Wird ausgeführt“, „Abgeschlossen“, „Teilweise“, „Fehlgeschlagen“, „Abgebrochen“ oder „Unsicher“. Eine unsichere Anfrage an die Datenquelle erfordert einen Abgleich statt einer automatischen kostenpflichtigen Wiederholung.

Was ist eine Google Maps Scraper API?

Eine Google Maps Scraper API nimmt eine Kategorie und ein Gebiet an, liefert öffentliche Einträge als JSON und zeigt das maximale Aufgabenbudget vor dem Aufruf. Jede Aufgabe nutzt einen begrenzten Schlüssel und einen Idempotenzschlüssel. Bewertungen sind ein eigener Aufruf.

Ergebnisse lesen

Abgeschlossene und teilweise abgeschlossene Jobs behalten ihre Ergebnisse für die Aufbewahrungsdauer Ihres Arbeitsbereichs. Lesen Sie sie seitenweise mit offset und limit; das Lesen gespeicherter Ergebnisse startet nie eine neue Recherche.

Beispielantwort, gekürzt. Die Werte dienen nur zur Veranschaulichung und sind keine echten Unternehmensdaten.

{
  "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"
}

Google Maps Rezensions-API

Fordern Sie pro Aufgabe Rezensionen für eine Unternehmens-ID an, bis zu 100 pro Seite, sortiert nach Relevanz, neueste zuerst, höchster oder niedrigster Sternebewertung. Jede Rezension enthält Text, Sternebewertung, Datum, Verfasser und, falls vorhanden, die Antwort des Inhabers. Eine weitere Seite erfordert eine eigene Aufgabe und ein eigenes Budget.

Rezensionen-Scraper
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"}}

Python-Beispiel

Schätzen Sie eine Suche ab, erstellen Sie den Job, warten Sie auf einen Endstatus und lesen Sie die Ergebnisse der Google Maps Scraper API mit der Bibliothek 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"))

Fragen zur Google Maps Scraper API

Dokumentation
Ist das die Google Places API?

Nein. MapsScraper.dev ist ein unabhängiger Dienst und steht in keiner Verbindung zu Google. Die Ergebnisse stammen aus einer externen Datenquelle für Unternehmensdaten und verwenden unser eigenes JSON-Format.

Wie werden Anfragen abgerechnet?

Die meisten Aufgaben verbrauchen eine Einheit. Kontaktanreicherung bei einer Suche oder einem Ranking-Snapshot reserviert eine weitere Einheit pro angefordertem Datensatz und berechnet nur gelieferte Datensätze. Unternehmensdetails verbrauchen eine Einheit, mit Kontakten zwei; Anreicherung verbraucht zwei. Setzen Sie X-Max-Units mindestens auf die Schätzung.

Sind E-Mail-Adressen und Telefonnummern garantiert?

Nein. Die Abdeckung hängt von Quelle und Unternehmen ab. Optionale Anreicherung kann öffentliche Kontaktdaten liefern. Prüfen Sie fehlende oder veraltete Daten vor der Nutzung.

Ressourcen

Ihre nächste Liste beginnt mit einem Ort.

Erkunden Sie den Ablauf mit gekennzeichneten Beispielen und verbinden Sie Ihren Arbeitsbereich für Live-Recherchen.

Beispiel ansehen