Hotel Schema Generator — Win More Qualified Stays
Generate clean Hotel JSON‑LD for property pages. Clarify address, contact, geo, amenities, check‑in/out, and ratings to improve understanding and trust.
Why many hotel pages underperform
Pain points we solve
- Incomplete address/phone and missing geo reduce map accuracy and discovery.
- Amenities are listed in prose but not modeled (e.g., Free Wi‑Fi, Pool).
- Star ratings are mixed with user reviews, causing confusion.
- Check‑in/check‑out times and canonical image/URL are missing in markup.
How SwiftSchema helps
Solution
The Hotel generator ensures a full PostalAddress, international telephone, geo coordinates, images, and a canonical URL are present in a copy‑ready JSON‑LD block.
It supports amenityFeature via LocationFeatureSpecification, distinct starRating vs aggregateRating, and explicit checkinTime/checkoutTime to set expectations.
How it works
How it works
- Choose Hotel in the generator below.
- Enter property name, full PostalAddress, telephone, and canonical URL.
- Add geo coordinates and at least one image URL.
- List amenities using amenityFeature (name + value); set check‑in/out times.
- Use starRating for official stars and aggregateRating for user reviews. Copy JSON or Script, paste on the property page, and validate.
Paste once per property. Validate. Ship.
What is Hotel structured data?
Hotel structured data describes core property details — name, address, contact, amenities, and ratings — so search engines can better understand your listings. Some travel surfaces require partner participation; use markup to keep details accurate and complete.
Essential schema fields
- name— property name as displayed on signage and booking sites.
- url— canonical property page.
- image— hero photos of rooms, lobby, or exterior.
- telephone— international format contact number.
- address— full PostalAddress with street, city, region, postal code, country.
- geo— latitude/longitude for map accuracy.
- amenityFeature— list LocationFeatureSpecification entries (Wi-Fi, pool, spa).
- checkinTime/checkoutTime— ISO time strings.
- priceRange— optional; indicate “$$$” or starting rates.
- starRating— official star classification; separate fromaggregateRating.
- aggregateRating— user ratings with ratingValue/count.
Content prep checklist
- Provide room types, amenities, and on-site services (restaurants, spa).
- Include check-in/out times, parking info, and pet policies.
- Add CTA buttons for booking/reservations; specify booking platforms if relevant.
- List nearby attractions or transportation options to help searchers orient themselves.
- Show high-quality images of rooms, common areas, and experiences.
- Highlight accessibility features, sustainability initiatives, and loyalty programs.
Implementation workflow
- Update the property page with the info above (amenities, policies, images).
- Generate Hotel JSON‑LD with address, geo, contact info, amenities, check-in/out times, and ratings.
- Add amenityFeatureentries for differentiators (pool, EV chargers, childcare).
- Embed the schema once per property page; disable conflicting LocalBusiness schema if necessary.
- Validate using Rich Results Test; resolve warnings for address, telephone, or rating fields.
- Monitor Search Console and travel partner dashboards for data alignment.
Handling multiple properties
- Use Hotel schema per property. For chains, use Organization schema for the parent brand and link to property pages.
- Maintain consistent amenity lists across languages/regional sites; localize name/descriptionaccordingly.
- For multi-property landing pages, use ItemList to link to each property detail page.
Ratings and user reviews
- Use starRatingfor official stars;aggregateRatingfor user-generated ratings.
- Ensure on-page ratings match structured data; don’t inflate numbers.
- If you syndicate reviews from partners, confirm you have rights to display them before adding to schema.
Troubleshooting checklist
- Incomplete address: include full PostalAddress; mention suite/tower names.
- Missing geo: add latitude/longitude for map accuracy.
- Mixed ratings: keep starRating and aggregateRating separate.
- Amenity mismatch: only include amenityFeature entries for amenities listed on the page.
- Price confusion: update priceRangeor offers when rates change; don’t leave stale pricing.
Common Errors & Fixes
- Incomplete address: include street, city, region, postal code, and country.
- Confusing ratings: separate starRating (official) from user aggregateRating.
- Amenity mismatch: keep amenityFeature aligned with visible amenities.
Required properties
nameaddress.streetAddressaddress.addressLocalityaddress.addressRegionaddress.postalCodeaddress.addressCountrytelephone
Recommended properties
urlimagegeo.latitudegeo.longitudepriceRangeamenityFeature[].nameamenityFeature[].valuecheckinTimecheckoutTimestarRating.ratingValueaggregateRating.ratingValueaggregateRating.ratingCount
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "Hotel Swift",
"url": "https://example.com/hotel-swift",
"image": [
"https://example.com/images/hotel-swift.webp"
],
"telephone": "+1-555-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Main St",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 30.2672,
"longitude": -97.7431
},
"checkinTime": "15:00",
"checkoutTime": "11:00",
"amenityFeature": [
{
"@type": "LocationFeatureSpecification",
"name": "Free Wi‑Fi",
"value": true
},
{
"@type": "LocationFeatureSpecification",
"name": "Pool",
"value": true
}
],
"starRating": {
"@type": "Rating",
"ratingValue": 4
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"ratingCount": "812"
}
}