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
diet:vegan=no— excluded outright. If a place has explicitly recorded that it has no vegan food, we believe it.- Anything without a name or coordinates — there is nothing useful to show.
- Cities with fewer than 20 places get no page. Not because they do not matter, but because a list of eleven entries is not worth the click, and publishing it anyway is how a site fills up with pages nobody wants.
- Only entirely vegan places get their own page, and only when they have an address. Letting in every vegan-friendly place with a website and a cuisine tag would produce around nine thousand near-identical pages across these cities, each saying little more than the row it came from. An all-vegan restaurant is something people search for by name; a pub with a vegan burger is not. Everything else still appears in full in its city's list — it just does not get a URL of its own.
How the tiers work
- all vegan
diet:vegan=only— everything on the menu is vegan.- vegan options
diet:vegan=yesorlimited— there are vegan options, but not everything is.- veg-friendly
diet:vegetarian=yesoronly, 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
- Place data © OpenStreetMap contributors, available under the Open Database License.
- Product data from Open Food Facts, also ODbL.
- Food photography from Pexels, credited on each recipe.
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.