Event markup describes the details of organized events. When you use it in your content, that event becomes relevant for enhanced search results for relevant queries. For example, searching for a famous musician might bring up a relevant website link, but if the musician’s site uses event markup, the Google Search result can show a list of upcoming performance dates for that musician.
Use cases
The following describes three broad use cases for event markup.
Entity query such as “Boz Scaggs tour”
|
List query such as “Stadium concerts near me”
|
Entity query with pricing, such as “Lady Gaga discount tickets” or “Adele concert tickets”
|
|
Event Type Examples
Try out the following examples using the Structured Data Testing Tool. All examples show JSON-LD syntax. If you prefer, you can use Microdata or RDFa syntax.
Delegation markup
If you can’t add markup or an event widget to your official website, you can use delegation markup, which indicates that your events should be sourced from another web page. See Mark Up Event Listings for details.
| Source events from another site |
Example URL templates that work as delegates for your events:
|
Concert markup
The following examples show how to mark up concert event information. In general, the more fields specified, the more information about the event Google Search can present to Google users.
| Simple concert example
|
Classical music concert
|
Comedy concert
|
Venue markup
Google Search shows venue event schedules to millions of users each day in Google Search, Google Maps, and other products. There are many types of venues to support the great diversity of performing arts. The sections below describe the two most common ways to use structured data to surface rich data about the most common categories of venue in Google Search.
Theater performances
The following examples show alternate ways to markup information for theater performance events. The markup represents a single performance; for multiple performances, simply repeat the markup for each performance.
| Simple theater
Simple theater markup for a single event, including location, ticket offer, and details about the work performed.
|
Expanded/Ticketer Venue A more fully specified concert event, including a tour image, full venue address, multiple performers, and multiple ticket classes.
|
Sports, comedy, and festivals
These examples show typical markup for sports events, comedy performances, and music festivals.
| Sports Event
|
Comedy Event
|
Music Festival
|
Guidelines
In addition to general policies that apply to all structured data markup, these additional guidelines apply to event markup:
- Expired events. Events data for any feature will never be shown for expired events. However, you do not have to remove markup for expired events.
- Use correct event types. The target page must contain structured data items of type schema.org/Event (or one of its subtypes, like schema.org/MusicEvent).
- Indicate the performer. Each event item must specify a performer property corresponding to the event's performer; that is, a musician, musical group, presenter, actor, and so on.
- Do not include promotional elements in the name. For sales/promotional events, use the equivalent markup from schema.org/SaleEvent.
These examples illustrate event naming violations:
- Promoting non-event products or services: "Trip package: San Diego/LA, 7 nights"
- Prices in event titles: "Music festival - only $10!" Instead, highlight ticket prices using the tickets property in your markup.
- Using a non-event for a title, such as: "Sale on dresses!"
- Discounts or purchase opportunties, such as: "Concert - buy your tickets now," or "Concert - 50% off until Saturday!"
- Multi-day events:
- If your event/ticket info is for the festival itself, specify both the start and end date of the festival.
- If your event/ticket info is for a specific performance that is part of the festival, specify the specific date of the performance. If the specific date is unavailable, specify both the start and end date of the festival.
These guidelines should help you create markup that ensures your content is presented as rich cards in search results. Violations in these policies might cancel the rich card presentation for the event, but your content still appears in Search results. Read about Spammy Structured Markup in the Search Console Help Center.
Supported markup widgets and plugins
Some content management systems provide widgets or plugins that inject event markup into a page. If your content management system uses one of the following, it should generate event markup that meets Google Search requirements:
Performers
- GigPress plugin for WordPress—version 2.3.3 or later
- Ohanah plugin for Joomla—version 2.0 or later
- Songkick Concerts and Festivals plugin for WordPress—version 0.93 or later
- Bandzoogle website platform
- Digital agency platforms from Sparkart and BubbleUp
Similarly, if your content management system generates event listings using an embedded widget, Google Search should be able to read the widget's events. Google Search supports the following widgets:
- Bandsintown Tour Dates widget
- BandPage Shows widget
- ReverbNation Show Schedule widget
- Songkick Tourbox widget
Venues
- GigPress plugin for WordPress (version 2.3.3 or later)
- Ohanah plugin for Joomla (version 2.0 or later)
- Songkick Concerts and Festivals plugin for WordPress (version 0.93 or later)
- ReverbNation Show Schedule widget
- Songkick Tourbox widget
Type definitions
The table below shows required and recommended properties for events. Define each event using a specific applicable subtype of schema.org/Event. Popular subtypes include:
ComedyEventFestivalFoodEventMusicEventTheaterEventSportsEvent
Subtypes help search engines more accurately categorize your event. In some cases they also
let you specify extra fields relevant to the type of event; such as the homeTeam
and awayTeam for a SportsEvent, or the workPerformed
property for a TheaterEvent.
| Properties | |
|---|---|
name |
Text, required The title of the event. |
image |
URL, recommended URL of an image or logo for the event or tour |
url |
URL, recommended URL of a page providing details about the event. |
startDate |
DateTime, required The start date and time of the event, in ISO-8601 format. |
doorTime |
DateTime, recommended The time admission commences, in ISO-8601 format. |
endDate |
DateTime, recommended The end date and time of the event, in ISO-8601 format. |
eventStatus |
EventStatusType, recommended The event's cancellation status, if applicable. |
previousStartDate |
DateTime, recommended The previously scheduled date (only if eventStatus is set), in ISO-8601 format. |
typicalAgeRange |
Text, recommended The expected age range. |
location |
Place, required A nested schema.org/Place (or more specific subtype, such as schema.org/EventVenue or schema.org/PerformingArtsTheater). |
location.name |
Text, required The venue name. |
location.sameAs |
URL, recommended The URL of the venue's official website. |
location.address |
PostalAddress, required 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 |
Text, recommended The street address. |
Location.address.addressLocality |
Text, recommended The locality or city. |
Location.address.addressRegion |
Text, recommended The region or state. |
Location.address.postalCode |
Text, recommended The postal code. |
Location.address.addressCountry |
Text, recommended The country code. |
offers |
Offer, recommended A nested schema.org/Offer, one for each ticket type. |
offers.url |
URL, recommended The URL of a page providing the ability to buy tickets. This URL must meet the following requirements:
|
offers.name |
Text, recommended A user-visible name for the ticket type. |
offers.category |
Text, required Google Search recognizes the following values in this field:
|
offers.price |
Number, recommended The lowest available price, including service charges and fees, of this type of ticket. |
offers.priceCurrency |
Text, required The 3-letter currency code. |
offers.availability |
Text, required One of the following: If the ticket is not yet on sale to the general public, you can omit availability and specify validFrom. |
offers.validFrom |
DateTime, recommended The date and time when tickets go on sale (only required on date-restricted offers), in ISO-8601 format. |
offers.validThrough |
DateTime, recommended The date and time when tickets go off sale (only required on date-restricted offers), in ISO-8601 format. |
performer |
Person, recommended A nested schema.org/PerformingGroup or schema.org/Person, one for each performer. |
performer.name |
Text, recommended The performer's name. |
performer.sameAs |
URL, recommended The URL of the performer's official website or Wikipedia page. |
workPerformed |
CreativeWork, recommended A nested schema.org/CreativeWork, used to represent each play, dance, or classical music piece being performed at the event (if applicable). |
workPerformed.name |
Text, recommended The name of the creative work being performed. |
workPerformed.sameAs |
URL, recommended The URL of the work's Wikipedia page or other reference page. |
awayTeamhomeTeam |
SportsTeam, recommended (Pending schema.org proposal for |
homeTeam.nameawayTeam.name |
Text, recommended The name of the team. |
homeTeam.sameAsawayTeam.sameAs |
Text, recommended The URL of the team's official website or Wikipedia page. |