Services Contact Log in Check my hotel
All guides

Hotel schema markup: what AI platforms can read on your website

Your website describes your hotel in words written for guests. Schema markup presents important facts, such as your location, facilities and check-in times, in a standardised format that search engines and other software can interpret more easily.

What schema markup is

Schema.org is a shared vocabulary for describing things on the web: a hotel, an address, an opening time, a room. Schema markup is a small block of code on your page that uses this vocabulary. Guests never see it. Search engines and other software read it to learn what the page is about without having to interpret your prose.

The usual format is JSON-LD, which sits inside a <script type="application/ld+json"> tag in the page's HTML. Most hotel website builders and booking engine providers can add it, and many do so by default, although the default version is often thin.

Does AI actually read it?

Search engines such as Google use structured data to better understand the content of webpages. This can help them identify important information about your hotel, including its location, facilities and other characteristics.

AI platforms may discover hotel information through search engines, external sources or direct website retrieval. However, there is limited public evidence about exactly how individual AI platforms use hotel schema markup when generating recommendations.

Schema markup therefore helps make your hotel's information easier for machines to interpret, but it does not guarantee that your hotel will appear more frequently in AI-generated answers.

The best approach is to combine accurate structured data with clear, accessible information on your website.

What to mark up

Start with the type. Schema.org has Hotel, and more specific siblings such as Resort, BedAndBreakfast and Hostel. Use the one that fits. A generic LocalBusiness tells a machine far less.

Then fill in the properties a guest would care about:

  • Identity: name, url, description, image, telephone.
  • Location: address as a full postal address, and geo with latitude and longitude.
  • The stay: checkinTime, checkoutTime, numberOfRooms, petsAllowed, priceRange.
  • Facilities: one amenityFeature entry per facility, such as parking, pool, spa, restaurant or free wifi.
  • Classification: starRating, only if you hold an official rating.
  • Other profiles: sameAs with links to your Google Maps, Booking.com, Tripadvisor and social media pages. This ties your website to the same hotel elsewhere on the web.

If your site has a questions and answers section, mark it up as FAQPage.

A working example

This is an illustrative JSON-LD example for a fictional hotel. Replace all sample values with verified information about your property, and remove any properties that do not apply.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Hotel",
  "name": "Example Hotel",
  "url": "https://www.example-hotel.example/",
  "description": "A 24-room family-run hotel in the old town, five minutes on foot from the cathedral.",
  "image": "https://www.example-hotel.example/images/front.jpg",
  "telephone": "+43 000 000000",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Example Street 1",
    "postalCode": "5020",
    "addressLocality": "Salzburg",
    "addressCountry": "AT"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 47.7981,
    "longitude": 13.0465
  },
  "checkinTime": "15:00",
  "checkoutTime": "11:00",
  "numberOfRooms": 24,
  "petsAllowed": true,
  "priceRange": "€€",
  "starRating": { "@type": "Rating", "ratingValue": "4" },
  "amenityFeature": [
    { "@type": "LocationFeatureSpecification", "name": "Free wifi", "value": true },
    { "@type": "LocationFeatureSpecification", "name": "Private parking", "value": true },
    { "@type": "LocationFeatureSpecification", "name": "Breakfast restaurant", "value": true }
  ],
  "sameAs": [
    "https://www.tripadvisor.com/your-hotel-page",
    "https://www.booking.com/hotel/your-hotel-page"
  ]
}
</script>

Five mistakes to avoid

Marking up what the page does not say

Every fact in the markup should also be visible to a guest on the same page. Search engines treat a mismatch as misleading, and it defeats the purpose: the aim is one consistent set of facts.

Copying your review score from another site

Do not simply copy your Booking.com or Tripadvisor rating into an aggregateRating field. Review markup must follow Google's structured data guidelines, and hotels cannot obtain Google review rich results by marking up self-serving reviews on their own websites. Keep guest review scores separate from your hotel's official star classification.

Loading the markup with JavaScript

Some websites add structured data through JavaScript after the page loads. Google can process JavaScript-generated markup, but not every AI crawler necessarily executes JavaScript. For the broadest compatibility, include your JSON-LD directly in the HTML delivered by your server, so crawlers can access it without rendering the page first.

Letting it disagree with your listings

Keep your hotel's name, address and phone number consistent across your website, Google Business Profile and booking platform listings. Outdated phone numbers, incorrect addresses or conflicting hotel names can make it harder for search engines and other systems to identify your property reliably.

Setting it once and forgetting it

Check-in times change, a restaurant closes, a pool is added. Outdated markup is a wrong fact stated with great confidence. Review it whenever you update the page it sits on.

How to check your own site

  1. Open your homepage, view the page source and search for application/ld+json. If you find nothing, the page may still generate structured data through JavaScript.
  2. Enter your URL into the Schema Markup Validator to check the structured data detected on your page.
  3. Use Google's Rich Results Test to check eligibility for supported Google rich results. Not all valid Hotel schema properties are covered by this test.
  4. Compare the information in your markup with the visible website content and your external hotel listings.

Markup is one part of the picture. A myhotail Audit shows what AI platforms currently say about your hotel, so you can see whether the facts are getting through. For the wider picture, read how to get your hotel recommended by ChatGPT.