We aggregate menus from delivery services and restaurant websites, translate to 4 languages, estimate calories via AI. 658 restaurants with full menus in 5 cities.
Living in Serbia and constantly wondering "does this café have an online menu, what are the prices, what vegan options are there?" is a separate kind of suffering. Some places have an Instagram account with a PDF menu from 2022, others only have photos in Highlights, and some have nothing at all.
We have gathered the menus of **658 restaurants** in Belgrade, Novi Sad, Niš, Kragujevac and Subotica in one place. There you'll also find dish photos, prices in RSD, descriptions, the average check and **approximate nutrition facts**.
Below is how and why this was done, and what tricks you can use.
## What's inside a restaurant card
On [serbiahub.com/places](https://serbiahub.com/places) enable the "With menu" filter and you'll instantly see all establishments that already have a ready-made menu.
Each card contains:
- Full menu with sections (appetizers, main courses, desserts, drinks, wines)
- Prices in RSD, switchable to EUR/USD/RUB/UAH/KZT/BYN at the current exchange rate
- Dish photos (not for every item)
- Description of composition and ingredients
- Average check - median across all items, to understand whether it's "expensive" or "cheap"
- Names in four languages: Russian, English, Serbian, Ukrainian
- Nutrition facts - calories, protein, fat, carbs per typical portion
## Why nutrition facts
If you ever count macros, choosing a dish in an unfamiliar restaurant becomes a guessing game: how many calories are in ćevapi? And in pljeskavica? How much fat is in kajmak? We made an approximate estimate via AI for every dish. These are not laboratory-accurate numbers (that would require weighing and a calorimeter), but **good enough to make a decision**. Example:
> **Pljeskavica sa kajmakom** - Serbian patty with dairy cream. 600 RSD
> ≈ 720 kcal · P 38 / F 45 / C 15
If the AI is unsure (exotic or author-created dish), the nutrition facts simply aren't shown - better to stay silent than to mislead.
## Where the menus come from
1. **Partner delivery services** - if the restaurant is listed on a major platform, we take the full menu, prices in RSD and photos from there. This covers all 658 venues in the five cities.
2. **Restaurant websites** - if there is no delivery listing but the restaurant has its own site, our parser scans the page, even if the menu is presented as an image, PDF or arbitrary HTML, and extracts items via AI. We crawl **≈1500 sites** in Belgrade in two days, then refresh the data weekly. If the menu changes, the correction appears within a week.
## Translating dish names
Machine translation often "breaks" culinary terms: *brancin* becomes "sea pool", *pohovan* turns into "meaningless". Therefore we translate through AI, taking the culinary context into account:
- Well-known dishes are transliterated (ćevapi → чевапи, kajmak → каймак, gibanica → гибаница)
- Cooking methods are translated (pohovan → in batter, na žaru → grilled, kuhan → boiled)
- Ingredients are translated normally
- Author-created names are left unchanged
The result is a Russian menu that reads like a "normal Russian restaurant", without machine-generated calques.
## Wine and cocktail lists
Previously the parser grabbed only food, leaving drinks to guesswork. Now it scans additional subpages (`vinska-karta`, `vine-list`, `pića`) and adds wines and cocktails to a separate "Wines" section. Many venues now display their own wine list in the card.
## Average check
Below each card you'll see a figure like **"~1200 RSD"**. This is the median of all menu items after trimming the top 10 % most expensive and the bottom 10 % cheapest dishes, so a single pricey steak doesn't "inflate" the average check of a place that serves home-cooked food. You can filter restaurants by average check, e.g., "up to 800 RSD" or "premium 2500+".
## Search with the "with menu" filter
On [serbiahub.com/places](https://serbiahub.com/places) in the "Food" category turn on the "With menu" filter. Only establishments with a parsed and translated menu will remain. This is handy when you want to see instantly what's offered and at what price.
Additional filters:
- **Open now** - based on opening hours from Google Places
- **With photos only** - if you don't want to open a page without visual content
- **Has its own website** - for pre-ordering or reservation
- **Non-smoking** - if you need clean air
## Which cities
| City | Restaurants with menu |
|-----------|------------------------|
| Belgrade | ~370 |
| Novi Sad | ~140 |
| Niš | ~80 |
| Kragujevac| ~40 |
| Subotica | ~28 |
Data are refreshed hourly. If your favorite spot is not yet in the database, it will appear in the coming weeks, or just write to us - we'll add it manually.
## What else is on the place page
- Address and coordinates
- Opening hours
- Phone, website, Instagram
- Interior photos
- Rating (Google Places)
- Category and subcategory (café, restaurant, bakery, bar…)
- Neighborhood - click opens a map of the area
- Poll "Do they speak Russian here?" - based on user votes
- Button "By transport" - opens our planner with a ready destination
- Button "Route" - opens Google Maps navigation
## Important
Nutrition facts are **estimated**, calculated by AI from the name, description and typical composition of the dish. Real values may differ by ±20-30 % depending on the amount of oil and other factors. Prices are current as of the last update; if you notice significant discrepancies, let us know - we'll fix them.
---
Visit and explore: [serbiahub.com/places](https://serbiahub.com/places). If you have a favorite place that's not yet listed, send us the link - we'll add it.