If you are a primary ticketer who sells the official inventory of an event's tickets on behalf of the event's organizer, then Google can incorporate structured data markup from your website into the Knowledge Graph. This data may then be displayed across Google Search and other products, in two ways:
- When performers or venues have events that link to your site for tickets, the markup on your site may be used to provide information such as pricing, on-sale dates, availability, and ticket links on Google.
- When performers and venues have not themselves provided markup on their official websites, your markup may be used as a source of basic event data such as event name, date, location, and details link.
This document describes in detail how primary ticketer sites should mark up their events to maximize eligibility for Google's event features.
For a 10-minute video tutorial on how Google uses event markup, please see: https://www.youtube.com/watch?v=XXw8g-FbemI
Markup specification
Each event should be specified with the most specific applicable subtype of schema.org/Event. Popular subtypes include ComedyEvent, Festival, FoodEvent, MusicEvent, TheaterEvent, and SportsEvent. This helps search engines categorize your event, and in some cases lets you specify extra fields relevant to that type of event, such as the "homeTeam" and "awayTeam" for a SportsEvent, or the "workPerformed" for a TheaterEvent.
The following table indicates the full set of event fields used by Google events projects.
Property | Type | Description |
---|---|---|
name (required) | Text | The title of the event. |
image | URL | URL of an image or logo for the event or tour |
url | URL | URL of a page providing details about the event. |
startDate (required) | Date | The start date and time of the event, in ISO-8601 format. |
doorTime | DateTime | The time admission commences, in ISO-8601 format. |
endDate | Date | The end date and time of the event, in ISO-8601 format. |
eventStatus | EventStatusType | The event's cancellation status, if applicable. Must be one of the example values at right. |
previousStartDate | Date | The previously scheduled date (only if eventStatus is set). |
typicalAgeRange | Text | The expected age range. |
location (required) | Place | A nested schema.org/Place (or more specific subtype, such as schema.org/EventVenue or schema.org/PerformingArtsTheater). |
location.name (required) | Text | The venue name. |
location.sameAs | URL | The URL of the venue's official website. |
location.address (required) | PostalAddress | The venue's address. You may either provide the whole address as a single string, or provide the separate fields of the address in a nested schema.org/PostalAddress. |
location.address.streetAddress | The street address. | |
location.address.addressLocality | The locality or city. | |
location.address.addressRegion | The region or state. | |
location.address.postalCode | The postal code. | |
location.address.addressCountry | The country code. | |
offers | Offer | A nested schema.org/Offer, one for each ticket type. |
offers.url (recommended) | The URL of a page providing the ability to buy tickets. This URL must:
| |
offers.name | A user-visible name for the ticket type. | |
offers.category (required) | Google recognizes the following values in this field:
| |
offers.price (required) | The lowest available price, including service charges and fees, of this type of ticket. | |
offers.priceCurrency (required) | The 3-letter currency code (unless included in price value). | |
offers.availability (required) | The availability status of tickets. | |
offers.validFrom | The ISO-8601 date and time when tickets go on sale (only required on date-restricted offers). | |
offers.validThrough | The ISO-8601 date and time when tickets go off sale (only required on date-restricted offers). | |
performer | Person | A nested schema.org/PerformingGroup or schema.org/Person, one for each performer. |
performer.name | The performer's name. | |
performer.sameAs | The URL of the performer's official website or Wikipedia page. | |
workPerformed | CreativeWork | A nested schema.org/CreativeWork, used to represent each play, dance, or classical music piece being performed at the event (if applicable). |
workPerformed.name | The name of the creative work being performed. | |
workPerformed.sameAs | The URL of the work's Wikipedia page or other reference page. | |
awayTeam homeTeam | SportsTeam | (Pending schema.org proposal for SportsEvent only, where applicable.) |
homeTeam.name awayTeam. name | The name of the team. | |
homeTeam.sameAs awayTeam. sameAs | The URL of the team's official website or Wikipedia page. |
Markup example: concert tickets
The following example shows how to mark up concert event information. The example is shown in JSON-LD syntax. Alternatively, you can mark up your content in Microdata or RDFa syntax if you prefer.
<script type="application/ld+json">
[{"@context" : "http://schema.org","@type" : "MusicEvent","name" : "B.B. King with Jonathon \"Boogie\" Long","image" : "http://www.bbking.com/gallery/b-b-king-live.jpg","url" : "http://www.bbking.com/events/apr12-providence.html","startDate" : "2014-04-12T19:30","doorTime" : "18:30","endDate" : "2014-04-12T22:00","eventStatus" : "EventRescheduled","previousStartDate" : "2013-09-30T19:30","typicalAgeRange" : "18+","location" :{"@type" : "Place","name" : "Lupo's Heartbreak Hotel","sameAs" : "http://lupos.com/","address" :{"@type" : "PostalAddress","streetAddress" : "79 Washington St.","addressLocality" : "Providence","addressRegion" : "RI","postalCode" : "02903","addressCountry" : "US"}},"offers" :[{"@type" : "Offer","name" : "General Admission","category" : "primary","price" : "$63.25","availability" : "SoldOut","url" : "http://www.bbking.com/ticket/17004C29"},{"@type" : "Offer","name" : "VIP Experience","category" : "premium","url" : "http://www.bbking.com/ticket/vip/Abcde12345","price" : "$299.00","validFrom" : "2014-02-05T10:00","validThrough" : "2014-03-19T23:59"}],"performer" :[{"@type" : "MusicGroup","name" : "B.B. King","sameAs" : "http://en.wikipedia.org/wiki/B.B._King"},{"@type" : "MusicGroup","name" : "Jonathon \"Boogie\" Long","sameAs" : "http://jonathonboogielong.com/"}]}]</script>
Markup example: theater tickets
The following example shows how to mark up event information for theater performances. The markup represents a single performance; for multiple performances, simply repeat the markup for each performance. All examples are shown in JSON-LD syntax. Alternatively, you can mark up your content in Microdata or RDFa syntax if you prefer.
<script type="application/ld+json">
{"@context": "http://schema.org","@type": "TheaterEvent","name": "Julius Caesar at Shakespeare's Globe","location":{"@type": "PerformingArtsTheater","name": "Shakespeare's Globe","sameAs": "http://www.shakespearesglobe.com/","address": "London, UK"},"offers":[{"@type": "Offer","name": "Standing (Yard)","url": "https://tickets.shakespearesglobe.com/performances.asp?PerIndex=287339","category": "primary","price": "£7.50","availability": "http://schema.org/InStock"},{"@type": "AggregateOffer","name": "Lower Gallery","url": "https://tickets.shakespearesglobe.com/performances.asp?PerIndex=287339","category": "primary","lowPrice": "£17.50","highPrice": "£44.50","availability": "http://schema.org/LimitedAvailability"}],"startDate": "2014-10-01T19:30","workPerformed":{"@type": "CreativeWork","name": "Julius Caesar","sameAs": "http://en.wikipedia.org/wiki/Julius_Caesar_(play)","creator":{"@type": "Person","name": "William Shakespeare","sameAs": "http://en.wikipedia.org/wiki/William_Shakespeare"}}}</script>
Markup example: music festival tickets
This examples shows typical markup for a music festival, with ticketing details and performer information.
<script type="application/ld+json">
{"@context" : "http://schema.org","@type" : "Festival","name" : "Thank You Festival","image" : "http://cdn.ticketfly.com/i/00/01/10/12/37-atxl1.jpg","startDate" : "2014-06-26T16:00","typicalAgeRange" : "All Ages","location" : {"@type" : "EventVenue","name" : "Merriweather Post Pavilion","address" : "10475 Little Patuxent Parkway, Columbia, MD"},"offers" : {"@type" : "AggregateOffer","category" : "primary","lowPrice" : "$45.00","highPrice" : "$549.50","url" : "http://www.ticketfly.com/purchase/event/545417/tfly"},"performer" : [{ "@type" : "MusicGroup", "name" : "Tiesto", "sameAs" : "http://www.tiesto.com" },{ "@type" : "MusicGroup", "name" : "Above and Beyond", "sameAs" : "http://www.aboveandbeyond.nu" },{ "@type" : "MusicGroup", "name" : "Krewella", "sameAs" : "http://www.krewella.net" },{ "@type" : "MusicGroup", "name" : "Cedric Gervais", "sameAs" : "http://www.cedricgervais.com" },{ "@type" : "MusicGroup", "name" : "Alvin Risk", "sameAs" : "http://en.wikipedia.org/wiki/Alvin_Risk" }]}</script>
FAQ for Ticketer Events Markup
My site's event listings are spread over multiple web pages. How should I mark them up?
It is fine to include markup on multiple pages of events; Google will collect event details from all the pages it indexes on your site.
Will Google recognize event markup in dynamically generated (e.g. AJAX) web pages?
JSON-LD markup inserted by Javascript that runs upon initial page load can be recognized. Other forms of markup in dynamic content are not supported.
No comments:
Post a Comment