Mobile app version of vmapp.org
Login or Join
Ogunnowo487

: Structured data for website that shows tours from many operators I have a website that lists tours from many different tour operators. Each tour page has pricing, location, ratings and reviews,

@Ogunnowo487

Posted in: #RichSnippets #SchemaOrg #SearchEngines #Seo #StructuredData

I have a website that lists tours from many different tour operators. Each tour page has pricing, location, ratings and reviews, and may or may not have tour dates (some tours run every day, some run on demand, some run on specific dates).

There doesn't seem to be a correct schema.org schema for this. Event or SaleEvent seem to be good choices but StartDate is a required field. Then there is Product and Service which might be the right choice.

I am wondering how best to mark this up for best ranking by search engines, local search (by tour location), and rich snippets?

10.01% popularity Vote Up Vote Down


Login to follow query

More posts by @Ogunnowo487

1 Comments

Sorted by latest first Latest Oldest Best

 

@Sarah324

Here's how you would do this:

Have a wrapper for schema.org/ProfessionalService for the Tour Guide Company.

Because ProfessionalService is a child of LocalBusiness, you can inherit all of the relevant business properties details or simply use mainEntityOfPage to reference the Tour Company page on your website.

Then, use the makesOffer item property - the expected type for this is an Offer found at schema.org/Offer.
Each offer would contain your pricing, location, ratings and reviews. Here is the list:


Pricing: The price item property of itemtype Offer. The expected type is either plain text or number.
Location: The availableAtOrFrom item property of itemtype Offer. The expected itemtype is Place, meaning you can use any of it's children such as LocalBusiness or even grandchildren like ProfessionalService.*
Reviews and Ratings: The review item property of itemtype Review. Straight forward, the reviewRating item property of Review will be used for reviews. reviewRating is of Rating itemtype, use the child aggregatedRating for a collation of reviews.
Dates and Flexibility: availabilityStarts and availabilityEnds cover you for this one. These both return the DateTime - this is where the flixibility of time comes in. DateTime contains a whole lot of properties, including availabilityStarts and availabilityEnds - which can be either a Demand or an Offer. **


Some other notes:

schema.org/AggregateOffer is a child of Offer and can be used to replace the expected itemtype of Offer for the makesOffer item property of ProfessionalService. This can be useful if you have different versions of tours (such as a premium package) or if you have a list view page containing all tours from a single company.


You can also inverse this, by having a AggregatedOffer for just the location, and list all of the ProfessionalServices and their Offers if multiple Tour Companies work at the same location and the same date etc.

As a general tip, pay attention to the expected type column on schema.org to figure out how best to tackle a problem.

The LocalBusiness + children being used with Offer is a very common data design pattern and would probably be one of most use in practical rich snippet design.

You can also use additionalType to marry two or more Schema Item Types.

* Notice an inception theme? Good. This can be used to create a
recursive schema, meaning that you can have an offer within an offer. Pay attention to expected types to see if you can jump back up the hierarchy and find an appropriate child item type if you are ever in a jam.
** Notice that this can also create a recursive schema, so you can have and offer within an offer.

10% popularity Vote Up Vote Down


Back to top | Use Dark Theme