Niche Hotel QualificationsWhat Booking, Expedia, Google and schema.org can and cannot say
A growing share of hotels sell a specific reason to stay: a locked bike room and a repair stand, a yoga room with a class schedule, a roaster’s beans on a real espresso machine, a kids’ club that takes four-year-olds. I compared the four amenity lists that carry hotel facts to booking sites and AI assistants against six of these niches.
Most of the niches have a yes/no box somewhere. None of the lists can say what is behind the box. The article ends with a proposal that uses schema.org as it exists today, and a worked example on a test hotel site.
A flag and a fact
A cyclist choosing a hotel asks a handful of concrete questions. Can I bring the bike into a locked room, or does it stay in the courtyard? Is there a pump and a set of tools? Can I charge the battery of an e-bike? Will someone tell me which road out of the city is safe on a Sunday morning? Can I book a single night?
These questions already have written answers. France’s Accueil Vélo label, held by more than 9,000 businesses, guarantees seven things: directions to reach the place by bike, a welcome with useful documentation, free secure bike parking, a place to leave luggage, charging for phones and GPS units, charging for e-bikes, and a complete repair kit with the address of the nearest repairer. Germany’s Bett+Bike scheme goes further and lists the tools in the kit, down to the spanner sizes.
The amenity lists that feed booking sites reduce all of this to one or two booleans: “Bicycle rentals: yes”. That box is true for a hotel that lends two city bikes from the lobby and for a hotel built around a cycling workshop. It is false for a hotel with a locked bike room that rents nothing, which is the common case for cycling hotels in cities.
I call the full answer a niche qualification: a set of specific, checkable facts that make a hotel suitable for one kind of guest. This article looks at six of them.
- Cycling: secure storage, tools, washing, drying, charging, routes, early breakfast.
- Yoga: a room, equipment, a schedule, a teacher, whether it is included.
- Specialty coffee: the machine, the roaster, the brew methods, the hours.
- Kids: a kids’ club with ages and hours, babysitting, cribs, rules for shared spaces.
- Chess and board games: sets, clocks, events, whether children may play.
- Dogs: size limits, fees, what is provided, where to walk.
Four amenity lists, checked code by code
Hotel facts reach booking sites and AI assistants through a small number of controlled lists. I read the published versions of four of them on 31 October 2026.
- Booking.com’s connectivity codes (property and room): 286 property codes and 293 room codes. They start from the OpenTravel 2014B lists and add Booking’s own codes from 5000 upward.
- Google’s Lodging schema (Business Profile Lodging API): 298 named fields in 45 groups. This is what feeds the attributes on a hotel’s Google listing.
- Expedia: the developer reference that lists amenity IDs only renders in a browser and I could not load it, so the Expedia column below uses the labels shown on live expedia.com property pages. It shows that the concept exists in Expedia’s data. It does not give the ID.
- OpenTravel code lists (hotel amenity, room amenity, recreation and spa lists), read through two public mirrors, since the official list sits behind a member area.
| Niche fact | Booking.com | Expedia (page label) | Google Lodging | OpenTravel |
|---|---|---|---|---|
| Bike rental | 202 "Bicycle rentals", 5002 "Bikes available (free)" | "Bicycle rentals" | bicycleRental, freeBicycleRental | HAC 202 |
| Secure bike storage | Only 5178 "Bike parking", in a block marked deprecated | Not seen ("Ski storage" is) | None | None found |
| Repair kit, bike wash, drying room | None | Not seen | None | None found |
| Yoga classes | 5087 "Yoga classes" | "Yoga classes" | None (wellness has fitness centre, spa, sauna, massage) | SPA 29 "Yoga studio" |
| Coffee | Room 19 "Coffee/Tea maker", 5120 "Coffee Machine"; 5075 "On-site coffee house" | "Coffee and tea in common areas" | coffeeMaker, kettle, teaStation (in the room only) | HAC 20 "Coffee shop" |
| Specialty coffee (roaster, machine, barista) | None | None seen | None | None |
| Kids' club | 5054 "Kids' club" | "Supervised activities for children" | kidsClub, kidsActivities | REC 44 "Children's program" |
| Kids' club age range and hours | None | None seen | None (a boolean only) | None |
| Babysitting, cribs | HAC 8, room 5175 | "Babysitting", crib fee in text | babysitting, cribsCount | HAC 8, RMA 26 |
| Board games | 5061 "Board games/puzzles" | "Toys/Games" | None (gameRoom means arcade, pool, foosball) | RMA 255 |
| Chess | None | None seen | None | None |
| Dogs allowed | Pets policy: allowed, not allowed, by arrangement; free or "charges may apply" | Pet policy with count and fee | petsAllowed, dogsAllowed, catsAllowed | HAC 224 |
| Dog size or weight limit | None | In text, not confirmed as a field | None | None |
The pattern is consistent. Each list has a box for the most visible version of a niche: rental bikes, a kids’ club, a coffee maker, pets allowed. None has room for the details a guest in that niche actually checks: where the bike sleeps, what age the kids’ club starts at, which roaster, how big a dog.
Where the detail went instead
These lists are not short. Their size went elsewhere. Booking has 7 property codes for skiing (from ski storage to a ski pass vendor) and 8 room codes for game consoles, including separate ones for the PS2 and the Wii U. Its 4 current bike codes cover rental, free bikes, a cycling activity and bike tours. The only code for parking a bike sits in a sustainability block the documentation says “will soon be removed”.
Google’s schema shows a similar spread. Pools get fourteen fields, down to wave pools and lazy rivers. Twenty-seven fields describe health and safety measures added in 2020, such as disinfected plastic key cards. Families get four booleans and pets get four.
Selected groups. Health and safety sums the five 2020 sub-groups. Source: Google Business Profile Lodging API reference.
What AI assistants inherit
AI assistants do not have their own hotel taxonomy. They reuse these ones. In my questionnaire study the hotel cards ChatGPT showed were Google place records, and a model calling a places tool sees the Business Profile subset of attributes: pool, parking, Wi-Fi, breakfast. The booking tools that assistants call take the same shape.
- Expedia’s open-source MCP server has an
amenitieslist parameter (its examples are POOL and SPA) and aquery_textfield that passes the traveller’s own words through as free text. A request for a locked bike room can only travel in that free text. - Booking.com’s MCP server, open to partners, exposes one search tool with no documented facility filter.
ChatGPT’s own follow-up questionnaire shows the vocabulary it reaches for. When it asks a traveller to narrow a hotel search, it offers a short form with pre-written options. I stored 605 of these forms from the weekly AI Hotel Landscape panel between 13 and 19 October 2026 (8,837 options in all) and counted how often each kind of option appeared.
605 forms, 13–19 October 2026, 433 distinct prompts. Counted by keyword in the option label.
Most of these options were ChatGPT’s own suggestion. Only 30 of the 605 forms answered a prompt that mentioned a pool, yet 277 forms offered one. Spa and wellness appeared in 125 forms and in no prompt. The single yoga option was “Wellness, yoga and relaxation”, as a kind of trip. ChatGPT also asks about children often: 306 forms offered a family option and 65 asked the children’s ages. It then has no structured place to look up whether a kids’ club takes a five-year-old.
The limit of this sample matters. None of the 433 prompts mentioned cycling, yoga, coffee, chess or dogs, so the zeros say what ChatGPT volunteers, not what it would do for a cyclist who asks. They show which preferences the assistant treats as standard, and those are the ones the amenity lists have boxes for.
What schema.org can already carry
The hotel’s own website is the one place where it can publish whatever it wants. Schema.org gives it three useful tools, and none of them needs a change to the vocabulary.
amenityFeature, with more than a name
A hotel lists facilities with amenityFeature, whose values are LocationFeatureSpecification objects. The name is free text, and there is no controlled list. The type inherits from PropertyValue, so each feature can also carry:
propertyID: “a prefixed string for standards… or a URL pointing to an external vocabulary”. This is the hook for a shared list of niche criteria.value: a boolean, a number, a text or a structured value such as an age range.hoursAvailable,validFromandvalidThrough: opening hours and seasons.description: the detail in words.
Almost no hotel uses even the basic form. In my schema adoption study of 121,425 hotel homepages, amenityFeature appeared on 7.7% of the sites that had JSON-LD.
Certification, for labels
Certification entered schema.org core in version 25.0 (January 2024). A hotel can attach it with hasCertification and name the issuer, the certificate number, its status and its expiry date. Every example on the schema.org page is for products and electronics. No tourism label uses it yet, although an open proposal from September 2026 suggests using it for accommodation registration numbers.
audience, event and containsPlace
audience takes a PeopleAudience with a minimum and maximum age, which fits a kids’ club. event fits a weekly chess tournament or a Saturday group ride. containsPlace can describe the bike room or the yoga room as a place of its own.
Google narrows it back down
Google publishes no structured data guide for hotels. Its only lodging guide is for vacation rentals, and it fixes the amenityFeature names to a closed list of 28 booleans, from ac to wifi. The list has childFriendly, crib and petsAllowed. It has nothing for bikes, yoga or coffee. Schema.org’s free text becomes a 28-word vocabulary once Google reads it.
The divide
Put the pieces side by side and two groups appear that do not talk to each other.
| Who defines the niche well | Who carries hotel facts to travellers | |
|---|---|---|
| Examples | Accueil Vélo, Bett+Bike, Kinderhotels, BikeHotels Südtirol | Booking.com, Expedia, Google, OpenTravel lists, AI assistants |
| Unit | A checklist of 7 to 20 concrete criteria, audited | One boolean per facility |
| Coverage | 9,000+ Accueil Vélo businesses; roughly 5,000 Bett+Bike hosts | Every listed hotel |
| Machine-readable | Rarely. Accueil Vélo is listed in France's open tourism data (DATAtourisme); the others publish a website map | Yes, for the facts in the list |
| Who can see it | Travellers who already know the label | Everyone, including AI assistants |
Yoga and specialty coffee sit outside both groups. Yoga Alliance registers schools and teachers. The Specialty Coffee Association certifies people and training rooms. Neither certifies a hotel or a café. Chess has nothing at all. For these, the only structured statement available today is the hotel’s own.
One niche did cross over
Sustainability went through the same divide a few years earlier and came out on the other side. Since 2021 Google shows an “eco-certified” mark on hotels, and a hotel cannot claim it alone: Google takes a list of approved certifications and certified hotels from outside bodies. Travalyst reviewed 59 schemes in August 2024 and approved 49. Google’s Lodging schema now says all certification data “is now provided by BeCause”, a hub that collects certificates from the issuing bodies.
The route that failed is also on record. Booking.com built its own “Travel Sustainable” badge in 2021 and took it down on 25 March 2024 after action by the Dutch consumer authority. It now shows third-party certifications instead.
A proposal: qualification profiles
The gap can be narrowed without waiting for any platform. The proposal has four parts, and each one uses something that already exists.
1. A shared list of criteria per niche
For each niche, publish a short list of named criteria, each with a stable URL. Where a label already exists, copy its checklist rather than writing a new one. The cycling list starts from Accueil Vélo’s seven criteria and adds five from Bett+Bike, BikeHotels and Cyclists Welcome, plus indoor training. The draft is published at nicolassitter.com/vocab/hq as one schema.org DefinedTermSet per niche.
| Niche | Draft criteria (each has a URL) | Taken from |
|---|---|---|
| Cycling | route-information, welcome-documentation, secure-bike-storage, luggage-storage, device-charging, ebike-charging, repair-kit, drying-room, bike-wash, early-breakfast, one-night-stays, bike-rental, indoor-training | Accueil Vélo (first seven), Bett+Bike, BikeHotels, Cyclists Welcome |
| Yoga | yoga-room (capacity), equipment, class-schedule, teacher-qualification, self-practice-hours, included-in-rate | New |
| Specialty coffee | espresso-machine (make), roaster (name), brew-methods, plant-milks, hours, beans-for-sale, included-in-rate | New |
| Kids | kids-club (min age, max age, hours, supervised, fee), babysitting (fee, notice), cribs (count, fee), kids-menu, family-room (size, max children), shared-space-rules | Kinderhotels, Google Lodging fields |
| Chess and board games | chess-sets (count), clocks, events (schedule, format), hours, children-allowed | New |
| Dogs | size-limit, weight-limit, max-dogs, fee, dog-amenities, walking-areas, may-be-left-alone | Existing pet policies, extended |
Each criterion is answered with one of three states: met, not offered, or not stated. “Not offered” is as useful to a traveller as “met”, and current lists can only express it by leaving a box empty.
2. Publish it in schema.org on the hotel’s own site
Each criterion becomes an amenityFeature whose propertyID is the criterion’s URL, with a value, a description and hours where they apply. A label the hotel actually holds goes in hasCertification, with the issuer and the expiry date. A hotel that meets most of a label’s criteria without holding it says so plainly: the criteria are listed, and there is no certification.
3. Serve the same record to agents
The same data goes into a small JSON file and into one read-only tool, get_qualifications, exposed through MCP for assistants that connect to the hotel and through WebMCP for agents using the hotel’s page in a browser. All three surfaces read one source file, so the schema, the tool and the page text cannot drift apart. On the test hotel below, the free-text pages had already drifted.
Demand from agents is small today. When I checked 13,808 French hotel sites for WebMCP in September, 26 listings had live tools, all from three software vendors, and I found no agent consuming them. The tool is cheap to add and does no harm while it waits.
4. Let platforms take the list from the labels
The sustainability route can be reused. The label bodies already audit their members. If Accueil Vélo, Bett+Bike or Kinderhotels published their member lists with the criteria each member meets, using the same criterion URLs, a platform could take the list from them, as Google takes eco-certifications from outside bodies today. Accueil Vélo is already part of France’s open tourism data, which is the closest any of them is to this step.
Worked example: Hotel Ranque
Hotel Ranque is a test hotel site I built and run for AI-search experiments. It describes a hotel near Bastille in Paris built around four themes: a chess club, a cycling lab, a specialty coffee corner and a yoga studio. It is a useful example because its niche facts are written down in detail, and because I can change its code.
Before: the niche facts survived only as labels
The site’s JSON-LD listed 23 amenityFeature entries. 11 were about the four themes, and every one was a bare name set to true: “Bike-friendly hotel”, “Secure bike storage”, “Yoga-friendly hotel”, “La Marzocco espresso machine”. The pages behind them say much more. The bike room has individual locking stations and camera surveillance and takes road, gravel and e-bikes. The repair kit lists multi-tools, spare tubes, tyre levers, a track pump and lubricants. The coffee corner names its roaster and its brew methods. The chess bar opens at 4 pm and runs a Swiss-system tournament on Thursdays. None of that reached the markup.
Two other places flattened it further. The site also publishes a hotel facts file in a fixed vocabulary (hotel.json, generated in July 2026). In it the chess club is filed under “Bar”. The bike room, the tools and the rental help are filed under “Bicycle Rental”, although the hotel rents no bikes. Specialty coffee has no slot at all. And when I run the site through my own hotel schema generator, which pre-fills from a site’s existing markup, it keeps only the amenities in its fixed list of 16. From Ranque’s 23 it kept 2, Free WiFi and Air conditioning, and dropped the chess club, the bike room and the yoga studio.
The free text also disagreed with itself in 3 places.
- The site’s agent tool said the coffee was included in the room rate, while a cycling FAQ said the coffee corner charged “standard café pricing”.
- The agent tool placed a Saturday group ride at the hotel, while the cycling page credited it to a nearby café.
- A bike wash station appeared in one FAQ answer and nowhere else.
After: the cycling profile, checked against Accueil Vélo
Mapped against Accueil Vélo’s 7 criteria, the site states 5 and is silent on 2. It holds no label. The record says exactly that.
| Accueil Vélo criterion | Hotel Ranque, from its own pages | State |
|---|---|---|
| Directions to reach the place | Address, metro and cycle lanes to Le Marais described | met |
| Welcome and documentation | Front desk recommends routes and bike shops | met |
| Free secure bike parking | Indoor room, individual locking stations, cameras, included | met |
| Luggage storage | Listed | met |
| Charging for phones and GPS | Not stated for cyclists | not stated |
| Charging for e-bikes | Room takes e-bikes; charging not stated | not stated |
| Repair kit and nearest repairer | Kit listed item by item; local shops recommended | met |
{
"@type": "LocationFeatureSpecification",
"name": "Secure bike storage",
"value": true
},
{
"@type": "LocationFeatureSpecification",
"name": "Bike-friendly hotel",
"value": true
}{
"@type": "LocationFeatureSpecification",
"propertyID": "https://nicolassitter.com/vocab/hq/cycling#secure-bike-storage",
"name": "Cycling: Secure bike storage",
"value": true,
"description": "Indoor room with individual locking stations and 24/7 camera. Road, gravel and e-bikes.",
"hoursAvailable": { "@type": "OpeningHoursSpecification",
"dayOfWeek": [ "https://schema.org/Monday", …, "https://schema.org/Sunday" ],
"opens": "00:00", "closes": "23:59" }
},
{
"@type": "LocationFeatureSpecification",
"propertyID": "https://nicolassitter.com/vocab/hq/cycling#bike-rental",
"name": "Cycling: Bike rental",
"value": false,
"description": "No hotel bikes; the front desk books rentals at local shops"
}The eleven bare labels became 30 features, one per criterion that is met or not offered. Not-stated criteria stay out of the JSON-LD and stay in the record. The chess facts use the other two schema.org tools: the rule for children is a feature with a description, and the Thursday tournament is an Event.
{
"@type": "LocationFeatureSpecification",
"propertyID": "https://nicolassitter.com/vocab/hq/chess#children-allowed",
"name": "Chess: Children allowed",
"value": true,
"description": "Before 8 pm with an adult"
},
"event": [{
"@type": "Event",
"name": "Weekly chess tournament",
"description": "Thursday tournament, Swiss system, all levels, small prizes",
"eventSchedule": { "@type": "Schedule", "byDay": "https://schema.org/Thursday",
"startTime": "19:00", "repeatFrequency": "P1W", "scheduleTimezone": "Europe/Paris" },
"location": { "@type": "Hotel", "@id": "https://hotelranque.com/#hotel" }
}]The same record is what the site’s MCP and WebMCP tool returns when an agent asks for the cycling profile, and what it serves at hotelranque.com/qualifications.json:
get_qualifications({ "niche": "cycling" })
→ { "hotel": "Hotel Ranque", "profiles": [{
"niche": "cycling",
"vocabulary": "https://nicolassitter.com/vocab/hq/cycling",
"certification": null,
"criteria": [
{ "id": "secure-bike-storage", "state": "met", "included": true,
"detail": "Indoor room with individual locking stations and 24/7 camera. Road, gravel and e-bikes.",
"hours": { "opens": "00:00", "closes": "23:59" } },
{ "id": "repair-kit", "state": "met", "included": true,
"detail": "Multi-tools, spare tubes, tyre levers, track pump, lubricants; local repair shops recommended" },
{ "id": "ebike-charging", "state": "not_stated" },
{ "id": "bike-rental", "state": "not_offered",
"detail": "No hotel bikes; the front desk books rentals at local shops" },
…
],
"updated": "2026-10-31",
"source": "https://hotelranque.com/experiences/cycling-lab"
}] }Writing this record surfaced the three contradictions above, because each criterion needed one answer. Coffee is now included everywhere, the Saturday ride is the café’s, and the bike wash is listed as not offered. That is the main practical gain I would expect for any hotel: a structured record makes the hotel decide what is true.
Method and limits
- Taxonomies. Booking.com property and room codes parsed from the connectivity documentation on 31 October 2026 (286 and 293 distinct codes). Google Lodging fields counted from the REST reference (298 named fields, excluding the “exception” variants; a few are containers rather than attributes). OpenTravel codes read through the wink.travel and Concur mirrors, not the official list. Expedia’s amenity IDs were not confirmed; the Expedia column uses labels from live property pages.
- Questionnaires. 605 ChatGPT follow-up forms stored from the AI Hotel Landscape panel, 13–19 October 2026, 433 distinct prompts. Options were matched by keyword in the option label, with word boundaries. The prompts are general hotel requests; none named the six niches, so the zeros measure what ChatGPT volunteers.
- Labels. Accueil Vélo criteria and member count from France Vélo Tourisme’s own page. Bett+Bike criteria from a 2022 ADFC brochure; member counts vary by source (5,000 to 5,900). Kinderhotels criteria are not itemised publicly.
- Hotel Ranque. A test site. “Before” is read from its source code as of 23 October 2026; “after” is the markup it serves since this article. Its facility descriptions are the site’s own and were not audited by any label body.
- Vocabulary. The criteria at nicolassitter.com/vocab/hq are a draft (version 0.1, CC BY 4.0). Ids may change before a 1.0, and changes will be listed there.
- Disclosure. I work at Lighthouse, a hospitality data company. This article describes no Lighthouse product.