53 added, 81 removed. Audit A to A.
---
name: location-suche
version: 1.0.0
- type: assist
- author: ellmos-ai
- created: 2026-06-22
- updated: 2026-06-22
category: assist
- description: >
- Ort-, Restaurant- und Hotelsuche via OpenStreetMap (Nominatim + Overpass API).
- Liefert POIs (Points of Interest) in der Nähe eines Ortes oder sucht per Freitext.
- tags:
- - location
- - openstreetmap
- - poi
- - nominatim
- - overpass
- - restaurant
- - hotel
+ description: Location, restaurant and hotel search via OpenStreetMap (Nominatim + Overpass API). Returns POIs (Points of Interest) near a location or searches by free text.
+
+ tags: [location, openstreetmap, poi, nominatim, overpass, restaurant, hotel]
standalone: true
anthropic_compatible: true
bach_compatible: false
bach_origin: true
- languages:
- - de
- - en
- dependencies:
- python:
- - urllib.request
- - urllib.parse
- - urllib.error
- - json
- - time
+ languages: [de, en]
+ dependencies: {'python': ['urllib.request', 'urllib.parse', 'urllib.error', 'json', 'time']}
runtime: python3
entry_point: location_suche_core.py
- provenance:
- origin: BACH persoenlicher-assistent
- origin_path: system/agents/persoenlicher-assistent/tools/location_search.py
- origin_version: "1.1.0"
- origin_repo: github.com/ellmos-ai/bach
- origin_license: MIT
- last_sync_from_origin: "2026-06-22"
- last_sync_to_origin: null
- local_changes_since_sync: >
- Alle Origin-DB-Abhaengigkeiten entfernt (save_location, list_locations,
- _ensure_table, _get_db). Kein Store. Userneutral (keine privaten Pfade).
- Headless, nur Stdlib.
+ provenance: {'origin': 'BACH persoenlicher-assistent', 'origin_path': 'system/agents/persoenlicher-assistent/tools/location_search.py', 'origin_version': '1.1.0', 'origin_repo': 'github.com/ellmos-ai/bach', 'origin_license': 'MIT', 'last_sync_from_origin': '2026-06-22', 'last_sync_to_origin': None, 'local_changes_since_sync': 'Alle Origin-DB-Abhaengigkeiten entfernt (save_location, list_locations, _ensure_table, _get_db). Kein Store. Userneutral (keine privaten Pfade). Headless, nur Stdlib.\n'}
+ language: de
---
- # Location-Suche
+ > **Deutsch** — Offizielle Deutsch-Version / Documento Oficial en Deutsch.
- **Ort-, Restaurant- und Hotelsuche via OpenStreetMap**
+ # Location Search (Deutsch)
+
+ **Location, restaurant and hotel search via OpenStreetMap**
+
---
- ## Überblick
+ ## Übersicht & Zweck
- Sucht nach Restaurants, Hotels, Cafés und anderen Orten mithilfe der
- OpenStreetMap-Dienste Nominatim (Geocoding) und Overpass (POI-Suche).
- Kein API-Key erforderlich. Kein persistenter Store.
+ Searches for restaurants, hotels, cafes and other places using the
+ OpenStreetMap services Nominatim (geocoding) and Overpass (POI search).
+ No API key required. No persistent store.
---
- ## Trigger
+ ## Triggers
- | Phrase | Aktion |
+ | Phrase | Action |
|---|---|
- | „Such ein Restaurant in München" | POI-Suche: category=restaurant, near=München |
- | „Hotels in der Nähe von Wien" | POI-Suche: category=hotel, near=Wien |
- | „Wo ist der Eiffelturm?" | Nominatim-Freitext-Suche |
- | „Finde Cafés in Berlin" | POI-Suche: category=cafe, near=Berlin |
- | „Suche Apotheke nahe Potsdam" | POI-Suche: category=pharmacy, near=Potsdam |
+ | "Find a restaurant in Munich" | POI search: category=restaurant, near=Munich |
+ | "Hotels near Vienna" | POI search: category=hotel, near=Vienna |
+ | "Where is the Eiffel Tower?" | Nominatim free-text search |
+ | "Find cafes in Berlin" | POI search: category=cafe, near=Berlin |
+ | "Search for pharmacy near Potsdam" | POI search: category=pharmacy, near=Potsdam |
---
- ## Workflow
+ ## Workflow & Vorgehen
- 1. **Trigger erkennen:** Enthält die Anfrage eine Kategorie (Restaurant, Hotel usw.)
- und einen Ort → Schritt 2. Sonst Freitext → Schritt 4.
- 2. **Ort geocodieren:** Nominatim liefert Koordinaten für den genannten Ort.
- 3. **POIs suchen:** Overpass-API sucht Einrichtungen der Kategorie im Umkreis.
- 4. **Ergebnis anzeigen:** Liste mit Name, Adresse, Entfernung (m) ausgeben.
- 5. **Freitext-Suche (Fallback):** Nominatim-Freitext liefert direkte Treffer.
+ 1. **Detect trigger:** Does the request contain a category (restaurant, hotel etc.)
+ and a location → step 2. Otherwise free text → step 4.
+ 2. **Geocode location:** Nominatim provides coordinates for the named location.
+ 3. **Search POIs:** Overpass API searches for venues of the category within radius.
+ 4. **Display result:** List with name, address, distance (m).
+ 5. **Free-text search (fallback):** Nominatim free-text provides direct hits.
---
## CLI
```bash
- # POI-Suche (Kategorie + Ort)
+ # POI search (category + location) (Deutsch)
PYTHONDONTWRITEBYTECODE=1 python location_suche_core.py restaurant München
- # Ort geocodieren
- PYTHONDONTWRITEBYTECODE=1 python location_suche_core.py --geocode "Brandenburger Tor Berlin"
+ # Geocode location (Deutsch)
+ PYTHONDONTWRITEBYTECODE=1 python location_suche_core.py --geocode "Brandenburg Gate Berlin"
- # Radius anpassen (Standard: 1000 m)
+ # Adjust radius (default: 1000 m) (Deutsch)
PYTHONDONTWRITEBYTECODE=1 python location_suche_core.py hotel Wien --radius 2000
- # Hilfe
+ # Help (Deutsch)
PYTHONDONTWRITEBYTECODE=1 python location_suche_core.py --help
```
---
## Store
- Kein persistenter Store. Ergebnisse werden nur angezeigt, nicht gespeichert.
+ No persistent store. Results are only displayed, not saved.
---
- ## Unterstützte Kategorien
+ ## Supported Categories
restaurant, cafe, bar, pub, fast_food, hotel, hostel, guest_house, supermarket,
pharmacy, hospital, bank, atm, fuel, parking, bus_stop, train_station, museum,
cinema, theatre, library, school, university, church
---
- ## Haltung
+ ## Attitude
- - Immer den Nutzer nach dem Ort fragen, wenn keiner genannt wurde.
- - Bei mehr als 10 Ergebnissen nur die 5 nächsten anzeigen, Rest auf Anfrage.
- - Entfernung in Metern angeben, ab 1 km in km (1 Dezimalstelle).
- - Datenschutz: Keine Standortdaten werden gespeichert oder übertragen außer an
- die öffentliche Nominatim/Overpass-API (openstreetmap.org).
+ - Always ask the user for a location if none was given.
+ - With more than 10 results only show the 5 nearest, rest on request.
+ - State distance in metres, from 1 km in km (1 decimal place).
+ - Privacy: no location data is stored or transmitted except to the
+ public Nominatim/Overpass API (openstreetmap.org).
---
- ## Datenschutz
+ ## Privacy
- Suchanfragen gehen an `nominatim.openstreetmap.org` und `overpass-api.de`.
- Keine Anmeldung, kein API-Key, keine persistente Datenspeicherung.
- User-Agent wird gemäß Nominatim-Policy gesetzt.
+ Search requests go to `nominatim.openstreetmap.org` and `overpass-api.de`.
+ No login, no API key, no persistent data storage.
+ User-Agent is set according to Nominatim policy.
---
- ## Verwandte Ressourcen
+ ## Related Resources
- - `reiseroute` — Routenplanung von A nach B (nutzt ebenfalls Nominatim für Geocoding)
- - `wetter` — Wetter am aktuellen Ort
+ - `reiseroute` — route planning from A to B (also uses Nominatim for geocoding)
+ - `wetter` — weather at current location
---
- ## Changelog
+ ## Änderungsprotokoll
- | Version | Datum | Änderung |
+ | Version | Date | Change |
|---|---|---|
- | 1.0.0 | 2026-06-22 | Erstellt aus BACH location_search.py v1.1.0; Store entfernt |
-
+ | 1.0.0 | 2026-06-22 | Created from BACH location_search.py v1.1.0; store removed |