Skip to content
Structured Data 2 min read

How do I mark up hotel rooms and offers?

Short answer

You can describe hotel rooms with the schema.org HotelRoom type — including bed details, occupancy, floor size, and room amenities — and connect rooms to your Hotel. Offers (a room at a price for dates) can be described with Offer. Keep expectations realistic: room and offer markup can make your pages more explicit, but Google doesn't document a rich result for hotel room markup, and its hotel prices come from price feeds rather than page markup. If you add room markup, make sure every value matches what's visible on the room page and stays current.

By Lodging Engine Editorial Team· Reviewed by Eric Zwanenburg· Last reviewed

What schema.org offers

  • `HotelRoom`: a room type, with properties such as bed (or BedDetails), occupancy, floorSize, and amenityFeature.
  • `Hotel` (or another lodging type): the property the rooms belong to, which can list rooms with containsPlace.
  • `Offer`: a price and availability for something, which schema.org allows to describe room offers.

Example (JSON-LD)

{
  "@context": "https://schema.org",
  "@type": "HotelRoom",
  "name": "Deluxe Sea View Room",
  "bed": { "@type": "BedDetails", "numberOfBeds": 1, "typeOfBed": "King" },
  "occupancy": { "@type": "QuantitativeValue", "maxValue": 2 },
  "floorSize": { "@type": "QuantitativeValue", "value": 28, "unitCode": "MTK" },
  "amenityFeature": [
    { "@type": "LocationFeatureSpecification", "name": "Balcony", "value": true }
  ]
}

Example values only — use your real room details.

What Google does with it

  • Google's general structured data guidelines apply: mark up only visible content, keep it accurate.
  • There's no documented Google rich result for hotel room markup.
  • Rates in Google's hotel results come from price feeds through Hotel Center and integration partners. See Google Hotel Center explained.

Should you add room markup?

  • Yes, if your room pages are detailed and your platform can generate markup from the same data.
  • Lower priority than accurate Hotel markup on your main property page and detailed visible room content.

Offers and prices

Live prices change constantly. Static price markup quickly becomes wrong. If you mark up offers, generate them from your booking data and include the conditions; otherwise leave prices to your booking engine and price feeds. See can structured data show prices in Google?.

Common mistakes

  • Room markup copied across all room types.
  • Static prices in markup that no longer match.
  • Markup describing amenities not shown on the page.

Checklist

  • Main property markup accurate first
  • Room markup generated from page data
  • Values match visible content
  • No stale static prices
  • Validated after changes

Sources

  1. HotelRoom (schema.org type) — schema.org
  2. Hotel — Schema.org
  3. General structured data guidelines — Google Search Central
  4. How to get started with hotel campaigns — Google Hotel Center Help