Overpass-QL-Beispiele

Abfragen zum Kopieren, jede davon vor der Aufnahme auf diese Seite gegen unseren Endpoint ausgeführt. Sie decken ab, was Apps am häufigsten fragen: Dinge in der Nähe eines Punkts, in einer Box, in einer Stadt oder entlang einer Linie sowie Zählungen. Was der Endpoint unterstützt und was nicht, steht auf der Seite Overpass-API-Alternative.

Eine Abfrage senden

Senden Sie die Abfrage als data per POST an https://geo.runningcat.dev/v1/overpass/interpreter, zusammen mit Ihrem Key.

Python

import requests

query = """
[out:json][timeout:25];
node["amenity"="drinking_water"](around:2000,46.204,6.143);
out center;
"""
answer = requests.post(
    "https://geo.runningcat.dev/v1/overpass/interpreter",
    data={"data": query},
    headers={"Authorization": "Bearer YOUR_KEY"},
    timeout=60,
)
answer.raise_for_status()
for element in answer.json()["elements"]:
    print(element["id"], element.get("tags", {}).get("name"))

JavaScript

const query = `[out:json];
node["amenity"="cafe"](50.05,19.92,50.07,19.96);
out;`
const answer = await fetch('https://geo.runningcat.dev/v1/overpass/interpreter', {
  method: 'POST',
  headers: { Authorization: 'Bearer YOUR_KEY' },
  body: new URLSearchParams({ data: query }),
})
const { elements } = await answer.json()

Ein Client, der keine Header senden kann, kann den Key in die Adresse setzen: /v1/overpass/interpreter?key=YOUR_KEY.

Um einen Punkt

Trinkwasser im Umkreis von 2 km um den Bahnhof Genf: 185 Brunnen in unter 2 Sekunden. Mit nwr statt node liefert out center auch als Flächen kartierte Brunnen als einzelnen Punkt.

[out:json][timeout:25];
node["amenity"="drinking_water"](around:2000,46.204,6.143);
out center;

In einer Box

Cafés im Zentrum von Krakau. Die Box ist Süd, West, Nord, Ost, wie bei Overpass. 234 Cafés in unter einer halben Sekunde.

[out:json];
node["amenity"="cafe"](50.05,19.92,50.07,19.96);
out;

Die Einstellung [bbox] wendet eine Box auf jede Abfrage im Skript an; hier zählt sie Picknicktische, statt sie aufzulisten.

[out:json][bbox:50.0,19.8,50.1,20.1];
node["leisure"="picnic_table"];
out count;

In einer Stadt oder einem Park

area[...] findet eine Verwaltungsgrenze oder ein Schutzgebiet anhand seiner Tags, und (area.name) behält, was darin liegt. Bäckereien innerhalb der Stadt Krakau: 408 Geschäfte in etwa 3 Sekunden.

[out:json][timeout:60];
area["name"="Kraków"]["admin_level"="8"]->.city;
nwr["shop"="bakery"](area.city);
out center;

Wenn Sie admin_level oder boundary=protected_area zum Area-Filter hinzufügen, wird die Suche schneller. Area-IDs funktionieren ebenfalls: 3600000000 plus eine Relations-ID oder 2400000000 plus eine Way-ID.

Um umgekehrt zu fragen, welche Grenzen einen Punkt enthalten:

[out:json];
is_in(46.204,6.143);
out tags;

Entlang einer Linie

around mit mehreren Koordinatenpaaren misst den Abstand zur Linie durch diese Punkte. Toiletten und Trinkwasser im Umkreis von 300 m einer Fahrt von Genf nach Chamonix, in einer Vereinigung:

[out:json];
(
  node["amenity"="toilets"](around:300,46.204,6.143,46.07,6.40,45.924,6.869);
  node["amenity"="drinking_water"](around:300,46.204,6.143,46.07,6.40,45.924,6.869);
);
out;

Für eine lange aufgezeichnete Route nimmt der Endpoint POI entlang einer Route die GeoJSON-Linie entgegen und liefert jeden Halt mit seinem Kilometer.

Routenrelationen mit Geometrie

Wanderrouten im Tal von Chamonix, die ersten drei mit ihrer Geometrie. Jedes Mitglied ist ein Way mit eigener Geometrie, sodass Sie die Route zeichnen können, ohne Nodes abzurufen.

[out:json];
rel["route"="hiking"](45.85,6.8,46.0,6.95);
out geom 3;

Reguläre Ausdrücke

Namen, die mit „saint“ beginnen, unabhängig von der Groß- und Kleinschreibung, mit ,i:

[out:json];
nwr["name"~"^saint",i]["amenity"="place_of_worship"](45.85,6.8,46.0,6.95);
out center;

Benannte Mengen

Eine Abfrage kann ihr Ergebnis mit ->.name speichern, und die nächste Abfrage kann diese Menge filtern. Eine Menge allein innerhalb einer Vereinigung, etwa (.a; .b;);, wird nicht unterstützt; setzen Sie stattdessen die beiden Abfragen in die Vereinigung.

[out:json];
node["amenity"="bicycle_parking"](46.19,6.12,46.22,6.16)->.parking;
node.parking["covered"="yes"];
out;

Orte, die zu einer bestimmten Zeit geöffnet sind

Hängen Sie open_at als lokales Datum mit Uhrzeit an die Adresse an, YYYY-MM-DDTHH:MM in der Zeitzone des jeweiligen Orts, und die Antwort behält nur die Orte, deren Tag opening_hours sie zu dieser Zeit als geöffnet ausweist. Das ist nicht Teil von Overpass. Bäckereien in Wien, die an einem Dienstag um 06:59 geöffnet sind, so fragen Sie nach denen, die vor 7 Uhr öffnen:

POST /v1/overpass/interpreter?open_at=2026-11-10T06:59

[out:json][timeout:60];
area["name"="Wien"]["admin_level"="4"]->.city;
nwr["shop"="bakery"](area.city);
out center;

Orte ohne Tag opening_hours oder mit einem nicht lesbaren Wert werden ausgelassen. Das Objekt open_at in der Antwort zählt die geöffneten, geschlossenen und unbekannten Orte, sodass Sie sehen, wie viele keine Öffnungszeiten hatten. Regeln für Feiertage und Schulferien (PH, SH) werden ohne die Feiertage gelesen.

Wenn eine Abfrage abgelehnt wird

Eine Abfrage, die der Endpoint nicht beantworten kann, erhält Status 400 und eine remark, die den Grund nennt, zum Beispiel static error: line 3: recursion ">" is not supported: ways come without their nodes; use out geom or out center. Eine Abfrage, die länger als 30 Sekunden läuft oder mehr Elemente liefern würde, als der Tarif erlaubt (10.000 bei Free, 25.000 bei Developer, 50.000 bei Pro), erhält Status 200 ohne Elemente und eine runtime error:-Remark, wie Overpass sie sendet. Die Anleitung zu Overpass-Fehlern behandelt 429 und 504.

Der kostenlose Tarif bietet 500 Anfragen pro Tag, auch für kommerzielle Apps. Legen Sie ein Konto mit Google oder Ihrer E-Mail-Adresse an und erstellen Sie sofort Ihre Schlüssel.