Skip to content

Online & legal

Structured data for restaurants, cafés and hotels: Schema.org made simple

For guests, your website is a shop window with photos, a menu and opening hours. For search engines, it is first of all just text. Structured data translates the key facts about your venue into a language that Google, Bing, map apps and AI assistants understand without ambiguity: this is a restaurant, it is located here, it is open at these times and it serves this cuisine. This guide explains, without any coding knowledge, what you need, what an example looks like, how to test it and which mistakes to avoid.

12 min readUpdated: November 2026

For:All venues
Restaurant owner with a tablet and a coffee at a table in his venue, checking the details on his website

Key points at a glance

  • Structured data describes your venue in a machine-readable way using the schema.org vocabulary. Guests don't see it, search engines and AI assistants do.
  • Choose the most specific type: Restaurant, CafeOrCoffeeShop, BarOrPub, Bakery, FastFoodRestaurant, Hotel or BedAndBreakfast.
  • For local businesses, Google only requires name and address, but recommends coordinates, opening hours, phone, website, price range, cuisine and a link to the menu, among others.
  • Check every change with Google's Rich Results Test and the Schema Markup Validator.
  • The data must match the visible content. Self-collected star ratings in your own markup won't earn stars on Google and quickly look dubious.

This post is general information and does not replace legal or tax advice. Rules change and some differ between federal states: check the details with your chamber of commerce (WKO) or IHK, the competent authority or your tax adviser.

What structured data is

Imagine handing a new supplier not your whole menu, but a filled-in form: name, address, phone, opening hours, cuisine. That is exactly what structured data is. It sits invisibly in the source code of your website and sums up the key facts in fixed fields. Which fields exist and what they are called is defined by schema.org, a shared vocabulary launched by Google, Microsoft, Yahoo and Yandex.

The benefit: a search engine doesn't have to guess whether “Mon–Fri 11–22” in the footer means opening hours or whether “Hauptstraße 5” is your address. It reads it straight from the form. That helps with classification in local search, with displaying opening hours and with AI assistants describing your venue correctly. Structured data is one building block of local SEO, not a substitute for good content and a well-kept Google Business Profile.

The right type for your business

Schema.org doesn't just know the generic “LocalBusiness”, but many more specific subtypes. For hospitality, “FoodEstablishment” is the umbrella term, with specific types underneath. The more specific the type, the clearer the message. Pick one main type that fits your business and the primary category on your Google profile.

BusinessMatching schema.org typeNote
Restaurant, traditional inn, GasthausRestaurantThe standard for venues with table service
Café, coffee houseCafeOrCoffeeShopAlso for patisserie cafés
Bakery, patisserieBakeryStill Bakery as the main type even with a café area
Bar, pub, wine barBarOrPubThere is also Winery, but that means a winery estate
Club, nightclubNightClubA subtype of EntertainmentBusiness
Snack bar, food truck, burger jointFastFoodRestaurantWithout a fixed location, an organization with contact details is often enough
Ice cream parlour, breweryIceCreamShop, BrewerySpecial types for exactly these businesses
Hotel, guesthouseHotel, BedAndBreakfast, HostelDescribe the hotel restaurant additionally as a restaurant of its own

A hotel with a restaurant open to the public can map both: the hotel as the main object and the restaurant as a separate object with its own opening hours, for example via the “department” property, which Google explicitly provides for departments of a business. There is no dedicated type for an Austrian Heuriger or Buschenschank (a wine tavern); Restaurant or Winery with clear opening hours are the usual options.

The key details

According to Google, only name and address are required for local businesses. The more complete the other details, the better a search engine can classify your venue. These fields matter most for hospitality:

PropertyWhat goes inWhat to watch
nameName of the venueExactly as on the sign and the Google profile, no promotional extras
addressStreet, postcode, town, countrySame spelling as in the legal notice
geoLatitude and longitudeAt least five decimal places according to Google
telephone, urlPhone with country code, websiteFor example +43 or +49 instead of 0
openingHoursSpecificationOpening hours per weekdayLeave out rest days, add closures with a validity period
servesCuisineCuisine, e.g. Austrian, Italian, VeganHonest and specific, not a list of every style imaginable
menu or hasMenuLink to the menu or a structured menuLink to a text menu, not a PDF
acceptsReservationsYes, no or a link to bookingOnly if booking is really possible
priceRangePrice level, e.g. €€ or €15–30Under 100 characters according to Google
imageLink to a photo of the venueA real photo, not a logo placeholder

Opening hours use English weekday names and 24-hour times, for example “Tuesday” from 11:30 to 22:00. If your bar is open until 2 a.m., write it as one time slot from 18:00 to 02:00, not as two entries. Seasonal closures such as holidays or the winter break of your terrace or beer garden can be added with a start and end date. The menu itself should be on the website as text; how to build it is explained in the guide to the digital menu.

An example, line by line

This is what the content of a JSON-LD block for a fictional inn looks like. In the source code it sits in a script element of the type “application/ld+json”, usually in the head of the page. For readability it is shown here as a list of field and value; in real code, field names and texts are in quotation marks and grouped with curly brackets.

  • @context: https://schema.org (says which vocabulary is used)
  • @type: Restaurant
  • name: Gasthaus Zur Linde
  • address: PostalAddress with streetAddress “Hauptplatz 3”, postalCode “4020”, addressLocality “Linz”, addressCountry “AT”
  • geo: GeoCoordinates with latitude 48.30639 and longitude 14.28611
  • telephone: +43 732 000000
  • url: the venue's home page
  • servesCuisine: Austrian, Regional
  • priceRange: €€
  • menu: link to the menu page
  • acceptsReservations: link to the booking page
  • openingHoursSpecification: dayOfWeek Tuesday to Saturday, opens 11:30, closes 22:00; a second entry for Sunday from 11:00 to 15:00

Monday is missing from this example on purpose: it is the rest day. For a café, the type would be “CafeOrCoffeeShop” instead of Restaurant, for a bar “BarOrPub”, and the rest stays the same. The opening hours generator creates the finished block for your opening hours automatically, including public holidays and closures.

Generate opening hours as JSON-LD

Enter your hours once and get website text, a door sign, a Google post and structured data ready to paste. Free and without sign-up.

How the data gets onto your website

  1. 1

    Set the type

    Choose the most specific schema.org type for your business, matching the primary category on your Google profile.

  2. 2

    Gather the data

    Collect name, address, coordinates, phone, opening hours, cuisine, price range and the addresses of your menu and booking pages, exactly as they appear on the website.

  3. 3

    Create the block

    Have the JSON-LD block created with a generator, a plugin of your website system or by your agency. Hand-written code is error-prone.

  4. 4

    Insert it

    Add the block to the home page, or to each location page if you have several locations. Many site builders have a field for custom code in the head for this.

  5. 5

    Test

    Check the published page with the Rich Results Test and the Schema Markup Validator and fix any errors.

  6. 6

    Maintain

    Whenever opening hours, phone or menu change, update the structured data too. It is safest when the website system generates it automatically from the visible content.

Testing: Rich Results Test and validator

Two free tools show whether your structured data is read correctly. Both work with the address of a published page or with pasted code.

  • Google's Rich Results Test: shows which data Google detects and reports errors and warnings for the features Google supports. Errors must be fixed, warnings usually concern missing recommended details.
  • Schema Markup Validator (validator.schema.org): checks the entire schema.org vocabulary, including properties Google doesn't use, such as acceptsReservations. Good for finding typos in field names.
  • Google Search Console: after a while it shows whether Google finds problems with structured data while crawling and notifies you by email. Search Console is worth it for your website statistics anyway.

Passing the test means the data is technically correct. It does not guarantee any particular display in the search results: Google decides for itself which information to show and when. Check how the title and description of your page look in the results with the Google preview as well.

Common mistakes and no fake stars

Most problems don't arise during setup, but months later, when something changes at the venue and the markup is forgotten. Others come from well-meant shortcuts. Google's general guidelines require structured data to reflect the visible content of the page and not to be misleading. Breaking them risks Google ignoring the data or issuing a manual action.

How to get it right

  • The same opening hours as on the page, the Google profile and the door
  • Choose the most specific type, e.g. CafeOrCoffeeShop instead of LocalBusiness
  • Phone with country code and a full address including the country
  • Test again after every change
  • Link to genuine reviews on Google or platforms visibly

Better not

  • Entering made-up or self-collected star ratings as aggregateRating
  • Putting dishes, cuisines or places in the markup that appear nowhere on the page
  • Leaving outdated hours after a summer break or a move
  • Several contradicting blocks from theme, plugin and your own code at once
  • Linking a PDF menu that nobody can read on a phone

About stars: according to its review snippet guidelines, Google doesn't show stars for local businesses whose reviews on their own website are controlled by the business itself. This explicitly includes embedded third-party widgets. A “4.9 stars” markup on your own home page therefore brings no advantage, and at worst trouble. Put the energy into genuine Google reviews instead. A table stand that takes guests straight to your review form with one scan is quick to make with the Google review QR code.

What structured data does and doesn't do

To be honest: structured data won't turn a weak website into a strong one. It isn't a direct ranking factor that lifts you overnight, and for a venue there is no spectacular rich result like there is for recipes or events. Its value lies in clarity. Search engines, map apps and AI assistants such as ChatGPT or Gemini draw on many sources, and consistent, machine-readable facts on your own website are one of them. How chatbots recommend venues is covered in the guide to visibility in AI search. Whether ChatGPT already recommends your venue today is shown by the AI preview for restaurants.

Structured data is most useful when everything else is right: a website with clear copy, a menu as text, a complete Google profile and the same details everywhere. If you hold events regularly, event markup is worth adding too; how to make events visible online is explained in the guide promoting events online. If you are hiring, there is a dedicated “JobPosting” markup that lets your vacancies appear in Google's job search; the guide on finding staff through your own website explains how.

Structured data checklist

  • Most specific schema.org type chosen (Restaurant, CafeOrCoffeeShop, BarOrPub, Hotel …)
  • Name and address identical to website, legal notice and Google profile
  • Coordinates, phone with country code and website address entered
  • Opening hours per weekday, rest days left out, closures with dates
  • Cuisine, price range, menu and booking included
  • No self-controlled star ratings in the markup
  • Rich Results Test and Schema Markup Validator without errors
  • Fixed routine: every change at the venue is also made in the markup

A website with structured data included

We'll show you for free what your hospitality website could look like, with a menu as text and automatically maintained structured data.

Request a free preview

A free preview of your venue website, designed by us.

Sources

Quick answers

Questions on this topic

What is structured data on a restaurant website?

Structured data is an invisible block in the source code that describes the key facts about your venue in fixed schema.org fields: type, name, address, opening hours, cuisine, menu and booking. Search engines and AI assistants can read these details without ambiguity.

Do I need coding skills for Schema.org?

No. Many website systems and plugins generate structured data automatically, there are generators for opening hours, and an agency can add the block. What matters is that you know the content and check the result with the Rich Results Test.

Does structured data improve rankings?

Not directly. It helps search engines classify your venue correctly and makes details like opening hours unambiguous. Good positions in local search still depend on relevance, distance and prominence, meaning content, Google profile and reviews.

Can I add my reviews as stars in the markup?

That is not advisable. Google doesn't show stars for local businesses when the reviews on their own website are controlled by the business itself, not even through embedded widgets. Made-up or embellished reviews also violate the guidelines.

Which type fits a café with a bakery?

Choose the type that best describes your main business: Bakery if bread and pastries come first, CafeOrCoffeeShop if guests mainly come to sit and drink coffee. It should match the primary category on your Google profile.

How often do I need to update the structured data?

Whenever the details in it change: new opening hours, holiday closures, a new phone number, a move or a new address for the menu. It is easiest when the website system generates the markup automatically from the visible content.

Free website preview

See your new website before you pay

Your name, email, type of venue and concept are enough, plus your current website if you have one. We use them to build a preview for your venue and send you the link. Free and with no obligation.

  • Preview in 3 days
  • Made in Vienna
  • No cookie banner
  • WCAG AA
  • 6 languages

A free preview of your venue website, designed by us.

We only use your details for the preview and our reply. You’ll find the details in our privacy policy.