Google Geocoding API: REQUEST_DENIED, OVER_QUERY_LIMIT und ZERO_RESULTS
Jeder Status der Google Geocoding API mit seiner üblichen Ursache und Lösung, die Texte von error_message, die mit REQUEST_DENIED kommen, und was Geocoding ohne Google kostet.
Das Feld status
Der Geocoding-Webdienst antwortet auch dann mit HTTP 200, wenn eine Anfrage scheitert; das Ergebnis steht im Feld status, mit einer optionalen error_message. Google weist darauf hin, dass diese Meldung nicht immer vorhanden ist und ihr Wortlaut sich ändern kann; prüfen Sie im Code also status, und schreiben Sie error_message ins Log.
| status | Bedeutung | Lösung |
|---|---|---|
OK | Mindestens ein Ergebnis. | – |
ZERO_RESULTS | Die Anfrage hat funktioniert und nichts gefunden. | Siehe unten. |
REQUEST_DENIED | Die Anfrage wurde abgelehnt. | error_message lesen; siehe unten. |
OVER_DAILY_LIMIT | Meist ein fehlender oder ungültiger Schlüssel, eine nicht eingerichtete Abrechnung, ein selbst gesetztes Nutzungslimit oder ein Zahlungsmittel, das nicht mehr gültig ist. | Schlüssel und Abrechnung in Google Cloud prüfen. |
OVER_QUERY_LIMIT | Ein Kontingent ist aufgebraucht. | Langsamer werden, oder das Kontingent erhöhen. |
INVALID_REQUEST | Meist fehlt address, components oder latlng. | Prüfen, ob der Parameter gesendet und richtig kodiert wird. |
UNKNOWN_ERROR | Ein Fehler bei Google. | Noch einmal versuchen. |
REQUEST_DENIED und seine Meldungen
- «This API project is not authorized to use this API.» Die Geocoding API ist im Google-Cloud-Projekt des Schlüssels nicht aktiviert. Aktivieren Sie sie unter APIs & Dienste; die Aktivierung der Maps JavaScript API schliesst sie nicht ein.
- «The provided API key is invalid.» Der Schlüssel ist vertippt, gelöscht oder aus einem anderen Projekt. Kopieren Sie ihn noch einmal von der Seite mit den Anmeldedaten.
- «You must enable Billing on the Google Cloud Project …» Jede API der Google Maps Platform braucht ein Rechnungskonto, auch im kostenlosen Rahmen.
- «API keys with referer restrictions cannot be used with this API.» Ein auf Websites beschränkter Schlüssel wurde an den Geocoding-Webdienst geschickt, der für Server gedacht ist. Verwenden Sie auf einem Server einen zweiten Schlüssel, der auf IP-Adressen beschränkt ist. Im Browser verwenden Sie die Klasse Geocoder der Maps JavaScript API mit dem Schlüssel der Website.
- Gar kein Schlüssel ergibt ebenfalls REQUEST_DENIED. Sehen Sie sich die URL an, die Ihr Code sendet; eine leere Umgebungsvariable ist eine häufige Ursache.
Änderungen an Schlüsseln und Einschränkungen können einige Minuten brauchen, bis sie gelten.
OVER_QUERY_LIMIT
Google erlaubt für die Geocoding API 3'000 Abfragen pro Minute und Projekt, Client- und Serverseite zusammengezählt, und Sie können selbst tiefere Grenzen setzen. Ist ein Kontingent erreicht, antwortet die API nicht mehr, bis es wieder beginnt; Tageskontingente beginnen um Mitternacht pazifischer Zeit neu. Verteilen Sie Massenaufträge über die Zeit, speichern Sie Ergebnisse im Rahmen der Bedingungen zwischen, und prüfen Sie auf der Seite mit den Kontingenten des Projekts, ob eine Grenze zu tief gesetzt ist.
ZERO_RESULTS
- Die Adresse gibt es nicht, oder sie ist so geschrieben, dass Google sie nicht erkennt: ein fehlender Ort, ein Strassenname in einer anderen Sprache, eine Wohnungs- oder c/o-Zeile.
- Ein Filter
components(Land, Postleitzahl), der der Adresse widerspricht. - Beim Rückwärts-Geocoding ein Punkt auf dem Meer, oder Filter
result_type, die nichts übrig lassen.
Was Geocoding kostet
Seit März 2025 gibt Google pro Projekt 10'000 kostenlose Geocoding-Anfragen im Monat und verlangt danach USD 5 pro 1'000, mit tieferen Preisen bei grossen Mengen. Seine Bedingungen beschränken zudem, wie lange Sie die Ergebnisse behalten dürfen (Koordinaten höchstens 30 Tage). Bei einem Filialfinder oder einer Liste von Kundenadressen summiert sich beides.
Dienste auf OpenStreetMap-Daten kosten weniger und lassen Sie die Ergebnisse behalten, dafür gibt es in manchen Regionen weniger Hausnummern. Geocodieren Sie vor einem Wechsel eine Stichprobe Ihrer eigenen Adressen mit beiden, und vergleichen Sie.
Weg von Google
Die Antwortformate unterscheiden sich; der Code, der das Ergebnis liest, ändert sich also. Mit der Nominatim-API von overpass.ch:
// Google: results[0].geometry.location.lat / .lng, results[0].formatted_address const url = "https://api.overpass.ch/v1/IHR_SCHLÜSSEL/nominatim/search?" + new URLSearchParams({ q: address, format: "jsonv2", limit: 1, addressdetails: 1 }); const res = await fetch(url); if (!res.ok) throw new Error((await res.json()).message); const [hit] = await res.json(); if (!hit) console.log("nichts gefunden"); // Google: ZERO_RESULTS else console.log(+hit.lat, +hit.lon, hit.display_name);
import requests
r = requests.get("https://api.overpass.ch/v1/IHR_SCHLÜSSEL/nominatim/search",
params={"q": address, "format": "jsonv2", "limit": 1}, timeout=10)
r.raise_for_status() # Fehler sind hier HTTP-Status, kein Feld status
hits = r.json()
if hits:
print(float(hits[0]["lat"]), float(hits[0]["lon"]), hits[0]["display_name"])
Für die Suche beim Tippen ersetzt die Photon-API auf denselben Daten Place Autocomplete. Beide stehen auf der Geocoding-Seite, mit einer Live-Demo.
Geocoding von overpass.ch
Suche, Suche beim Tippen und Rückwärts-Geocoding auf OpenStreetMap-Daten. 100'000 Anfragen im Monat sind kostenlos, die Tarife beginnen bei einem Bruchteil des Google-Preises, und Sie dürfen die Ergebnisse speichern.