Can AI actually read your hotel website?


Guests are starting to ask AI tools like ChatGPT to find hotels for them. Something like "dog-friendly spa hotel near Edinburgh with parking". If your site doesn't make those details easy for a machine to read, you're relying on luck to be in the answer.
Most of the hotel sites we see look great to guests. A lot of them are harder for AI to read than they need to be. You don't have to pick one or the other, though, and fixing it usually doesn't mean touching the design.
An AI crawler isn't looking at your hero animation. It's interested in the HTML underneath it - and some crawlers won't run the JavaScript needed to make that content appear, so if something only appears once scripts have loaded, there's a good chance it's never seen.
On hotel sites that's often the important stuff: room details in carousels, amenities in tabs, FAQs that load when you click them.
The simplest fix is making sure the text is in the page the server sends, rather than loaded in afterwards. Umbraco renders pages on the server anyway, so when we do find problems it's usually a JavaScript widget or a third-party embed that's been added on top.
For a lot of interactive bits you don't need JavaScript at all. A native HTML accordion like this one is fully readable before any scripts run:
<details> <summary>Is parking available?</summary> <p>Yes, free on-site parking with EV charging points.</p> </details>
It looks and works the same for guests, and the answer is sitting right there in the HTML for a crawler.
If "award-winning spa" is part of a banner image, a crawler can't read it. We'd keep text like that as actual text styled with CSS, give images alt text that properly describes them, and keep headings in a sensible order. That's all standard accessibility practice anyway, so screen reader users get the benefit too.
Structured data lets you spell out key facts in a format machines don't have to interpret. Schema.org, the vocabulary the big search engines use, has a Hotel type covering things like check-in times, amenities and whether pets are allowed:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "The Example Hotel",
"checkinTime": "15:00",
"checkoutTime": "11:00",
"petsAllowed": true
}
</script>
We can't tell you exactly how much weight each AI platform gives this, and nobody outside those companies really can. But it's the most direct way of stating your facts for machines, and search engines already use it.
We don't write it by hand. On our Umbraco builds it's generated from the same fields your team already edits, so when your check-in time changes, the structured data changes with it:
@{
var schema = new Dictionary<string, object?>
{
["@context"] = "https://schema.org",
["@type"] = "Hotel",
["name"] = Model.Value<string>("hotelName"),
["checkinTime"] = Model.Value<string>("checkInTime")
};
}
<script type="application/ld+json">
@Html.Raw(JsonSerializer.Serialize(schema))
</script>
For the devs: System.Text.Json escapes HTML-sensitive characters by default, so content from editors can't break out of the script tag. It's worth running the output through the Schema Markup Validator before it goes live.
For the guest, ideally nothing changes. The site can look exactly the same. We're just making sure the useful information is actually present in the HTML rather than hidden behind JavaScript.
If AI tools can't read your site properly, they'll either leave you out or fill the gaps with whatever they can find elsewhere, which won't always be accurate.
If you'd like to see what an AI crawler actually finds when it visits your hotel website, get in touch and we can arrange an audit.