OSM API key nötig?

Hallo zusammen,

ich binde eine OSM-Karte mit (nominatim) Sucheingabe über leaflet in meine Webseite ein,
und benötige auch einige der addresstags in den Ergebnissen.

Nachdem ich die normale nominatim (Such-) Abfrage abgefeuert habe,
( z.B. https://nominatim.openstreetmap.org/search?q=Magelsen 53&format=json )
gehe ich hierzu mit der nunmehr gefundenen OSM_ID (z.B. 206891354) in eine zweite Abfrage um die adresstags zu erhalten.

hierzu kann man den “details?” endpoint der nominatim-api abfragen über:
https://nominatim.osm.org/details?osmtype=W&osmid=206891354&format=json
aber gemäß nominatim user-policy darf man das nicht aus einem script heraus machen:
“The details endpoint at https://nominatim.openstreetmap.org may not used in scripts or bots at all. See Nominatim Usage Policy.”
(von hier → “Details - Nominatim 4.5.0 Manual”)
also unterlasse ich das.

Ich dachte mir dann: der place ist durch nominatim schon gefunden, warum dann nicht einfach die normale OSM API heran ziehen, um die zweite Abfrage durchzuführen → z.B.
https://www.openstreetmap.org/api/0.6/way/206891354.json
dort sind auch die gesuchten adresstags enthalten.

Benötige ich hierzu einen API-Key ?
wie z.B hier zu lesen
“hxxps://publicapis.io/open-street-map-api”
“Before you can start using the OSM API, you need to sign up for an account and obtain an API key. You can do this by visiting the OpenStreetMap API website and following the instructions provided.”
oder ist das veraltet ?

Moderator-Edit: Link zu publicapis:io ungültig gemacht, da das wahrscheinlich eine KI-generierte SEO-Nonsense-Seite ist.

Nicht die Antwort auf die Frage, aber…

Welche Addressdetails benötigst du denn? Normalerweise kannst du dir alles bei der Nominatim-Anfrage gleich mitliefern lassen mit addressdetails=1.

Beispiel: https://nominatim.openstreetmap.org/search?q=Magelsen%2053&format=json&addressdetails=1

Antwort:

[{"place_id":130942327, 
  "osm_type":"way",
  "osm_id":206891354,
  ...
  "address":{
    "house_number":"53",
    "village":"Magelsen",
    "municipality":"Samtgemeinde Grafschaft Hoya",
    "county":"Landkreis Nienburg/Weser",
    "state":"Lower Saxony",
    "ISO3166-2-lvl4":"DE-NI",
    "postcode":"27318",
    "country":"Germany",
    "country_code":"de"}

Allerdings sind die Felder, die in “address” auftauchen etwas variabel und davon abhängig, wie die Addressen in OSM getaggt sind. Deswegen würde ich eher das geocodejson Format empfehlen. Das arbeitet mit fixen Feldern für die Adresse.

Beispiel: https://nominatim.openstreetmap.org/search?q=Magelsen%2053&format=geocodejson&addressdetails=1

{"type":"FeatureCollection",
  "geocoding": ...,
  "features":[
     {"type":"Feature",
      "properties":
        {"geocoding":
          {"place_id":130942327,    
           "osm_type":"way",
           "osm_id":206891354,
           ...    
           "housenumber":"53",
           "postcode":"27318",
           "district":"Magelsen",
           "city":"Hilgermissen",
           "county":"Landkreis Nienburg/Weser",
           "state":"Lower Saxony",
           "country":"Germany",
           "country_code":"de",
 ...
1 Like

adresstags nicht addressdetails …
das ist ein Unterschied (den ich erst auch nicht verstanden habe).

addresstags stammen aus der OSM Datenbankabfrage,
das ist das, was z.B. im Editor eingetragen wurde unter “Eigenschaften”
siehe angehängtes Bild

Dort kann noch mehr stehen als die eigentliche Postadresse,
und diese Informationen möchte ich haben…

addressdetails hingegen werden von OSM und nominatim hirarchisch* (über die versch. admin_level) erzeugt aus den boundaries (administrative) also aus den “Grenzen” in denen das Objekt liegt (vergl. auch https://wiki.openstreetmap.org/wiki/DE:Grenze)
*(z.B. top-down: country → state → county → city → district → postcode → housenumber)


Um es kurz, knapp, klar und deutlich zu sagen: Die von dir verlinkte und zitierte Seite ist inhaltlich absoluter Müll und mutmaßlich KI-generierter Bullshit. Die OSM-API hat keine API-Keys. Daran erkennt man die Zuverlässigkeit der von dir verlinkten Quelle gut.

Zur inhaltlichen Frage:

Die OpenStreetMap-API ist eine API zum Bearbeiten von OpenStreetMap-Daten mit Editoren wie z.B. JOSM, iD, Vespucci, StreetComplete usw. Sie sollte von Datenkonsumenten nicht genutzt werden.

Die Nominatim-API wird von der OpenStreetMap Foundation auf spendenfinanziert betrieben. Deshalb ist die Nutzungsrichtlinie so, wie sie ist. Die Software ist Open Source, du kannst sie selbst installieren. Alternativ kannst du auch einen der Anbieter nutzen, die Nominatim für bezahlende Nutzer hosten. Ein Beispiel dafür ist die Geofabrik. Weitere findest du im OSM-Wiki, wobei manche eine eigene API als Wrapper um Nominatim herum ergänzt haben.

3 Likes

Danke für die Klarstellung bzgl. “API-Key”

Die OpenStreetMap-API ist eine API zum Bearbeiten von OpenStreetMap-Daten mit Editoren wie z.B. JOSM, iD, Vespucci, StreetComplete usw. Sie sollte von Datenkonsumenten nicht genutzt werden

OK,
dann würde ggf. noch overpass für “Datenkonsumenten” in Frage kommen (?):
z.B. https://overpass-api.de/api/interpreter?data=[out:json];way(206891354);out body;
welches das gleiche liefert.

1 Like

Alles, was dir Nominatim zurück gibt stammt aus der OSM-Datenbank. Nicht überall werden Sachen wie addr:city, addr:country, etc. explizit am Objekt erfasst sondern muss über admin-Relationen ermittelt werden. Mir erschließt sich jetzt nicht unbedingt, warum du das nicht wollen würdest.

D.h. du willst alle Eigenschaften des gefundenen Objektes? Dann bist du vermutlich mit der OverpassAPI gut bedient. Aber auch hier gibt es bei den öffentlichen Instanzen Grenzwerte :wink: