Skip to content
Hotelmark
Google + local visibility

Schema markup for hotels: rich results and AI visibility

2026-05-29·9 min read
Schema markup for hotels: rich results and AI visibility

Most small accommodation sites have no schema markup. That means Google reads their pages as plain text, while competitors with the right code show stars, ratings and prices right in the search results. That's low-hanging fruit.

What schema markup is and why it matters

Schema markup (or structured data: code you add to your webpage to tell search engines what it is) is a layer of information you add to your page alongside visible content. It's part of the broader technical foundation you bring in order via the SEO basics for your hotel site. Search engines read that code and understand not just that your text is about a hotel, but also that it's a specific hotel, with an address in a particular city, an average rating of 4.3 out of 87 reviews, and rooms starting at a certain price.

That information Google can then show enriched in search results: yellow stars, price range, review counts, an FAQ right under your result. That's called a rich result.

Rich results are more visible than plain blue links. They attract more clicks, even if you're not in position 1. A result in position 3 with stars and review counts often beats number 1 without markup in click-through rate.

There's another argument that's increasingly relevant: AI assistants like Google AI Overviews, ChatGPT and Perplexity use schema markup to process structured business data in their answers. A hotel that describes itself correctly in structured data has a better chance of appearing as a recommendation when someone asks "what hotel in Utrecht has good breakfast and parking".

Which schema types matter for accommodations

There are dozens of schema types, but for accommodations five have direct effect.

Schema typeWhat it doesFor whom
HotelMarks the page as hotel, including address, price, amenitiesHotels with front desk and full service
BedAndBreakfastSubtype of LodgingBusiness, more specific than HotelB&Bs with breakfast
LodgingBusinessUmbrella type for all accommodationsGlamping, vacation park, hostel
FAQPageMarks an FAQ section so Google expands it directlyAny accommodation page with common questions
AggregateRatingProcesses rating data for rich results with starsSites with own review system or integration
BreadcrumbListShows navigation path in search resultsAny page in a hierarchical site structure

Pick the most specific type that applies to your accommodation. BedAndBreakfast is more specific than LodgingBusiness and gives Google more context.

Combining types works too: a hotel with an FAQ section uses Hotel plus FAQPage on the same page, in the same script tag.

Step by step: adding schema markup

Step 1: determine your type and gather data

Determine which type applies based on the table above. Then gather the information you want to include:

  • Official accommodation name
  • Full address including postal code
  • Phone number and website URL
  • Price range (single symbol as icon: euro sign, two euros, three euros)
  • Average rating and number of reviews, if those are on your site
  • URL of an accommodation photo
  • URL of your booking page

Step 2: choose JSON-LD as format

Google supports three formats for structured data: JSON-LD, Microdata and RDFa. JSON-LD is Google's recommended method. It sits as a standalone script block in your page head and doesn't mix with your HTML. That makes it easier to add and maintain.

Step 3: add the code

Below is an example for a B&B. Adjust to your own details.

{
  "@context": "https://schema.org",
  "@type": "BedAndBreakfast",
  "name": "B&B The Golden Shore",
  "url": "https://www.thegoldenshore.nl",
  "telephone": "+31-555-123456",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Waterfront Street 12",
    "addressLocality": "Zwolle",
    "postalCode": "8011 AB",
    "addressCountry": "NL"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 52.5125,
    "longitude": 6.0942
  },
  "priceRange": "euro-euro",
  "image": "https://www.thegoldenshore.nl/images/outside.jpg",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.4",
    "reviewCount": "63"
  },
  "amenityFeature": [
    {
      "@type": "LocationFeatureSpecification",
      "name": "Free WiFi",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Breakfast included",
      "value": true
    }
  ]
}

Paste this script block into the <head> of your homepage, enclosed in <script type="application/ld+json"> and </script>.

Adding schema to a website
Foto: Campaign Creators

Step 4: add via plugin if you use WordPress

If you use WordPress, two plugins partly auto-generate schema markup.

Rank Math has built-in support for LocalBusiness and Hotel schema. Under SEO settings per page you pick the type and fill in fields via a form. Rank Math adds the JSON-LD code itself.

Yoast SEO auto-generates basic schema based on your site settings. For accommodation types you need the paid version or an add-on plugin like Schema Pro.

Manual or via plugin: the end result is the same. Choose what fits your workflow.

Step 5: test with the Rich Results tool

Go to search.google.com/test/rich-results and paste your URL. The tool analyzes your page and shows:

  • Which schema types were found
  • Which rich results your page qualifies for
  • Any errors or warnings

Fix errors immediately, because schema with errors doesn't count. Warnings are less urgent but better to fix.

An extra tool is the Schema Markup Validator at validator.schema.org. It checks if your markup is syntactically correct, regardless of whether Google makes rich results from it.

Common mistakes

Adding markup without the information visible on the page. This is the most impactful error. If you specify a 4.5 rating in your schema but that rating doesn't show anywhere on your page, Google rejects the markup. The information in your schema must match what guests read on the page. Don't include a score in your schema if it's not visible.

Using the wrong schema type. Hotels using LodgingBusiness when they could use Hotel miss specificity. B&Bs using Hotel get miscategorized for 'B&B in X' searches. Always use the most specific type that fits.

Only putting schema on the homepage. Your homepage needs LodgingBusiness or Hotel. Room pages benefit from HotelRoom markup. An FAQ page needs FAQPage. Each page can have its own schema fitting that specific page's content.

Including AggregateRating with made-up or outdated data. If your review count changes and you don't update your schema markup, the data diverges. Google detects that and can ignore the markup. Link review data dynamically to your schema if possible, so it auto-updates.

Using FAQPage markup for questions that don't answer. A FAQ question like "Why is B&B The Golden Shore the best choice?" isn't a question-and-answer in the schema sense. Google expects answers that are informative and direct. Use FAQPage for real questions guests ask: check-in times, parking, pets, breakfast.

Adding schema takes an hour, pays for years

You do it once right, test it, and then it works in the background. No monthly attention needed unless your rating data changes or your address moves. Few technical SEO tasks have such a favorable investment-to-return ratio.

What this means for AI visibility

Google AI Overviews, Perplexity and ChatGPT pull information about local businesses partly from structured data. A hotel without schema markup is harder for an AI to place than a hotel with complete LodgingBusiness markup with address, amenities and rating.

That matters because search behavior is shifting. More and more people ask an AI "what B&B in Zeeland has good breakfast and is pet-friendly" instead of typing a search and reading results themselves. The accommodations answering that question are the ones with their data correctly structured.

So schema markup isn't a technical niche optimization anymore. It's basic infrastructure for visibility in both traditional search and AI-driven searches. How you ready your whole site for those AI assistants, read in AEO and GEO for accommodations.

No schema is a choice for invisibility

If you don't do it and a competitor in your region does, Google shows them with stars and ratings and you as a plain blue link. The guest clicks on what stands out. Adding markup takes an hour. Not adding it costs you clicks every day.

How schema gives you an edge in AI answers

An AI needs 3 things about your accommodation before it dares recommend you: what you are, where you are, and what you offer. Plain page text forces the model to piece those facts together from scattered sentences. Schema markup hands them over ready-made, in a format that needs no interpretation.

The difference is concrete. When someone asks "what pet-friendly hotel in Maastricht has parking," the AI compares accommodations on those exact features. A hotel that has amenityFeature with "Pets allowed" and "Parking space" in its LodgingBusiness markup delivers that match directly. A competitor who only mentions the same facilities in running text often falls out of the running.

You don't have to write anything new. The amenities are already on your site. You just translate them into structured fields so they're readable by both Google and the AI layer on top. Same one-hour investment, with a second payout in a channel that's growing fast.

What you can do now

Start with your homepage. Determine your type (Hotel, BedAndBreakfast or LodgingBusiness), gather name, address, phone, photo URL and rating data, and add the JSON-LD code. Then test with the Rich Results tool.

Next is consistency: make sure your name and address in your schema exactly match your Google Business Profile. How you set that profile correctly, read in Google Business Profile setup for hotels and B&Bs. The ranking factors that determine how high you appear in the local map block are in local SEO for B&Bs: the ranking factors.

For the broader technical layer, including title tags and meta descriptions that align with your schema, read title tags and meta for hotels. Want an overview of all the steps that together determine your visibility, the visibility hub is where to start. And if you want to see which search queries are already bringing traffic to your site, Google Search Console for hoteliers is the starting point.

Want to know what correct markup and better visibility brings you in direct bookings, calculate it with the savings calculator. Rather have someone set this up as part of a broader SEO approach? We do that at marketing for hotels.

Frequently asked questions

What exactly is schema markup?
Schema markup is structured data: code you add to your webpage so search engines understand what's on that page. For a hotel it tells Google it's an accommodation, including address, ratings, price range and amenities. Google can then show that information enriched in search results.
Does schema markup directly affect my ranking?
Schema markup isn't a direct ranking factor, but does have indirect effect. Rich results attract more clicks, and higher click-through rate is a positive signal for Google. Also, correct markup is a requirement for certain rich results that display more prominently than regular results.
What schema type should a B&B use?
Use BedAndBreakfast as the most specific type. BedAndBreakfast is a subtype of LodgingBusiness, which is itself a subtype of LocalBusiness. The more specific the type, the better Google can categorize you for the right searches.
Do I have to do this manually or can a plugin do it?
Both work. If you use WordPress, Rank Math and Yoast SEO partly automatically add schema markup. For full control, or if you're not on WordPress, add the JSON-LD code manually. JSON-LD is Google's recommended method and sits in a script tag in your page head.
How do I know if my schema markup is correct?
Use Google's Rich Results Test at search.google.com/test/rich-results. Paste your URL in or test code directly. The tool shows which rich results your page qualifies for and reports errors or warnings you need to fix.
Does schema work for AI searches like ChatGPT or Google AI Overviews?
Yes. Both Google AI Overviews and other AI assistants use structured data to show accurate information about businesses. A hotel with correct LodgingBusiness markup has more chance of appearing as a recommendation when someone asks an AI for accommodations in your region.
Which amenities do I put in my schema for better AI visibility?
Include in the amenityFeature field the features where guests actually filter: parking, free WiFi, pets allowed, breakfast included, air conditioning, family-friendly. Those are exactly the features an AI compares accommodations on when someone asks for, say, a pet-friendly hotel with parking. Make sure every feature you add in your markup also shows visible on your page, otherwise Google can reject the data.

A concrete tip in your inbox each month

Practical marketing and automation tips for small-scale accommodations. No sales talk, unsubscribe anytime.

Your email address is only used for these emails and never shared. You can unsubscribe from any email. See the privacy policy.

Read more

Questions about what this means for you?

Join the waitlist for the launch. We translate the news into concrete steps for your accommodation.