Where locals actually eat — by neighborhood, budget, and what to order.
Some links are affiliate links. Learn more.
Zagreb is a city where tradition meets bold flavors, offering a mix of Mediterranean, Central European, and Balkan influences. The must-try dishes include čevapi (grilled minced meat sausages), sarma (cabbage rolls), and krompiruša (mashed potatoes with bacon and sour cream). Prices are honest — a full meal with drink costs €12–18 at a casual eatery, and fine dining rarely exceeds €40 per person.
Gornji Grad is best for hearty, traditional eats. Look for family-run konobas where grilled meats and stewed dishes are the norm. Meals here typically run €15–25, and the best time to visit is early evening, when the crowds are thinner and the sun lingers over the cobblestone streets.
Donji Grad is the place for casual dining and street food. Try the kebab spots and fish stalls near the river. Prices are lower than in Gornji Grad, often €8–14 for a satisfying meal. It's also home to Zagreb’s best late-night kebab and fried fish bars.
Trnje is a hidden hub for authentic, no-frills dining. Locals come here for grilled sausages, grilled meats, and fresh salads. It's a bit rough around the edges but offers the most genuine Zagreb experience. Expect to spend €10–20 for a main and a drink.
Maksimir Park has a more upscale food vibe, with picnic spots and gourmet food trucks. It’s ideal for a relaxed lunch with a view. Prices are higher than in the city center — budget €15–25 per person for a quality meal.
| Meal type | Est. cost | What you get |
|---|---|---|
| Street food / market | €1–4 | A single item like burek, krompiruša, or ajvar |
| Casual sit-down | €10–18 | A full meal including soup, main, and drink |
| Mid-range restaurant | €18–30 | Set menu or à la carte, including wine |
| Fine dining | €35–45+ | Multi-course meals with premium ingredients |
| Meal Type | Cost per Person | Where to Find It |
|---|---|---|
| Street food | €3-5 | Croatian Market (Maksimir), street vendors |
| Casual | €8-12 | Bistro 1901, Lokal |
| Mid-range | €15-20 | Café de Paris, Konoba Španjola |
| Fine dining | €30-50 | Restaurant 1900, Lokal 2 |
| Daily budget | €35-60 | Mix of street food, casual, and one mid-range meal |
Tip: For the best value, explore local markets like Dolac for fresh ingredients, and avoid touristy areas where prices can be
Navigate Zagreb's restaurant districts with this interactive map. Click to explore the city.
At 100+ years old, Kranjčevićeva remains Zagreb’s most authentic Croatian institution. Order gulaš (beef stew with paprika, €18 for two), štrukle (cheese-filled pasta, €12), and kremšnita (cream cake, €8). Located in the historic Gornji Grad district, the restaurant’s wood-paneled walls and faded photos of past patrons create a time capsule feel. Visit on a weekday evening to avoid crowds; weekends are packed with tourists. Best for older locals and history buffs who appreciate unpretentious service. The menu hasn’t changed since 1995, and the wine list focuses on Slavonia’s reds. Prices reflect Zagreb’s pre-2010 rates, making it a rare value.
Mama Mia, a 2020 opening in the trendy Ilica district, serves elevated takes on Croatian classics. Try the jota (sauerkraut and beans, €16), pečenica (pork chop with smoked potatoes, €22), and kroštule (fried dough, €10). The space features exposed brick, minimalist tables, and a central bar with artisanal cocktails. Weekday lunches (12–2 PM) offer the best value; dinner is expensive. Ideal for young professionals and foodies seeking a chic but not stuffy vibe. The wine list highlights Istrian whites, and the staff knows every bottle’s terroir. Prices reflect Zagreb’s current market, with a €50 minimum for two.
Krošvar, a stall in the bustling Dolac Market, serves the city’s best krošvar (deep-fried dough with cheese, €5 for two). Pair it with kremšnita (cream cake, €3) and a glass of Slavonian wine (€4). Located in the heart of Zagreb’s oldest market, the stall’s open-air setup and plastic chairs create a chaotic, authentic vibe. Visit early morning (7–10 AM) to avoid lines. Perfect for budget travelers and locals grabbing a quick bite. The stall uses fresh, locally sourced ingredients, including cheese from the nearby Medvednica mountains. Prices are fixed, no tourist markup.
Pivnica 1901, in the Petrinja neighborhood, offers a curated beer list featuring 12 Croatian craft brews. Order the pašticada (beef stew with prunes, €20), krompiruša (potato dumplings, €12), and štrukle (€10). The space is a converted 1901 brewery with wooden barrels and vintage posters. Visit on a Tuesday for the best beer flights (€15 for two). Ideal for beer enthusiasts and couples seeking a relaxed evening. The menu emphasizes local ingredients, including Medvednica mountain herbs. Prices are mid-range, with a €40 total for two.
Dobroviš, a 2019 Michelin-starred restaurant in the Novi Zagreb district, offers a 10-course tasting menu (€120 for two). Must-try dishes: pečenica s medom (pork with honey, €28), jelač (wild boar, €32), and kremšnita s kavom (coffee cream cake, €18). The space is minimalist, with floor-to-ceiling windows overlooking the Sava River. Book for a Sunday dinner to experience the chef’s seasonal specials. Best for food critics and special occasions. The wine list features rare Croatian vintages, with a €50 minimum for two. The kitchen sources ingredients from local farms within 50km.
Kuća na Trgu, a family-run spot in the Šalata neighborhood, serves home-style Croatian food. Order the gulaš (€14), krompiruša (€10), and kremšnita (€6). The space is a converted 1950s apartment with mismatched furniture and family photos. Visit on a Thursday evening for live folk music (€5 cover). Perfect for locals and expats seeking authenticity. The menu changes daily based on market availability, and the kitchen uses organic produce from the nearby Zagreb Forest. Prices are lower than tourist spots, with a €30 total for two.
Zagreb’s dining scene thrives in its historic core and emerging hotspots. The city’s culinary identity blends Austro-Hungarian elegance with modern Croatian innovation. Avoid tourist traps in Ban Jelacic Square; instead, seek out authentic spots where locals eat. Prices range from €8 for a simple *kremšnita* to €35 for a multi-course tasting menu. Focus on neighborhoods with established food cultures, not just Instagrammable facades.
Upper Town’s cobblestone lanes host Zagreb’s oldest eateries, like Kaptol’s 18th-century *kavana* (€12–€18 for *ćevabdžinica*), where you’ll find locals debating politics over *sirnica*. The area’s character is steeped in history, with 15th-century architecture framing modern twists on *punjena paprika*. Avoid the overpriced *Gostilna u Kaptolu*; instead, head to *Dobrodošao* for *gulaš* (€14) in a cellar beneath a church. Stay at the 1920s *Hotel Grand* for €120/night.
Ilica Street’s 1.5km stretch is Zagreb’s dining artery, with 20+ restaurants within a 5-minute walk. The area’s character is a mix of student energy and business lunches. *Manduša* (€10–€15) serves *pečenica* (roast pork) in a 1920s interior, while *Kuća na Kameni* (€20–€25) offers *crni rizot* (black risotto) with squid ink. Avoid *Bistro 20*; its *pasta* is €18 for a small portion. Stay at *Hotel Esplanade* (€140/night) for proximity to the action.
Maksimir’s park-side restaurants cater to families and weekend brunchers. *Restoran Maksimir* (€12–€18) serves *krompiruša* (potato dumplings) with *kobasica* (sausage) in a garden setting. The area’s character is relaxed, with locals walking dogs and children playing. Avoid *Pizzeria Maksimir*; its *pizza* is €15 for a small pie. Stay at *Pansion Maksimir* (€90/night) for a quieter alternative to city-center hotels.
Trnje’s residential streets hide Zagreb’s most authentic dining scene. *Kuća na Kameni* (€15–€22) serves *pršut* (cured ham) with *kruh* (bread) in a 19th-century house, while *Gostionica* (€10–€15) offers *kremšnita* (cream cake) for €3. The area’s character is unpretentious, with families eating at long tables. Avoid *Trnje Bistro*; its *pasta* is €16 for a small plate. Stay at *Pansion Trnje* (€85/night) for a budget-friendly stay near the park.