An Overpass API alternative with your own key

Send your Overpass QL queries to our endpoint and get the same JSON back, with your own key and plan limits instead of a shared rate limit. It is not an Overpass server: our own OpenStreetMap database answers the part of Overpass QL that apps use most, and says plainly when a query needs something it does not support.

curl https://geo.runningcat.dev/v1/overpass/interpreter \
  -H "Authorization: Bearer YOUR_KEY" \
  --data-urlencode 'data=[out:json][timeout:25];
node["amenity"="drinking_water"](around:2000,46.204,6.143);
out center;'
Example request

Point your client here

The endpoint takes the query as data, the way Overpass does: in the URL, as a form field or as the raw POST body. Send the key in the Authorization header, or as ?key= for clients that cannot set headers.

The answer has the usual version, generator, osm3s and elements. A client that lets you change the server address works with https://geo.runningcat.dev/v1/overpass/interpreter?key=YOUR_KEY, as long as its queries stay inside what is listed below. More queries are on the Overpass QL examples page.

What it answers

  • Queries: node, way, rel, nwr, nw, nr, wr and area, with named sets (->.a, .a) and unions.
  • Tag filters: [k], [!k], [k=v], [k!=v], [k~re], [k!~re], [~kre~vre] and the case-insensitive ,i.
  • Where: a bbox, around a point or a line, poly, ids, area and is_in. area[...] finds administrative boundaries and protected areas.
  • Output: out with body, skel, ids, tags, geom, center, bb, count, a limit and qt.
  • Settings: [out:json] and [bbox]. [timeout] and [maxsize] are accepted, and every query gets up to 30 seconds.

Where it differs from Overpass

  • Every query needs a bbox, around, poly, area or id. A whole-world tag query is refused.
  • Recursion (>, <, >>, <<), difference, foreach, if, make, convert, map_to_area and around a set are not supported. Neither are history and diffs (date, diff, adiff) or the user, newer and changed filters.
  • Ways come without their node lists and relations without their real members. With out geom a way carries its geometry, and a relation carries members with geometry instead.
  • The answer is JSON only, with at most 10,000 elements on the Free plan, 25,000 on Developer and 50,000 on Pro. Editing metadata (versions, users, changesets) is not included.
  • Map data is refreshed every month, not every minute.

A query that uses something unsupported comes back as an error with a remark naming it, so you know at once what to change.

Limits you can plan around

The main public Overpass server asks to stay under about 10,000 queries and 1 GB of downloads a day, a hundredth of that for regular use, and it sends commercial users to paid or self-hosted servers (OpenStreetMap wiki). Its rate limit gives each IP address a few slots, so when your backend sends the queries, all your users share those slots. The guide to 429 and 504 errors explains how that works.

Here the limits belong to your key, and each Overpass query counts as one request, however much it returns. How much one answer may hold depends on the plan.

PlanRequests a dayA minuteAt onceElements in an answerPrice
Free50030110,000$0
Developer5,000300425,000$14.99 a month
Pro20,0001,200850,000$39.99 a month

Over a limit, a request is refused with status 429 and a Retry-After header; nothing is billed extra. In our tests, cafés around a point came back in about 0.2 seconds, drinking water in a city-sized box in about 1 second, and bakeries inside the boundary of Kraków in about 3 seconds. A query over a whole country by area can run past the timeout.

More than map data, with the same key

The key also gives weather and air quality forecasts, measured air quality, river levels, heights, time zones, routing and stops along a route. See POI along a route, the weather API and everything the API does.

The free plan gives 500 requests a day, for commercial apps too. Create an account with Google or your email and make your keys right away.