OpenStreetMap Overpass

liveGeography

Programmatic queries against OpenStreetMap. Raw Overpass QL plus helpers for "POIs near a point" and "all matches in a bbox". No auth.

3tools
0msauth
free tier50 calls/day

Tools

queryrequired: qql

Run a raw Overpass QL query against OpenStreetMap. Use for complex spatial queries the helper tools can't express. Example: `[out:json][timeout:25]; area["name"="Berlin"][admin_level=4]->.a; node["ame

Parameters
NameTypeDescription
qqlreqstringOverpass QL query
▶Try it
pois_nearrequired: latitude, longitude, tag

Find OpenStreetMap points of interest (shops, amenities, businesses) near a location. Give a location either as latitude+longitude OR as a place name via "place" (e.g. place: "Göttingen, Germany" — au

Parameters
NameTypeDescription
latitudereqnumberCenter latitude
longitudereqnumberCenter longitude
radius_moptnumber1-10000 metres (default 1000)
tagreqstringOSM tag (e.g., "amenity=cafe", "shop", "tourism=museum")
limitoptnumberMax results (1-500, default 100)
▶Try it
places_in_bboxrequired: south, west, north, east, tag

Find OSM POIs inside a bounding box. Use for "every park in this area" or "all restaurants in this neighborhood". Bounding box is (south, west, north, east) in degrees.

Parameters
NameTypeDescription
southreqnumberMin latitude
westreqnumberMin longitude
northreqnumberMax latitude
eastreqnumberMax longitude
tagreqstringOSM tag filter
limitoptnumberMax results (1-1000, default 200)
▶Try it

Test with curl

The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.

List available tools
bash
curl -X POST https://gateway.pipeworx.io/overpass/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Call a tool
bash
curl -X POST https://gateway.pipeworx.io/overpass/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"query","arguments":{"qql": "example"}}}'

Use with the SDK

Install @pipeworx/sdk to call tools from any TypeScript/Node project.

TypeScript
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("query", {"qql":"example"});
ask_pipeworx
// Or ask in plain English:
const answer = await px.ask("programmatic queries against openstreetmap");