
How Tour Operators Can Improve SEO With Structured Data Markup
SEOAugust 28, 2026
A hands-on guide to adding, validating and fixing structured data on your tour pages so Google shows prices, availability and rich results.
Structured data is the least glamorous thing on your website and one of the few that reliably moves the needle. It is the code that tells Google what your page actually is β a tour, a price, a rating, a location β instead of leaving it to guess from paragraphs of text.
This is the hands-on version: what to add, how to validate it, and how to fix the errors you will hit. If you want the reference sheet on which schema types exist and what fields they take, read Schema Markup Essentials alongside this. This post is about doing it.
Why bother
Two reasons, and neither is theoretical.
Rich results. Prices, review stars, and availability can show directly in the search result. That is more screen space and a higher click-through rate for the same ranking position.
Machine readability. Google Things to Do, AI answer surfaces, and every scraper in between read structured data first. If your product page has clean markup, your product is legible to systems that otherwise skip you.
An operator page with no markup is a wall of text. A page with markup is a database row. Guess which one gets used.
What to add, page by page
You do not need to mark up everything. Three page types cover almost all of the value.
Your homepage: Organization or LocalBusiness. Business name, logo, URL, address, phone, opening hours, and sameAs links to your social profiles. This is what ties your website to your Google Business Profile in Google's understanding of who you are.
Each tour or activity page: Product with Offer, or Event if it is date-specific. This is the important one. Include the name, description, image, price, priceCurrency, and availability. The price in your markup must match the price a traveller actually pays, including fees β the same rule that governs whether your Google Things to Do listing stays live.
Any FAQ block: FAQPage. Cheap to add, and it gives you extra real estate on the results page.
The one that matters most
Here is a minimal but complete product block. Put it in a <script type="application/ld+json"> tag on the tour page:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Old Montreal Walking Food Tour",
"description": "Three-hour guided food tour through Old Montreal with six tastings.",
"image": ["https://example.com/images/food-tour-16x9.jpg"],
"brand": { "@type": "Brand", "name": "Example Tours" },
"offers": {
"@type": "Offer",
"url": "https://example.com/tours/old-montreal-food-tour",
"price": "89.00",
"priceCurrency": "CAD",
"availability": "https://schema.org/InStock"
}
}
Three rules that will save you a rejection:
priceis the total an adult pays. If your checkout adds a booking fee, the marked-up price includes it.urlpoints at the page a traveller can book on, not a category page.imageis a real, publicly reachable, high-resolution file. Not a thumbnail, not behind a login.
Validate it before you celebrate
Two tools, both free, both fast:
- Google's Rich Results Test. Paste the URL. It tells you which rich result types the page is eligible for and flags errors that block eligibility.
- The Schema Markup Validator at validator.schema.org. Stricter and more literal. Use it to catch typos in property names.
Run both. The Rich Results Test tells you what Google will use; the validator tells you what is technically wrong. They disagree often enough to be worth checking.
If you want a quicker read on your own markup, paste your page's JSON-LD block into any AI assistant with this prompt:
Here is the JSON-LD from my tour booking page. Check it against schema.org's Product and Offer specifications. List every missing recommended property, every invalid value, and anything that would block Google rich results. Do not rewrite it yet β just give me the list.
You get a plain-language audit in seconds, then you fix the list.
The errors you will actually hit
"Missing field 'price'". Usually because the price is rendered by JavaScript after page load and the crawler saw an empty string. Hard-code it into the JSON-LD.
"Invalid value for 'availability'". It has to be a schema.org URL β https://schema.org/InStock β not the word "available".
Review markup warnings. Do not mark up reviews you collected somewhere else and pasted in. Self-serving review markup gets ignored at best and penalised at worst. Your reviews live on your Google Business Profile β the reviews guide covers how to get more of them there, which is where travellers look anyway.
Markup that contradicts the page. If the JSON-LD says $89 and the page says $99, Google trusts the page and distrusts you. This is the same failure mode that gets Google Things to Do listings pulled.
How this connects to your listings
Structured data and your feed are two paths to the same destination. The feed sends your inventory to Google directly. Structured data makes the page it lands on legible and consistent.
Google reviews the destination page when it evaluates your listing, so consistency between your markup, your visible page, and your feed is not a nice-to-have. Our breakdown of the landing page criteria explains exactly what that review looks for, and the landing page guidelines show acceptable layouts.
Lesson three of the course, SEO for tours and attractions, walks through this in order with the rest of your on-page work, and lesson four covers distribution through Google Things to Do once your pages are clean.
A realistic weekend plan
- Saturday morning: add
LocalBusinessto the homepage, validate, fix. - Saturday afternoon: add
Productmarkup to your top three revenue tours. Validate each one. - Sunday: work through the rest of your catalogue, then request indexing in Search Console for the pages you changed.
Results show up over days to weeks, not hours. Check Search Console's enhancement reports in a fortnight to confirm the pages are eligible.
Once your pages are clean, the next step is getting the inventory itself in front of travellers. That is what Google Things to Do does, and it is $25 a month to get your products in the feed with your own site as the booking destination.
Want this kind of strategy applied to your tours?
Setup gets your Official Site badge live on Google Things to Do. Organic Official Site listing always included.
Related GTTD Ads questions
- How is GTTD CPC different from regular Google Ads?
- What does "Organic Official Site listing included" mean?
- How long until my Official Site badge is live on Google?
- How much does GTTD CPC actually cost per click?