Your website says “Welcome to our family-run hotel by the sea” in beautiful type. A machine reading it has to guess what that means. Structured data removes the guessing: a short block of code, invisible to guests, that states the facts in a format Google, Bing and AI assistants all understand.
It is the first of the three fixes in almost every AI Visibility Check we run, because it is usually missing, incomplete or describes the wrong thing.
What it looks like
Structured data for a hotel uses the schema.org vocabulary, written as JSON-LD inside the page. A minimal, correct example:
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "Villa Aurelia",
"url": "https://villa-aurelia.example/",
"telephone": "+30 28210 00000",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Akti Koundourioti",
"addressLocality": "Chania",
"postalCode": "73131",
"addressCountry": "GR"
},
"geo": { "@type": "GeoCoordinates", "latitude": 35.5172, "longitude": 24.0179 },
"numberOfRooms": 14,
"checkinTime": "14:00",
"checkoutTime": "11:00",
"petsAllowed": "Dogs up to 10 kg, €15 per night",
"priceRange": "€€",
"amenityFeature": [
{ "@type": "LocationFeatureSpecification", "name": "Free parking", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "Cots available", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "Breakfast on the terrace", "value": true }
]
}
The hotel is an example. Replace every value with your own.
The fields that matter most
schema.org defines dozens of properties for a Hotel (a type of LodgingBusiness). These are the ones that answer the questions guests actually ask an assistant:
| Field | What it answers |
|---|---|
@type |
Hotel, BedAndBreakfast, Hostel, Resort, VacationRental: what kind of place you are |
address and geo |
Where exactly, for “near the old harbour” or “walking distance to the beach” |
numberOfRooms |
Boutique or large; families and groups care |
checkinTime, checkoutTime |
Early arrivals and late flights |
petsAllowed |
Yes, no, or the actual policy in words |
amenityFeature |
Parking, pool, cots, accessibility, air conditioning, breakfast |
priceRange |
A rough budget signal |
starRating |
Only an official rating, if you have one |
Use a plain sentence where a yes or no is not enough. “Dogs up to 10 kg, €15 per night” is more useful to a guest, and to an assistant, than true.
The one rule: mark up only what guests can see
Google’s general structured data guidelines are explicit: do not mark up content that is not visible to readers of the page, and do not mark up misleading content. If your structured data says “free parking” but no page says it, you are describing a different hotel from the one on the screen.
This rule protects you as well. Most contradictions we find are not lies, just old facts: the code still says check-in at 15:00 after the hotel moved it to 14:00. Assistants that find two answers tend to trust neither.
Rooms and holiday rentals
- Rooms. If each room type has its own page, describe it there with
HotelRoom(bed type, occupancy, size) on that page. One page per room type helps both guests and assistants answer “family room for four”. - Holiday rentals. schema.org has a
VacationRentaltype. Google’s rich results for vacation rentals are currently limited to sites that work with a Google technical account manager through Hotel Center, so for most hosts the value is in clear, correct facts rather than a special listing in search. - Reviews. Do not mark up reviews of your own business on your own site to get stars in search. Google treats these as self-serving reviews and does not show them.
Check yours in ten minutes
- Open Google’s Rich Results Test (search for it) and paste your home page address.
- Look for a detected item of type Hotel, LodgingBusiness or LocalBusiness. If nothing is detected, you have no structured data.
- Open the item and compare every value with your website and your Booking.com page: name, address, phone, check-in time, pets, parking.
- Write down every difference. Each one is a fix.
- Repeat on your rooms page and your contact page.
If your site runs on WordPress, Wix or Squarespace, most of this can be added without a developer, through an SEO plugin or the site’s business information settings. During Setup we add it for you, matched to your listings, when you give us access.
Sources
- schema.org: Hotel and LodgingBusiness
- schema.org: Hotels and accommodation markup guide
- Google Search Central: General structured data guidelines
- Google Search Central: Vacation rental structured data
Read on 4 November 2026.
