How this data works.

Every restaurant on this site comes from OpenStreetMap. Nobody pays to appear, and there is no mechanism by which they could. Here is exactly how the lists are made, so you can check.

Where it comes from

OpenStreetMap, queried through the public Overpass API. OpenStreetMap is an open database edited by volunteers — the same project that a lot of the world's maps are built on. Anyone can correct it, including you, and corrections show up here at the next refresh.

The query we run

One request per city, with the city's own centre and radius substituted in. This is the whole thing:

[out:json][timeout:90];
(
  nwr[amenity~"^(restaurant|cafe|fast_food|bakery|pub|bar|ice_cream)$"]["diet:vegan"](around:RADIUS,LAT,LON);
  nwr[amenity~"^(restaurant|cafe|fast_food|bakery|pub|bar|ice_cream)$"]["diet:vegetarian"~"^(yes|only)$"](around:RADIUS,LAT,LON);
);
out center tags 800;

Two clauses rather than one, because the two tiers come from different tags and a place can carry both. It is the same query the app runs on your phone, with a city-sized radius instead of a walking one.

What gets excluded

How the tiers work

all vegan
diet:vegan=only — everything on the menu is vegan.
vegan options
diet:vegan=yes or limited — there are vegan options, but not everything is.
veg-friendly
diet:vegetarian=yes or only, with no vegan tag — vegan options are likely but nobody has recorded them.

Opening hours

Shown exactly as OpenStreetMap records them, with the date they were read. Where the format is one we can reliably turn into a timetable, we do; where it is not, the raw entry is printed as written rather than guessed at. There is no "open now" on these pages, because a static page cannot know what time it is where you are, and a wrong "open now" sends somebody across town to a locked door.

The app does compute it, because it knows both your location and the time.

No photographs of places

OpenStreetMap has no imagery, and putting a stock photograph of some other restaurant next to a real venue's name is a small lie. So the place pages have no photographs at all. The maps are drawn from the real coordinates in the brand's own colours.

How often it refreshes

Monthly. The data is fetched once, checked, and committed — the website itself never calls Overpass, because it is a free shared service with no service guarantee and hammering it on every page view would be poor behaviour and would eventually get us blocked. The most recent run kept 773 places from 773 raw results for that city.

A refresh that returns nothing, or that swings by more than 40% against the previous run, is rejected rather than published. A silent collapse from two hundred places to three is a bug upstream, not a change in the world.

Licences

Something wrong?

Every place page links straight to its OpenStreetMap entry and to the edit screen for it. Fixing it there fixes it for everyone who uses that data, not just for us — which is a better outcome than emailing us about it. If something here is broken rather than out of date, support@veganlens.app.