Tony Wang5 Min. LesezeitGoogle Maps scrapen in 2026: API- und Python-Guide
Drei Wege, Google-Maps-Einträge und Reviews 2026 zu scrapen — DIY-Python, No-Code oder strukturierte API: was jeder liefert, und die Rechtsgrundlagen.
Der schnellste Weg, Google Maps in 2026 zu scrapen, ist der Aufruf einer strukturierten Maps-API, die normalisiertes JSON zurückgibt — Firmenname, Adresse, Telefon, Website, Bewertung, Reviews und Koordinaten —, statt selbst einen Headless-Browser zu steuern. Du kannst zwar weiterhin einen DIY-Scraper in Python bauen, aber das Infinite Scroll von Maps, häufige Layout-Änderungen und Anti-Bot-Mechanismen machen die Wartung teuer. Dieser Guide behandelt alle drei Ansätze: was jeder liefert, wo jeder scheitert und die rechtlichen Grundlagen.
Ist es legal, Google Maps zu scrapen?
Das Scrapen öffentlicher Google-Maps-Daten (Firmennamen, Adressen, Bewertungen, Reviews) fällt in dieselbe allgemeine Kategorie wie anderes Scraping im öffentlichen Web. In den USA entschied das Verfahren hiQ Labs v. LinkedIn, dass der Zugriff auf öffentlich verfügbare Daten nicht gegen den Computer Fraud and Abuse Act verstößt. Trotzdem verbieten Googles Nutzungsbedingungen automatisierten Zugriff, sodass dir weiterhin Account-Sperren oder Unterlassungsschreiben drohen können, und personenbezogene Daten lösen Datenschutzgesetze wie DSGVO und CCPA aus. Faustregeln:
- Sammle nur öffentliche Firmendaten; vermeide personenbezogene Daten und alles hinter einem Login.
- Respektiere Rate-Limits und beeinträchtige den Dienst nicht.
- Prüfe Googles Nutzungsbedingungen und deine eigenen Compliance-Anforderungen.
Das ist keine Rechtsberatung — im Zweifel sprich mit einem Anwalt.
Option 1: DIY in Python (und warum es scheitert)
Ein selbst gebauter Scraper bedeutet meist einen Headless-Browser (Playwright oder Selenium), weil Maps die Ergebnisse per JavaScript rendert und weitere per Infinite Scroll nachlädt:
import csv
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
page = p.chromium.launch().new_page()
page.goto("https://www.google.com/maps/search/coffee+shops+in+Austin")
# scroll the results panel until no new cards load (Maps caps ~120 per search)
panel = page.locator('div[role="feed"]')
for _ in range(10):
panel.evaluate("el => el.scrollBy(0, el.scrollHeight)")
page.wait_for_timeout(1500)
rows = [
{"name": a.get_attribute("aria-label"), "url": a.get_attribute("href")}
for a in page.locator('div[role="feed"] a[href*="/maps/place/"]').all()
]
with open("places.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=["name", "url"])
w.writeheader(); w.writerows(rows)
# ...then add proxies, CAPTCHA handling, geographic tiling, and a detail request per place.
In einer Demo funktioniert es und macht dir dann in der Produktion Ärger:
- Infinite Scroll — du musst das Scrollen des Ergebnispanels skripten, bis keine neuen Karten mehr nachladen.
- Das ~120-Ergebnisse-Limit — Maps liefert höchstens ~100–200 Orte pro Suchbereich, tiefere Abdeckung bedeutet also, das Gebiet in geografische Kacheln zu unterteilen und per Place ID zu deduplizieren.
- Layout-Änderungen — Google ändert das DOM und deine Selektoren brechen still und leise.
- Anti-Bot — CAPTCHAs und IP-Sperren zwingen dich zu Proxy-Rotation und Fingerprinting.
- Skalierung — ein Browser pro Query ist langsam, also endest du damit, ein Browser-Cluster zu betreiben und zu überwachen.
Der größte Kostenblock ist nicht der erste Scrape — es ist, ihn am Leben zu halten.
Option 2: Fertige Scraper-Tools
No-Code-Extraktoren und Marketplace-Actors übernehmen den Browser für dich und exportieren CSV oder JSON. Sie sind super für einmalige Listen, aber weniger praktisch, wenn du Maps-Daten innerhalb eines Produkts oder einer Pipeline brauchst, auf einem Zeitplan und mit vorhersehbaren Feldern.
Option 3: Eine strukturierte Google-Maps-API
Für wiederholbare, produktinterne Workflows gibt dir eine Google-Maps-Scraping-API einen dokumentierten Endpoint, der normalisiertes JSON zurückgibt — kein Browser, keine Selektoren, kein Proxy-Pool zu betreiben. Suche nach Query und Standort:
curl -X POST https://api.crawlora.net/api/v1/google/map/search \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "coffee shops in Austin, TX", "limit": 20}'
Derselbe Aufruf in Python:
import requests
resp = requests.post(
"https://api.crawlora.net/api/v1/google/map/search",
headers={"x-api-key": "YOUR_API_KEY"},
json={"query": "coffee shops in Austin, TX", "limit": 20},
)
for place in resp.json()["data"]:
print(place["name"], place.get("rating"), place.get("address"))
Eine Antwort ist normalisiertes JSON, das du direkt speichern kannst (die gezeigten Felder sind beispielhaft — prüfe die Docs für das aktuelle Schema):
{
"code": 200,
"msg": "OK",
"data": [
{
"name": "Example Coffee",
"place_id": "ChIJ...",
"category": ["coffee_shop"],
"address": "123 Example St, Austin, TX",
"phone": "+1 512-555-0100",
"website": "https://example.com",
"rating": 4.6,
"reviews": 318,
"latitude": 30.2672,
"longitude": -97.7431
}
]
}
Brauchst du das vollständige Profil für einen bestimmten Ort? Reichere es mit dem Place-Details-Endpoint an:
curl https://api.crawlora.net/api/v1/google/map/place/CHIJ_PLACE_ID \
-H "x-api-key: $CRAWLORA_API_KEY"
Was du sammeln kannst
Wo das öffentliche Profil sie preisgibt, lassen sich die Felder in einige Gruppen einteilen:
- Firmenidentität — Name, Kategorie, Place ID und die Maps-URL.
- Kontakt — Adresse, Telefon, Website und Öffnungszeiten.
- Standort — Breiten- und Längengrad für Karten und Umkreissuche.
- Social Proof — durchschnittliche Bewertung und Anzahl der Reviews, plus die Reviews selbst. Die offizielle Places API begrenzt Reviews auf etwa fünf pro Ort, sofern dir der Eintrag nicht selbst gehört, sodass eine Sentiment-Analyse über viele Unternehmen hinweg eine dedizierte Review-Extraktion braucht.
Führe es auf einem Zeitplan erneut aus und speichere eine Zeile pro Ort pro Durchlauf, um Bewertungen und Präsenz über die Zeit zu verfolgen.
Grenzen und häufige Herausforderungen
Ein paar Google-Maps-Realitäten, um die du herumplanen solltest:
- Das ~120-Ergebnisse-Limit. Maps begrenzt die Ergebnisse pro Suchbereich, tiefe Abdeckung einer Stadt oder Kategorie bedeutet also, das Gebiet in kleinere Suchen zu kacheln und per Place ID zu deduplizieren.
- Personalisierung. Ergebnisse variieren nach Standort und Verlauf; Locale-Parameter reduzieren das, beseitigen es aber nicht.
- Reviews sind bei der offiziellen API limitiert. Place Details liefert ~5 Reviews pro Ort; vollständiges Review-Mining braucht einen dedizierten Scraper, und Namen/Texte der Reviewer sind potenziell personenbezogene Daten.
- Anti-Bot bei DIY. Direktes Scraping trifft auf Infinite Scroll, CAPTCHAs und Fingerprinting; eine strukturierte API fängt Scrollen, Proxy-Routing und Retries hinter dem Endpoint ab.
Wo das zum Einsatz kommt
Strukturierte Maps-Daten treiben einige gängige Workflows an:
- Lead-Generierung — baue lokale Firmenlisten auf und reichere ein CRM an. Siehe die Use Cases Google-Maps-Lead-Generierung und Lead-Generierungs-API.
- Lokale Marktanalyse — kartiere Wettbewerberdichte, Bewertungen und Website-Präsenz nach Gebiet.
- Lokale SEO-Recherche — verfolge Kategorien und Bewertungen über Standorte hinweg.
Quellen
Leg los mit dem Sammeln
Probier es zuerst kostenlos aus: jage eine beliebige öffentliche URL durch den kostenlosen Web Scraper, oder prüfe mit dem Anti-Bot-Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
Teste den Such-Endpoint im Playground, prüfe das Response-Schema in den API-Docs und sieh dir die Credit-Kosten auf der Preisseite an. Kombiniere lokale Firmeneinträge mit LinkedIn-Firmendaten für die B2B-Lead-Anreicherung oder mit Google Trends, um die Nachfrage einer Kategorie nach Region einzuschätzen. Lass dieselben Marken- und Kategoriebegriffe durch wie man Brave Search scrapt laufen, um zu sehen, wer in den Web-Ergebnissen rankt, nicht nur auf der Karte. Zur Toolauswahl siehe die besten Google-Maps-Scraping-APIs in 2026; für das große Ganze wie man eine Web-Scraping-API auswählt; und für die Regeln ist Web Scraping in 2026 legal?.
Häufig gestellte Fragen
Kann ich Google Maps scrapen, ohne blockiert zu werden?
Mit einer strukturierten API werden Scrollen, Proxy-Routing und Browser-Ausführung hinter dem Endpoint erledigt, sodass du dich nicht selbst um Sperren kümmerst. Ein DIY-Scraper trifft auf Infinite Scroll, CAPTCHAs und Fingerprinting und braucht deshalb einen Headless-Browser, Proxys und ein sorgfältiges Tempo.
Kann ich Google-Maps-Reviews scrapen?
Ja, wo sie öffentlich sind. Die offizielle Places API begrenzt Reviews auf etwa fünf pro Ort, sofern dir der Eintrag nicht selbst gehört, sodass die Sentiment-Analyse über viele Unternehmen hinweg eine dedizierte Review-Extraktion braucht. Behandle Namen und Texte der Reviewer als potenziell personenbezogene Daten und sammle nur, was du brauchst.
Warum bekomme ich nur etwa 120 Ergebnisse pro Suche?
Google Maps bindet Ergebnisse an einen Suchbereich und begrenzt sie auf grob 100–200 pro Query. Um tiefer zu gehen, unterteile das Gebiet in kleinere geografische Kacheln oder mehrere Queries und dedupliziere per Place ID; eine gute Maps-API übernimmt das, damit du keine Abdeckung verlierst.
Welche Daten bekomme ich aus Google Maps?
Öffentliche Firmenfelder: Name, Kategorie, Adresse, Telefon, Website, Öffnungszeiten, Bewertung, Anzahl der Reviews, Place ID und Koordinaten, wo verfügbar, plus Reviews über eine dedizierte Review-Extraktion.
Wie oft kann ich die Daten aktualisieren?
So oft, wie dein Plan und die Grenzen verantwortungsvoller Nutzung es zulassen. Die meisten Teams fahren geplante Snapshots und vergleichen jeden Durchlauf mit dem vorherigen.
Ist das die offizielle Google Places API?
Nein. Das extrahiert öffentliche Google-Maps-Daten und ist unabhängig von Googles offizieller Places API, die eingeschränkt und kontingentiert ist, Reviews auf etwa fünf pro Ort begrenzt und bei großem Umfang teuer ist.