Anleitung

Fehler von Geocoding-APIs erklärt

Was «Access blocked», 403, 429 und 509 bei Nominatim bedeuten, was OVER_QUERY_LIMIT und REQUEST_DENIED bei Google bedeuten, warum geopy nichts zurückgibt, und warum eine Suche keine Hausnummer findet. Jeweils mit der üblichen Ursache und der Lösung.

Sie sehenMeistensLösung
Nominatim: «Access blocked», 403 ForbiddenDie Anfrage verletzt die Nutzungsrichtlinie von nominatim.openstreetmap.org, oft durch einen fehlenden User-Agent.Einen User-Agent senden, der Ihre App nennt, höchstens eine Anfrage pro Sekunde, Antworten zwischenspeichern.
429 Too Many RequestsZu viele Anfragen in kurzer Zeit, oder das Kontingent des Monats ist aufgebraucht.Auf Retry-After warten, langsamer werden, zwischenspeichern.
Nominatim: 509 Bandwidth Limit ExceededMassnahmen des Nominatim-Teams gegen Scraper.Später noch einmal versuchen; für regelmässige Nutzung ein anderer Server.
geopy: GeocoderInsufficientPrivileges, GeocoderRateLimited, ConfigurationErrorgeopy macht aus dem HTTP-Status eine Ausnahme und lehnt Beispiel-User-Agents für Nominatim ab.user_agent setzen, RateLimiter verwenden.
geopy liefert None für jede ZeileRateLimiter schluckt die Fehler.Die Warnungen lesen, oder swallow_exceptions=False setzen.
Google: REQUEST_DENIED, OVER_QUERY_LIMIT, OVER_DAILY_LIMITDie API ist nicht aktiviert, die Abrechnung fehlt, der Schlüssel ist auf Websites beschränkt, oder ein Kontingent ist erreicht.error_message lesen.
Leere Ergebnisse, ZERO_RESULTS, «Unable to geocode»Die Adresse ist nicht in den Daten, oder ein Filter ist zu streng.Nach der Strasse suchen, Filter weglassen, die Schreibweise des Orts prüfen.
Die Suche beim Tippen ist gesperrt oder langsamNominatim verbietet Autovervollständigung; eine Anfrage pro Tastendruck ist zu viel.Einen Dienst verwenden, der dafür gemacht ist, 250 ms nach dem letzten Tastendruck warten.
«has been blocked by CORS policy»Eine Fehlerantwort ohne CORS-Header.Den Statuscode im Netzwerk-Tab ansehen.
400 Bad Request, INVALID_REQUESTEin fehlender oder falsch geschriebener Parameter.Die Meldung lesen; sie nennt den Parameter.

Nominatim: «Access blocked» und 403 Forbidden

Der öffentliche Server unter nominatim.openstreetmap.org wird von der OpenStreetMap Foundation auf gespendeter Hardware betrieben. Andere Apps dürfen ihn im Rahmen seiner Nutzungsrichtlinie verwenden: höchstens eine Anfrage pro Sekunde, ein User-Agent oder Referer, der die App erkennen lässt, Ergebnisse bei Ihnen zwischengespeichert, und keine Autovervollständigung. Verletzt ein Client die Richtlinie, antwortet der Server mit 403 und einer Seite mit dem Titel «Access blocked», die die üblichen Ursachen nennt: eine fehlende Kennung und zu viele Massenanfragen.

  • Ein fehlender oder allgemeiner User-Agent ist die häufigste Ursache. Skripte, die den Standard-Header ihrer HTTP-Bibliothek senden, etwa python-requests/2.32 oder einen leeren, werden schnell gesperrt. Senden Sie einen Header, der Ihre App nennt und sagt, wie man Sie erreicht, etwa User-Agent: shop-locator/1.2 (admin@example.com).
  • Anfragen schneller als eine pro Sekunde, oder dieselbe Abfrage immer wieder, gelten als Missbrauch.
  • Browser senden den Referer der Seite, der die Website erkennen lässt. Eine Seite mit Referrer-Policy: no-referrer sendet keinen.

Eine Sperre endet, sobald der Client korrigiert ist. Bleibt sie bestehen, bittet die Sperrseite darum, an nominatim@openstreetmap.org zu schreiben. Die Einzelheiten, mit Code für curl, Python und JavaScript, stehen in der Anleitung Nominatim: «Access blocked», 403 und 429.

429 Too Many Requests

Der Dienst begrenzt die Anfragen pro Sekunde oder pro Minute, oder die Anfragen des Monats sind aufgebraucht. Die meisten Dienste senden einen Header Retry-After mit den Sekunden, die Sie warten müssen.

  • Warten Sie so lange, wie Retry-After sagt, und senden Sie dann erneut. Wiederholen Sie nicht sofort in einer Schleife: Das hält den Client über dem Limit und kann aus einem 429 eine Sperre machen.
  • Speichern Sie Antworten zwischen. Viele Apps geocodieren dieselben Adressen immer wieder.
  • Für das Geocoding einer Liste in grosser Menge takten Sie die Anfragen in einem Thread, statt sie parallel zu senden.

Nominatim: 509 Bandwidth Limit Exceeded

Im Februar 2026 geriet das öffentliche Nominatim unter extreme Last durch anonyme Scraper, verteilt auf mehr als 100'000 IP-Adressen, wie das Operations-Team von OpenStreetMap berichtete. Die Massnahmen dagegen beantworteten einige normale Clients für ein paar Tage mit 509. Die Betreuer von Nominatim baten darum, es noch einmal zu versuchen, bevor man es meldet, und empfahlen für kommerzielle Apps einen kommerziellen Geocoding-Dienst oder einen eigenen Server (Forumsbeitrag).

Ausnahmen von geopy

geopy wirft für jede Antwort ausser 200 eine Ausnahme. Die häufigsten:

AusnahmeHTTP-StatusMeistens
GeocoderInsufficientPrivileges403Von Nominatim gesperrt, oder ein Schlüssel, der für diese Anfrage nicht erlaubt ist.
GeocoderRateLimited429Zu schnell.
GeocoderQuotaExceeded402Das bezahlte Kontingent ist aufgebraucht.
GeocoderAuthenticationFailure401Falscher oder fehlender Schlüssel.
GeocoderTimedOut408, 503, 504, oder keine Antwort rechtzeitigDer Dienst ist langsam oder überlastet; der Standard-Timeout ist 1 Sekunde.
ConfigurationError–Nominatim mit dem Standard- oder einem Beispiel-user_agent; kommt vor jeder Anfrage.

Die Anleitung geopy: GeocoderInsufficientPrivileges, GeocoderRateLimited und ConfigurationError hat die vollständige Tabelle, die User-Agents, die geopy ablehnt, und Einstellungen für RateLimiter, die funktionieren.

geopy liefert None für jede Zeile

RateLimiter aus geopy.extra.rate_limiter wiederholt eine fehlgeschlagene Anfrage zweimal im Abstand von 5 Sekunden und gibt dann None zurück, statt eine Ausnahme zu werfen (standardmässig swallow_exceptions=True). Ein gesperrtes Skript füllt also eine ganze Spalte mit None, und der Grund steht nur in den Warnungen im Log. Setzen Sie beim Testen swallow_exceptions=False, damit der erste Fehler den Lauf stoppt.

Google Geocoding API: REQUEST_DENIED und OVER_QUERY_LIMIT

Die Google API antwortet mit HTTP 200 und einem Feld status. REQUEST_DENIED heisst, dass die Anfrage abgelehnt wurde, OVER_QUERY_LIMIT, dass ein Kontingent aufgebraucht ist, und OVER_DAILY_LIMIT meist ein fehlender oder ungültiger Schlüssel, eine nicht eingerichtete Abrechnung oder ein Nutzungslimit, das Sie selbst gesetzt haben. Das Feld error_message sagt, was zutrifft, zum Beispiel «This API project is not authorized to use this API.» (die Geocoding API ist im Projekt nicht aktiviert) oder «API keys with referer restrictions cannot be used with this API.» (ein Browser-Schlüssel, der von einem Server gesendet wird). Jeder Status mit seiner Lösung steht in Google Geocoding API: REQUEST_DENIED, OVER_QUERY_LIMIT und ZERO_RESULTS.

Leere Ergebnisse, ZERO_RESULTS und «Unable to geocode»

Die Suche hat funktioniert, aber nichts gefunden. Nominatim antwortet auf eine Suche mit [] und für einen Punkt ohne etwas in der Nähe mit {"error": "Unable to geocode"}; Google antwortet mit ZERO_RESULTS.

  • Die Hausnummer ist nicht in den Daten. Dienste auf OpenStreetMap-Daten kennen nur die dort erfassten Hausnummern; in weiten Teilen Europas sind das die meisten, in anderen Regionen weniger. Suchen Sie nach Strasse und Ort, um die Strasse zu erhalten.
  • Ein Filter ist zu streng: ein Ländercode, ein Begrenzungsrahmen oder ein Typfilter, der den Ort ausschliesst.
  • Die Adresse mischt Sprachen oder alte Namen, oder setzt die Postleitzahl in einer strukturierten Suche ins falsche Feld.
  • Ein Tippfehler in einem strukturierten Feld. Freitext verzeiht mehr als getrennte Felder.

Suche beim Tippen

Die Nutzungsrichtlinie des öffentlichen Nominatim verbietet Autovervollständigung, auch aus dem Browser, und seine Suche ist nicht für Wortteile gemacht. Eine Anfrage pro Tastendruck verbraucht auch Limits pro Sekunde schnell. Verwenden Sie einen Dienst, der dafür gebaut ist, etwa Photon, und warten Sie in Ihrem Code nach dem letzten Tastendruck etwa 250 ms, beginnen Sie ab drei Buchstaben, und verwerfen Sie Antworten, die eintreffen, nachdem eine neuere Anfrage gesendet wurde.

«has been blocked by CORS policy»

Der Browser blockiert eine Antwort ohne Header Access-Control-Allow-Origin. Geocoding-APIs für das Web senden ihn bei normalen Antworten, aber Fehlerseiten fehlt er oft; ein 403 oder 429 erscheint dann als CORS-Fehler. Öffnen Sie den Netzwerk-Tab, sehen Sie sich den Status der Anfrage an, und beheben Sie diesen. Der Geocoding-Webdienst von Google ist für Server gedacht; im Browser verwenden Sie die Klasse Geocoder der Maps JavaScript API.

400 Bad Request und INVALID_REQUEST

Ein Parameter fehlt, ist falsch geschrieben oder ausserhalb des Bereichs: lat über 90, ein unbekanntes format, eine Sprache, die der Dienst nicht hat. Die Meldung nennt meist den Parameter. Google antwortet mit INVALID_REQUEST, wenn address, components oder latlng fehlt.

Fehlercodes des Geocodings von overpass.ch

StatusCodeBedeutung auf overpass.ch
400bad_requestEin Parameter, den die API nicht annimmt; die Meldung nennt ihn.
401unauthorizedDer Schlüssel in der URL fehlt oder ist unbekannt.
403forbidden_refererDie Website gehört nicht zu den erlaubten Referern des Schlüssels.
403no_geocodingDer Tarif enthält kein Geocoding.
429rate_limited, quota_exceededDas Limit pro Minute, oder die Anfragen des Monats; siehe Retry-After.
501not_supportedNominatim /lookup und /details, die wir nicht anbieten.
502, 503geocoding_unavailable, busyNach den Sekunden in Retry-After noch einmal versuchen.

Fehler kommen als JSON, {"error": "rate_limited", "message": "…"}, mit CORS-Headern. Alle Codes stehen in der Dokumentation.

Geocoding von overpass.ch

Suche, Suche beim Tippen und Rückwärts-Geocoding auf OpenStreetMap-Daten, mit der API von Nominatim und der API von Photon; die meisten Programme brauchen also nur eine neue Basis-URL. 100'000 Anfragen im Monat sind kostenlos, und Sie dürfen die Ergebnisse speichern.