Schema.org markup is code added to your website that explicitly tells AI systems and search engines what your page describes. Without it, AI systems have to infer your property type, location and attributes from your text content, which is unreliable. With it, you are giving them a structured, machine-readable description that removes ambiguity.

For AI search systems that browse the web (Perplexity, ChatGPT with browsing, Google AI Overview), schema markup is a high-priority signal. For AI systems operating from training data, schema markup on widely-crawled web pages increases the accuracy and completeness of what those systems learned about your property.

The schema types to use

For hotels, B&Bs and guesthouses: use https://schema.org/Hotel or https://schema.org/BedAndBreakfast. Both extend LodgingBusiness.

For vacation rentals and apartments: use https://schema.org/Accommodation or more specifically https://schema.org/Apartment, https://schema.org/House, or https://schema.org/Suite depending on property type.

For resort properties: https://schema.org/Resort.

The minimum viable hotel schema block

{
  "@context": "https://schema.org",
  "@type": "Hotel",
  "name": "The Harbour House Hotel",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "14 Harbour Road",
    "addressLocality": "Porto",
    "addressRegion": "Porto District",
    "postalCode": "4050-001",
    "addressCountry": "PT"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 41.1496,
    "longitude": -8.6109
  },
  "telephone": "+351 22 123 4567",
  "url": "https://www.harbourhousehotel.com",
  "starRating": {
    "@type": "Rating",
    "ratingValue": "4"
  }
}

This block goes inside a <script type="application/ld+json"> tag in your page’s <head>.

What to add for a complete implementation

Amenities: Use amenityFeature with LocationFeatureSpecification entries. Example:

"amenityFeature": [
  { "@type": "LocationFeatureSpecification", "name": "Free WiFi", "value": true },
  { "@type": "LocationFeatureSpecification", "name": "Outdoor Pool", "value": true },
  { "@type": "LocationFeatureSpecification", "name": "Restaurant", "value": true }
]

Room count: "numberOfRooms": 24

Price range: "priceRange": "€€" (use currency symbols as a rough indicator)

Description: "description": "A 24-room boutique hotel in the Ribeira district of Porto, with river views from most rooms and a rooftop terrace. Independently owned since 1987." Keep this to 2-3 sentences. This is what AI systems use when they describe your property.

Image: "image": "https://www.harbourhousehotel.com/images/hotel-exterior.jpg"

Check-in/check-out times: "checkinTime": "15:00", "checkoutTime": "11:00"

On room pages

If your website has individual room type pages, add Accommodation schema to each one with the room name, description, number of beds, bed types, amenities and price range. This gives AI systems rich attribute data for queries that specify room type.

How to check your implementation

After adding schema markup, validate it using Google’s Rich Results Test (search “Google rich results test”). It will show you any errors or missing fields and confirm what Google’s systems can read from your page.

See also: What is llms.txt for hotels | Get found: the technical playbook