Google-Maps-Ergebnisse mit Python scrapen

Orte, Bewertungen, Rezensionszahlen und Kontaktdaten von Google Maps als JSON, warum die Places API teuer wird, und was eine Maps-Suche kostet. August 2026.

Du willst die Unternehmen, die Google Maps für eine Query zeigt: Namen, Bewertungen, Rezensionszahlen, Adressen, Telefonnummern, Websites. Dieser Post deckt die drei Wege ab, sie zu bekommen, mit echten Zahlen zu den Kosten jedes Wegs, und einem Python-Beispiel, das wir vor der Veröffentlichung ausgeführt haben.

Warum nicht die offizielle Places API?

Der offizielle Weg existiert und ist für manche Produkte die richtige Antwort, aber drei Eigenschaften überraschen die Leute genau an dem Punkt, an dem es zu spät ist, den Kurs zu ändern:

  1. Preis. Text Search auf der Places API kostet $32,00 pro 1.000 Anfragen im Pro-Tier, geprüft auf Googles Preisseite am 20. Oktober 2026, mit 5.000 kostenlosen Calls im Monat. Der Stückpreis sinkt erst ab über 100.000 monatlichen Anfragen spürbar.
  2. Ergebnis-Deckel. Eine Text Search liefert höchstens 60 Orte über drei Seiten. Bei Queries im Stil “Restaurants in einer Stadt” weiß die Karten-Oberfläche weit mehr, als die API dir gibt.
  3. Lizenzierung. Places-Daten kommen mit Einschränkungen beim Speichern und Anzeigen. Wenn dein Use Case eine Leadliste oder ein Datensatz ist, sind die Nutzungsbedingungen die eigentliche Grenze, nicht der Code.

Die DIY-Alternative, einen Headless-Browser über die Maps-Oberfläche zu steuern, scheitert aus denselben Gründen wie das Scrapen der Google-Suche: IP-Blocks, rotierendes, verschleiertes Markup, und ein Scroll-to-Load-Ergebnispanel, das pro Query eine echte Browser-Session braucht. Das ist ein Wartungsprojekt, kein Skript.

Die Version, die funktioniert

Schicke die Query an eine API, der die Browser und das Parsing gehören, und bekomme JSON zurück:

import requests

API_KEY = "faf_live_..."  # dein FastAF-Key

resp = requests.get(
    "https://api.fastaf.co/v1/maps",
    params={
        "query": "best pizza in Naples Italy",
        "page": 0,
    },
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=60,
)
resp.raise_for_status()

for place in resp.json()["search_results"]:
    print(f'{place["rating"]}  ({place["reviews"]:>6})  {place["title"]}')

Wir haben genau diese Anfrage beim Schreiben dieses Posts ausgeführt (August 2026). Sie lieferte 20 Orte für 5 Credits, der erste war L’Antica Pizzeria da Michele: Bewertung 4,3, 54.724 Rezensionen, Preisspanne, Adresse, Telefonnummer, Website, Öffnungsstatus und GPS-Koordinaten, alles als reine JSON-Felder. Kein Browser, keine Proxys, kein Parsing.

Welche Felder bekommst du pro Ort?

Jeder Eintrag in search_results trägt die Unternehmensdaten, die das Maps-Panel zeigt:

Feld Beispiel aus unserem Testlauf
title L’Antica Pizzeria da Michele
rating / reviews 4,3 / 54724
type, types Pizza restaurant, Italian restaurant, …
price €1–10
address Via Cesare Sersale, 1, 80139 Napoli NA, Italy
phone +39 392 …
website die eigene Website des Unternehmens
open_state Closed · Opens 10:30 AM
gps_coordinates Breitengrad / Längengrad
place_id, data_id stabile Identifikatoren für Folgeabfragen

Zwei Parameter über query hinaus, die sich zu kennen lohnen: ll pinnt die Suche auf Koordinaten und Zoomstufe (@40.85,14.26,14z), sodass du den Kartenausschnitt kontrollierst statt den Query-Text raten zu lassen, und page bewegt sich durch die Ergebnisseiten, ungefähr 20 Orte pro Seite, über den Deckel von 60 Orten der offiziellen API hinaus.

Was kostet eine Maps-Suche?

Eine Google-Maps-Suche kostet bei FastAF 5 Credits, genauso viel wie eine Google-Search-Anfrage. Mit dem Scale-Paket ($99 für 300.000 Credits) sind das 60.000 Maps-Suchen, oder $1,65 pro 1.000. Dieselben 60.000 Suchen auf der offiziellen Places API Text Search zu $32,00 pro 1.000 kommen auf $1.760 (55.000 kostenpflichtig, nach den 5.000 kostenlosen Calls des Monats), und liefern jeweils höchstens 60 Orte.

Der Free Tier sind 500 Credits ohne Karte, das sind 100 Maps-Suchen, genug, um die Feldabdeckung an deinen echten Queries zu prüfen, bevor du irgendetwas entscheidest. Fehlgeschlagene Anfragen werden nie berechnet: Credits werden beim Start der Anfrage reserviert und zurückgegeben, wenn kein Ergebnis kommt.

Leadlisten: die praktische Schleife

Der häufigste Einsatz dieses Endpoints ist lokale Leadgenerierung. Die Schleife: eine Kategorie in einer Stadt suchen, nach Feldern filtern, und du hast in Minuten eine qualifizierte Liste:

def places(query, pages=3):
    for page in range(pages):
        resp = requests.get(
            "https://api.fastaf.co/v1/maps",
            params={"query": query, "page": page},
            headers={"Authorization": f"Bearer {API_KEY}"},
            timeout=60,
        )
        resp.raise_for_status()
        yield from resp.json()["search_results"]

# Unternehmen mit echter Zugkraft, aber ohne Website: klassische Web-Agentur-Prospects.
leads = [
    p for p in places("dentist in Austin TX")
    if p.get("reviews", 0) > 50 and not p.get("website")
]

Drei Seiten einer Query sind 15 Credits. Ein Sweep über 50 Städte in derselben Kategorie zu je drei Seiten sind 750 Credits, ungefähr $0,29 mit dem Growth-Paket: Die Follow-up-E-Mails kosten dich mehr als die Daten.