Google-Maps-Brancheneintraege als JSON Auslesen mit dem Google-Local-Plugin
Google Maps ist eine der reichhaltigsten Quellen fuer lokale Geschaeftsdaten im Web: Namen, Bewertungen, Anzahl der Rezensionen, Kategorien, Adressen, Oeffnungszeiten und Preisniveaus fuer nahezu jedes Geschaeft in jeder Stadt. Das Problem ist, diese Daten in einer nutzbaren Form herauszubekommen. Die offizielle Places-API ist getaktet, hat Kontingentgrenzen und gibt nicht alles preis, was du auf der Karte siehst. Und die Karte selbst zu scrapen bedeutet, gegen eine schwere JavaScript-Anwendung zu kaempfen, IPs zu rotieren und fragile Selektoren zu schreiben, die beim naechsten Layout-Wechsel brechen.
Das neue Google-Local-Plugin entfernt diese ganze Schicht. Du schickst ein Such-Stichwort und bekommst strukturierte JSON-Brancheneintraege zurueck. Dieser Beitrag erklaert, was das Plugin zurueckgibt, wie du es aufrufst und wie du etwas Nuetzliches damit baust.
Was das Google-Local-Plugin Macht
Das Google-Local-Plugin nimmt eine einfache Suchphrase - genau die, die du in Google Maps eingeben wuerdest, etwa coffee shops in chicago oder dentists in berlin - und gibt die lokalen Geschaeftsergebnisse als JSON-Array zurueck. Du brauchst keinen Google-Places-API-Schluessel und parst kein HTML.
Fuer jedes Geschaeft in den Ergebnissen erhaeltst du Felder wie:
position- Rang in den lokalen Ergebnissenname- Geschaeftsnamerating- durchschnittliche Sternebewertungreviews- Anzahl der Rezensionenprice- Preisniveau (sofern Google eines anzeigt)category- Geschaeftstyp, zum Beispiel “Coffee shop”address- Adressehours- Text der Oeffnungszeitenreview_snippet- ein kurzes Zitat aus einer Top-Rezension
Ein einzelner Aufruf liefert bis zu etwa 20 Geschaefte pro Stichwort, was dem entspricht, was Google in einem lokalen Paket fuer eine Suche anzeigt.
Die Anfrage
Der Endpunkt ist ein einzelner POST-Aufruf. Der einzige Pflichtparameter ist keyword. Einige optionale Parameter lassen dich Ort und Sprache steuern:
keyword(Pflicht) - die Suchphrase, zum Beispielcoffee shops in chicagoproxy_country- das Land der Ausgangs-IP als ISO-2-Code (US,GB,DE)gl- das Google-Suchland, ISO-2 in Kleinbuchstaben (us,de,fr)hl- die Sprache der Google-Oberflaeche, Standarden
Hier der einfachste moegliche Aufruf mit curl:
curl -X POST "https://api.scrapeunblocker.com/maps/google-local?keyword=coffee%20shops%20in%20chicago&proxy_country=US&gl=us" \
-H "x-scrapeunblocker-key: YOUR_API_KEY"
Die Parameter proxy_country und gl sind wichtiger, als sie aussehen. Lokale Ergebnisse werden nach Standort personalisiert, daher liefert eine Suche nach “plumbers near me” von einer US-IP mit gl=us ganz andere Geschaefte als dieselbe Suche von einer deutschen IP. Wenn du eine bestimmte Stadt oder ein Land kartierst, setze beide explizit, statt dich auf die Standardwerte zu verlassen.
Die Antwort
Die Antwort ist ein einzelnes JSON-Objekt. Die oberste Ebene sagt dir, wonach gesucht wurde und wie viele Eintraege kamen, und das Array results enthaelt die Geschaefte:
{
"keyword": "coffee shops in chicago",
"proxyCountry": "US",
"resultsCollected": 18,
"results": [
{
"position": 1,
"name": "Example Coffee Roasters",
"rating": 4.7,
"reviews": 1284,
"price": "$$",
"category": "Coffee shop",
"address": "123 W Example St, Chicago, IL",
"hours": "Open - Closes 8 PM",
"review_snippet": "Great espresso and friendly staff."
}
]
}
Da die Struktur stabil ist, kannst du sie direkt in eine Datenbankzeile, eine Tabelle oder einen DataFrame abbilden - ganz ohne HTML-Bereinigung.
Aufruf aus Python
Du brauchst kein SDK, um das Plugin zu nutzen - jeder HTTP-Client funktioniert. Hier ein kleines Beispiel mit requests, das eine Suche ausfuehrt und eine saubere Tabelle ausgibt:
import requests
API_KEY = "YOUR_API_KEY"
URL = "https://api.scrapeunblocker.com/maps/google-local"
params = {
"keyword": "coffee shops in chicago",
"proxy_country": "US",
"gl": "us",
}
resp = requests.post(URL, params=params, headers={"x-scrapeunblocker-key": API_KEY})
resp.raise_for_status()
data = resp.json()
for biz in data["results"]:
print(f"{biz['position']:>2}. {biz['name']:<30} "
f"{biz.get('rating', '-')}* ({biz.get('reviews', 0)} reviews) "
f"- {biz.get('category', '')}")
Wenn du die offiziellen Werkzeuge bevorzugst: ScrapeUnblocker liefert SDKs fuer Python, Node.js, Ruby und PHP, und das Plugin ist auch ueber das Dashboard und die API-Referenz verfuegbar. Das Python-Paket installierst du mit pip install scrapeunblocker, und es liest deinen Schluessel aus der Umgebungsvariable SCRAPEUNBLOCKER_KEY, sodass du den Header nicht von Hand uebergeben musst.
Eine Ganze Kategorie ueber Mehrere Staedte Sammeln
Am nuetzlichsten ist das Plugin, wenn du es in einer Schleife nutzt. Angenommen, du willst einen Datensatz von Cafes ueber mehrere US-Staedte. Du fuehrst eine Suche pro Stadt aus und sammelst die Zeilen:
import csv
import requests
API_KEY = "YOUR_API_KEY"
URL = "https://api.scrapeunblocker.com/maps/google-local"
cities = ["chicago", "seattle", "austin", "denver"]
rows = []
for city in cities:
params = {"keyword": f"coffee shops in {city}", "proxy_country": "US", "gl": "us"}
r = requests.post(URL, params=params, headers={"x-scrapeunblocker-key": API_KEY})
r.raise_for_status()
for biz in r.json()["results"]:
rows.append({"city": city, **biz})
with open("coffee_shops.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["city", "position", "name", "rating",
"reviews", "price", "category", "address"])
writer.writeheader()
for row in rows:
writer.writerow({k: row.get(k, "") for k in writer.fieldnames})
Das ergibt eine einzige CSV mit Geschaeften aus jeder Stadt, bereit zur Analyse. Dasselbe Muster funktioniert fuer jede Kategorie - Restaurants, Fitnessstudios, Kanzleien, Baumaerkte - und jede Gruppe von Orten.
Was du Damit Bauen Kannst
Lokale Geschaeftsdaten haben viele praktische Einsatzzwecke:
- Lead-Generierung. Ziehe jedes Geschaeft einer Kategorie und Stadt und reichere es dann mit einer Website- oder E-Mail-Suche an. Die Felder
category,addressundnamereichen meist aus, um eine Kontaktliste anzulegen. - Wettbewerbs- und Marktbeobachtung. Verfolge Bewertung und Rezensionszahlen einer Reihe von Geschaeften ueber die Zeit, um zu sehen, wer in einem Markt an Zugkraft gewinnt.
- Lokale-SEO-Recherche. Sieh, wer im lokalen Paket fuer ein Stichwort in einer bestimmten Stadt rankt und wie sich deren Bewertungen mit deinen vergleichen.
- Marktkartierung. Zaehle, wie viele Geschaefte eines Typs es ueber Regionen hinweg gibt, um unterversorgte Gebiete zu erkennen.
Da jedes Ergebnis rating und reviews enthaelt, kannst du einen Markt nach Beliebtheit sortieren oder Geschaefte unterhalb einer Rezensionsschwelle in einer einzigen Codezeile herausfiltern.
Praktische Tipps
Ein paar Dinge, die du im Kopf behalten solltest:
- Sei praezise bei den Stichwoertern. “Coffee” liefert Rauschen; “specialty coffee shops in chicago” liefert eine kompakte, relevante Liste. Das Stichwort ist die gesamte Abfrage, behandle es also wie eine echte Google-Maps-Suche.
- Setze den Standort bewusst. Nutze
proxy_countryundglgemeinsam, wenn dir die Region der Ergebnisse wichtig ist. Sie auf den Standardwerten zu lassen, ist fuer schnelle Tests in Ordnung, aber nicht fuer reproduzierbare Datensaetze. - Behandle fehlende Felder. Nicht jeder Eintrag hat einen
price- oderhours-Wert, nutze also.get()mit einem Standardwert statt direkter Indexierung. - Respektiere die Daten. Brancheneintragsdaten sind oeffentlich, aber wie du sie speicherst und nutzt, unterliegt weiterhin Datenschutz- und Plattformregeln. Halte deine Anwendungsfaelle legitim - Marktforschung, Lead-Generierung, Analytik - und befolge das geltende Recht.
Haeufige Fragen
Brauche ich einen Google-Places-API-Schluessel? Nein. Das Plugin gibt die Google-Maps-Eintragsdaten direkt als JSON zurueck, ohne Google-API-Schluessel und ohne Google-Kontingent pro Anfrage, das du verwalten musst.
Wie viele Ergebnisse liefert ein Aufruf? Bis zu etwa 20 Geschaefte pro Stichwort, was der Groesse eines typischen lokalen Ergebnissatzes bei Google entspricht.
Kann ich Ergebnisse fuer ein bestimmtes Land oder eine Sprache bekommen?
Ja. Nutze proxy_country fuer die Ausgangs-IP, gl fuer das Google-Suchland und hl fuer die Oberflaechensprache. Setze sie explizit fuer konsistente, standortgenaue Ergebnisse.
Was, wenn ich eine Seite parsen muss, die Google Local nicht abdeckt? Fuer beliebige Seiten nutze den Standard-Scraping-Endpunkt, um Inhalte abzurufen und zu parsen, und reserviere das Google-Local-Plugin fuer kartenartige Geschaeftssuchen.
Fazit
Das Google-Local-Plugin macht aus einer muehsamen Scraping-Aufgabe - einer JavaScript-lastigen Karte, personalisierten Ergebnissen und wechselndem HTML - einen einzigen API-Aufruf, der sauberes JSON zurueckgibt. Du schickst ein Stichwort, fixierst optional den Standort und bekommst strukturierte Brancheneintraege zurueck, die du direkt in eine Datenbank oder Tabelle kippen kannst.
Wenn du es ausprobieren willst: Das Plugin ist im ScrapeUnblocker-Dashboard aktiv und neben den anderen Plugins in der Entwicklerdokumentation dokumentiert. Richte es auf eine Kategorie und eine Stadt und sieh dir an, wie das lokale Paket als Daten aussieht.
ScrapeUnblocker kostenlos testen
Über 95 % Erfolgsquote · ab 0,55 € pro 1.000 Aufrufe · 500 kostenlose Anfragen bei der Registrierung.