Anleitung

Nominatim: «Access blocked», 403 und 429

Warum nominatim.openstreetmap.org ein Skript oder eine App sperrt, was seine Nutzungsrichtlinie erlaubt, wie Sie Anfragen senden, die es annimmt, und was tun, wenn eine Anfrage pro Sekunde nicht reicht.

Warum das öffentliche Nominatim Anfragen sperrt

Nominatim ist die Suchmaschine von openstreetmap.org. Der öffentliche Server wird von der OpenStreetMap Foundation auf gespendeter Hardware betrieben und von allen geteilt; seine Nutzungsrichtlinie setzt deshalb feste Grenzen:

  • Absolut höchstens eine Anfrage pro Sekunde, von all Ihren Nutzerinnen und Nutzern zusammen.
  • Ein gültiger HTTP-Referer oder User-Agent, der die Anwendung erkennen lässt. Der Standard-User-Agent einer HTTP-Bibliothek zählt nicht.
  • Ergebnisse müssen bei Ihnen zwischengespeichert werden. Clients, die dieselbe Abfrage immer wieder senden, können als fehlerhaft gelten und gesperrt werden.
  • Keine Autovervollständigung, auch nicht aus dem Browser Ihrer Nutzerinnen und Nutzer.
  • Geocoding grösserer Datenmengen in Massen wird nicht gern gesehen. Skripte, die länger als einen Tag oder in regelmässigen Abständen laufen, sind auf 4 Anfragen pro Minute beschränkt.
  • Zeigen Sie die Quellenangabe von OpenStreetMap dort, wo die Ergebnisse erscheinen.

Ein Client, der diese Regeln verletzt, erhält HTTP 403 mit einer Seite mit dem Titel «Access blocked». Sie sagt, dass der Client gegen die Nutzungsrichtlinie verstossen hat, bittet Sie zu prüfen, ob Ihre Software einen eigenen Referer oder User-Agent und keine massiven Massenanfragen sendet, und nennt nominatim@openstreetmap.org als Kontakt, falls die Sperre falsch scheint oder nach einer Korrektur bleibt. Zu viele Anfragen in kurzer Zeit können auch zu 429 Too Many Requests führen.

Einen User-Agent senden, der Ihre App nennt

Ein fehlender oder allgemeiner User-Agent ist der häufigste Grund für eine Sperre. Nennen Sie die App und einen Weg, Sie zu erreichen:

curl -A 'shop-locator/1.2 (admin@example.com)' \
  'https://nominatim.openstreetmap.org/search?q=Bundesplatz+3,+Bern&format=jsonv2'

Auf einer Webseite sendet der Browser den Referer der Seite, der Ihre Website erkennen lässt, und lässt Sie den User-Agent nicht setzen. Stellen Sie sicher, dass die Seite kein Referrer-Policy: no-referrer sendet.

Unter einer Anfrage pro Sekunde bleiben, und zwischenspeichern

  • Senden Sie Anfragen nacheinander, aus einem Thread, mit mindestens einer Sekunde dazwischen. Mehrere Worker, die jeder eine Sekunde warten, verletzen das Limit trotzdem gemeinsam.
  • Behalten Sie jede erhaltene Antwort, mit der Abfrage als Schlüssel, und schauen Sie zuerst dort nach. Bei einer Liste von Adressen entfernen Sie Doppelte vor dem Geocoding.
  • Brechen Sie nach einem 429 oder 403 den Lauf ab. Sofortige Wiederholungen verlängern eine Sperre.
import time
# s: die requests.Session mit dem User-Agent von oben
def geocode_all(addresses):
    seen = {}
    for a in dict.fromkeys(addresses):   # jede Adresse einmal, in Reihenfolge
        r = s.get("https://nominatim.openstreetmap.org/search",
                  params={"q": a, "format": "jsonv2", "limit": 1}, timeout=10)
        r.raise_for_status()           # bricht bei 403 oder 429 ab
        seen[a] = r.json()[:1]
        time.sleep(1.1)
    return seen

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. Während das Operations-Team sie abwehrte, erhielten einige normale Clients für ein paar Tage 509. Die Betreuer baten darum, es noch einmal zu versuchen, bevor man es meldet, und rieten kommerziellen Apps zu einem kommerziellen Geocoding-Dienst oder einem eigenen Server (Forumsbeitrag).

geopy und andere Bibliotheken

geopy weigert sich, das öffentliche Nominatim mit seinem Standard- oder einem Beispiel-user_agent zu verwenden, und wirft ConfigurationError; aus einem 403 wird GeocoderInsufficientPrivileges und aus einem 429 GeocoderRateLimited. Siehe geopy: GeocoderInsufficientPrivileges, GeocoderRateLimited und ConfigurationError.

Wenn eine Anfrage pro Sekunde nicht reicht

Die Richtlinie nennt zwei Auswege: einen kommerziellen Dienst, von denen mehrere auf der Seite zu Nominatim im Wiki von OpenStreetMap aufgeführt sind, oder ein eigenes Nominatim. Ein eigener Server für die ganze Welt braucht etwa 1 TB schnellen Speicher und 64–128 GB RAM, und der erste Import dauert zwei bis drei Tage. Für ein Land ist es viel weniger.

overpass.ch beantwortet Such- und Rückwärtsanfragen von Nominatim mit denselben Parametern und Feldern; Code für den öffentlichen Server braucht also nur eine andere Basis-URL und einen Schlüssel:

# vorher
https://nominatim.openstreetmap.org/search?q=Bundesplatz+3,+Bern&format=jsonv2
# nachher
https://api.overpass.ch/v1/IHR_SCHLÜSSEL/nominatim/search?q=Bundesplatz+3,+Bern&format=jsonv2

Die Suche beim Tippen funktioniert dort auch, über die Photon-API auf denselben Daten. Die Unterschiede zu Nominatim stehen in der Dokumentation.

Geocoding von overpass.ch

Die APIs von Nominatim und Photon auf OpenStreetMap-Daten, ohne das Limit von einer Anfrage pro Sekunde. 100'000 Anfragen im Monat sind kostenlos, und Sie dürfen die Ergebnisse speichern.