About event information
When event information is marked up in the body of a web page, Google can identify it and may make that information available can be used on search result pages and other Google properties. Information such as an event's title, date, and venue can help users decide which pages to click on in search results.
A result can list multiple events, like this:
... or it can list a single event, like this:
Usage guidelines
Event markup can be used to mark up events that occur on specific future dates, such as a musical concert or an art festival.
The information that is visible on the snippet, such as the name and location of the event, also needs to be clearly defined. Since this feature isn’t meant for advertising purposes, your event name should not contain any promotional elements such as the price of the event, a call to purchase, or an indication of a sale or temporary discount.
Examples of valid event names:
- East Bay Symphony Concert
- Music Festival Northwest
Invalid event names:
- Trip package: San Diego/LA, 7 nights (Don't use rich snippets markup to promote non-event products or services.)
- Music festival - only $10! (Instead, mark up ticket prices using the
ticketsproperty.) - Sale on dresses! (Non-event information)
- Concert - buy your tickets now! (Promotion)
- Concert - 50% off until Saturday! (Promotion)
Properties
Events have properties, such as a description, a starting date (which must be in the future; Google will not display rich snippets for events that have already occurred), and location information. Google recognizes the following event properties (derived from the hCalendar microformat). Where the microdata/RDFa and microformats property names differ, the microformats name appears in parentheses. Properties in bold are required. Be sure to check out our usage guidelines.
| Property | Description |
summary |
The name of the event. |
url |
Required for pages listing multiple events. A link to the event details page. Unnecessary if the URL is the same as the page containing the markup. |
location |
Required for single event. The location or venue of the event. A text string is permitted, but we recommend that you represent the location by using a nested Organization to specify a venue name and address. More information about nested entities. |
description |
A description of the event. |
startDate (dtstart) |
The starting date and time of the event in ISO date format. |
endDate (dtend) |
The ending date and time of the event in ISO date format. |
duration |
The duration of the event in ISO duration format. |
eventType (category) |
The category of the event, such as "Festival", "Concert", "Lecture". |
geo |
Specifies the geographical coordinates of the location. Includes two elements: latitude and longitude. Optional.
|
photo |
A link to a photo or image related to the event. |
tickets |
An offer to buy tickets for the event. Can be a URL to a page where tickets can be purchased, or can include specific Offer properties, such as price, quantity, priceValidUntil, and currency.
|
ticketAggregate |
Aggregate information about all tickets for the event. Can include specific Offer-aggregate properties, such as lowPrice, highPrice, offerCount, and currency.
|
Marking up content
HTML, no markup added
The following HTML code describes Spinal Tap's triumphant comeback concert.
<div> <a href="http://www.example.com/events/spinaltap">Spinal Tap</a> <img src="spinal_tap.jpg" /> After their highly-publicized search for a new drummer, Spinal Tap kicks off their latest comeback tour with a San Francisco show. When: Oct 15, 7:00PM—9:00PM Where: Warfield Theatre, 982 Market St, San Francisco, CA Category: Concert Tickets from $10-$11 2,000 tickets available <a href="http://www.example.com/events/spinaltap/alltickets">See all available tickets</a> <a href="http://www.example.com/events/spinaltap/presale">Presale tickets</a> $10 till 10 November 2015 (1,000 available) <a href="http://www.example.com/events/spinaltap/tickets">Full-price tickets</a> $11 </div>
Here is the same HTML content marked up with microdata.
<div itemscope itemtype="http://data-vocabulary.org/Event">
<a href="http://www.example.com/events/spinaltap" itemprop="url" >
<span itemprop="summary">Spinal Tap</span>
</a>
<img itemprop="photo" src="spinal_tap.jpg" />
<span itemprop="description">After their highly-publicized search for a new drummer,
Spinal Tap kicks off their latest comeback tour with a San
Francisco show.</span>
When:
<time itemprop="startDate" datetime="2015-10-15T19:00-08:00">Oct 15, 7:00PM</time>—
<time itemprop="endDate" datetime="2015-10-15T19:00-08:00">Oct 15, 9:00PM</time>
Where:
<span itemprop="location" itemscope itemtype="http://data-vocabulary.org/Organization">
<span itemprop="name">Warfield Theatre</span>
<span itemprop="address" itemscope itemtype="http://data-vocabulary.org/Address">
<span itemprop="street-address">982 Market St</span>,
<span itemprop="locality">San Francisco</span>,
<span itemprop="region">CA</span>
</span>
<span itemprop="geo" itemscope itemtype="http://data-vocabulary.org/Geo">
<meta itemprop="latitude" content="37.774929" />
<meta itemprop="longitude" content="-122.419416" />
</span>
</span>
Category: <span itemprop="eventType">Concert</span>
<span itemprop="ticketAggregate" itemscope itemtype="http://data-vocabulary.org/Offer-aggregate">
Tickets from $<span itemprop="lowPrice">10.00</span>-$<span itemprop="highPrice">11.00</span>
<span itemprop="currency" content="USD" />
<span itemprop="offerCount">2,000</span> tickets available
<a href="http://www.example.com/events/spinaltap/alltickets" itemprop="offerurl">
http://google.com/ticket</span>See all available tickets</a>
</span>
<span itemprop="tickets" itemscope itemtype="http://data-vocabulary.org/Offer">
<a href="http://www.example.com/events/spinaltap/presale" itemprop="offerurl">Presale tickets</a>
<span itemprop="price">$10</span><span itemprop="currency" content="USD" />
till <time itemprop="priceValidUntil" datetime="2015-11-10">10 November 2015</time>
(<span itemprop="quantity">1000</span> available)
</span>
<span itemprop="tickets" itemscope itemtype="http://data-vocabulary.org/Offer">
<a href="http://www.example.com/events/spinaltap/tickets" itemprop="offerurl">Full-price tickets</a>
<span itemprop="price">$11</span><span itemprop="currency" content="USD" />
</span>
</div>
Here's how this sample works:
- On the first line,
<itemscope itemtype="http://data-vocabulary.org/Event">indicates that the HTML enclosed in the<div>represents an Event.itemscopeindicates that the content of the<div>describes an item, anditemtype="http://data-vocabulary.org/Event"indicates that the item is an Event. - The sample describes properties of the event, such as its category, name, and location. To label event properties, each element containing one of these properties (such as
<div>or<span>) is assigned anitempropattribute indicating a property. For example,span itemprop="summary". - A property can consist of another item (in other words, an item can include other items). For example, the event above includes Organization information for the venue, the Warwick Theatre (
itemtype="http://data-vocabulary.org/Organization") which in turn includes Address information, with the propertiesstreet-address,locality, andregion. - To specify dates and times unambiguously, use the
timeelement with thedatetimeattribute. Here, thestartDateproperty indicates the start date of the concert. The value in thedatetimeattribute is specified using the ISO date format. Using this format lets you provide search engines with detailed date, time and—optionally—time zone in ISO format ("2015-10-15T19:00-08:00"), while still displaying the date on your page in a user-friendly way ("15 October 2015, 7PM"). - The
metatag is used to specify additional information that is not visible on the page—in this case, the longitude and latitude of the venue. In general, Google won't use hidden content, but geographical information can help ensure that a location is correctly mapped.
How to mark up events for a single venue
If your HTML page shows information about the venue and then the list of events, then instead of of repeating the venue's location in each event markup, you can mark up the venue as an Organization, followed by a series of event markups for each event.
The following example shows Organization data for the Warfield Theatre, and events scheduled to appear there.
<div itemscope itemtype="http://data-vocabulary.org/Organization">
<span itemprop="name">Warfield Theatre</span>,
<span itemprop="address" itemscope
itemtype="http://data-vocabulary.org/Address">
<span itemprop="street-address">982 Market St</span>,
<span itemprop="locality">San Francisco</span>,
<span itemprop="region">CA</span>
</span>
<span class="geo">
<span class="latitude">
<span class="value-title" title="37.774929" ></span>
</span>
<span class="longitude">
<span class="value-title" title="-122.419416"></span>
</span>
</span>
<span class="photo"> http://www.example.com/images/image.jpeg</span>
</div>
<div itemscope itemtype="http://data-vocabulary.org/Event">
<a href="http://www.example.com/events/spinaltap" itemprop="url”>
<span itemprop=”summary">Spinal Tap</span>
</a>
<img itemprop="photo" src="spinal_tap.jpg" />
When:
<time itemprop="startDate" datetime="2015-10-15T19:00-08:00">
Oct 15, 7:00PM</time>
</div>
<div itemscope itemtype="http://data-vocabulary.org/Event">
<a href="http://www.example.com/events/u2" itemprop="url” summary">U2</a>
<img itemprop="photo" src="u2.jpg" />
When:
<time itemprop="startDate" datetime="2015-10-16T19:00-08:00">
Oct 16, 7:00PM</time>
</div>
Here is the same HTML content marked up with the hCalendar microformat.
<div class="vevent">
<a href="http://www.example.com/events/spinaltap" class="url summary">Spinal Tap</a>
<img src="spinal_tap.jpg" class="photo" />
<span class="description">After their highly-publicized search for a
new drummer, Spinal Tap kicks off their latest comeback tour
with a San Francisco show.</span>
When:
<span class="dtstart">
Oct 15, 7:00PM<span class="value-title" title="2015-10-15T19:00-08:00"></span>
</span>-
<span class="dtend">
9:00PM<span class="value-title" title="2015-10-15T21:00-08:00"></span>
</span>
Where:
<div class="location vcard">
<span class="fn org">Warfield Theatre</span>,
<span class="adr">
<span class="street-address">982 Market St</span>,
<span class="locality">San Francisco</span>,
<span class="region">CA</span>
</span>
<span class="geo">
<span class="latitude">
<span class="value-title" title="37.774929" ></span>
</span>
<span class="longitude">
<span class="value-title" title="-122.419416"></span>
</span>
</span>
</div>
Category: <span class="category">Concert</span>
<span class="ticketAggregate">
<span class="hoffer-aggregate">
Tickets from $<span class="lowprice">10</span>-$<span class="highprice">11</span>
<span class="currency">USD</span>
<span class="offercount">2,000 tickets available</span>
<a href="http://www.example.com/events/spinaltap/alltickets" class="offerurl">See all available tickets</a>
</span>
</span>
<span class="tickets">
<span class="hoffer">
<a href="http://www.example.com/events/spinaltap/presale" class="offerurl">Presale tickets</a>
<span class="price">$10</span> till <span class="pricevaliduntil">10 November 2015</span>
(<span class="quantity">1,000</span> available)
</span>
<span class="tickets">
<span class="hoffer">
<a href="http://www.example.com/events/spinaltap/tickets class=offerurl">Full-price tickets</a>
<span class="price">$10</span> till <span class="pricevaliduntil">10 November 2015</span>
<span class="quantity">1,000</span> available)
</span>
</span>
</div>
Here's how the sample works.
- In the first line,
class="vevent"indicates that the HTML enclosed in the<div>describes an Event—in this case, a transcendent rock experience. - The
a hrefline at the top contains both the URL to a detailed page about the event and the title of the event, and therefore includes both theurlandsummaryproperties. Both are included in the same<a>tag. - The sample describes properties of the event, such as its description and category. To label these product properties, each element containing one of these properties (such as
<span>,<img>, or<strong>) is assigned aclassattribute. - In this example, we want to include detailed location information using a nested hCard (Organization) microformat, like this:
<div class="location vcard"></div>. You can do this by puttinglocationandvcardon the same line, separated by a space. More information about nested entities. - This sample also contains two examples of the microformats value class pattern. Except in special circumstances (for example, when marking the best possible rating for review sites that don't use a 5-point rating scale), Google does not display content that is not visible to the user. However, the example above demonstrates some exceptions for dates and geo information. See below for more details.
Non-visible content
It can be useful to provide search engines with precise date and location information, even if you don't want that information to be visible to the reader of your page. For example, providing the latitude and longitude of a venue can help Google ensure that it is correctly mapped; providing the date in ISO date format can help ensure that it appears correctly in search results.Consider this example:
<span class="dtstart"> Oct 15, 7:00PM<span class="value-title" title="2015-10-15T19:00-08:00"></span> </span>
By including the detailed date information inside the block labeled with class="dtstart", you indicate that the rich snippets parser should use the value in the title attribute to find the start date of the event. This date can be represented using ISO date format (the example above—2015-10-15T19:00-08:00—specifies date, time, and time zone) without affecting the human-readable date ("Oct 15, 7:00PM") shown to users.
Geo information (latitude and longitude of the location) can also be included in HTML markup. Typically, this information is not visible on a web page about an event, but providing it can help ensure that the location is accurately mapped. For example:
<span class="geo">
<span class="latitude">
<span class="value-title" title="37.774929" ></span>
</span>
<span class="longitude">
<span class="value-title" title="-122.419416"></span>
</span>
</span>
How to mark up events for a single venue
If your HTML page shows information about the venue and then the list of events, then instead of of repeating the venue's location in each event markup, you can mark up the venue using an vcard, followed by a series of event markups for each event.
The following example shows vcard data for the Warfield Theatre, and events scheduled to appear there.
<div class="vcard">
<span class="fn org">Warfield Theatre</span>,
<span class="adr">
<span class="street-address">982 Market St</span>,
<span class="locality">San Francisco</span>,
<span class="region">CA</span>
</span>
<span class="geo">
<span class="latitude">
<span class="value-title" title="37.774929" ></span>
</span>
<span class="longitude">
<span class="value-title" title="-122.419416"></span>
</span>
</span>
<span class="photo"> http://www.example.com/images/image.jpeg</span>
</div>
<div class="vevent">
<a href="http://www.example.com/events/spinaltap" class="url summary">Spinal Tap</a>
<img src="spinal_tap.jpg" class="photo" />
When:
<span class="dtstart">
Oct 15, 7:00PM<span class="value-title" title="2015-10-15T19:00-08:00"></span>
</span>
</div>
<div class="vevent">
<a href="http://www.example.com/events/u2" class="url summary">U2</a>
<img src="u2.jpg" class="photo" />
When:
<span class="dtstart">
Oct 16, 7:00PM<span class="value-title" title="2015-10-16T19:00-08:00"></span>
</span>
</div>
Here is the same HTML code marked up with RDFa:
<div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:Event">
<a href="http://www.example.com/events/spinaltap" rel="v:url"
property="v:summary">Spinal Tap</a>
<img src="spinal_tap.jpg" rel="v:photo" />
<span property="v:description">After their highly-publicized search for a new drummer,
Spinal Tap kicks off their latest comeback tour with a San Francisco show. </span>
When:
<span property="v:startDate" content="2015-10-15T19:00-08:00">Oct 15, 7:00PM</span>—
<span property="v:endDate" content="2015-10-15T21:00-08:00">9:00PM</span>
Where:
<span rel="v:location">
<span typeof="v:Organization">
<span property="v:name">Warfield Theatre</span>,
<span rel="v:address">
<span typeof="v:Address">
<span property="v:street-address">982 Market St</span>,
<span property="v:locality">San Francisco</span>,
<span property="v:region">CA</span>
</span>
</span>
<span rel="v:geo">
<span typeof="v:Geo">
<span property="v:latitude" content="37.774929" ></span>
<span property="v:longitude" content="-122.419416" ></span>
</span>
</span>
</span>
</span>
Category: <span property="v:eventType">Concert</span>
<span rel="v:ticketAggregate">
<div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:Offer-aggregate">
Tickets from $<span property="v:lowPrice">10</span>-$<span property="v:highPrice">11</span>
<span property="v:currency">USD</span>
<span property="v:offercount">2,000</span> tickets available
<a href="http://www.example.com/events/spinaltap/alltickets" property="v:offerurl">See all available tickets</a>
</div>
</span>
<span rel="v:tickets">
<div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:Offer">
<a href="http://www.example.com/events/spinaltap/presale" property="v:offerurl">>Presale tickets</a>
<span property="v:price">$10 </span> <span property="v:currency">USD </span> till
<span property="v:pricevaliduntil" content="2025-10-15T19:00+08:00">10 November 2015 </span>
(<span property="v:quantity">1000 </span> available)
</div>
<div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:Offer">
<a href="http://www.example.com/events/spinaltap/tickets" property="v:offerurl">Full-price tickets</a>
<span property="v:price">$11 </span> <span property="v:currency">USD </span>
</div>
</div>
Here's how this sample works:
- The example begins with a namespace declaration using
xmlns. This indicates the namespace where the vocabulary (a list of entities and their components) is specified. You can use thexmlns:v="http://rdf.data-vocabulary.org/# namespace"declaration any time you are marking up pages for people, review, event, or place data. Be sure to use a trailing slash and # (xmlns:v="http://rdf.data-vocabulary.org/#"). - Also on the first line,
typeof="v:Event"indicates that the marked-up content describes an Event. - Each property of the Event (such as the description, event type, and the starting time) is labeled using
property. The property name is prefixed with v: (<span property="v:description">). - Google does not display information that isn't visible to the user, with a few exceptions. You can include geo information (latitude and longitude of the location) in HTML markup. Typically, this information is not visible on a web page about an event, but providing it can help ensure that the location is accurately mapped. In this example,
<span typeof="v:Geo">identifies geographic information, and thecontentattribute is used to specify latitude and longitude.
How to mark up events for a single venue
If your HTML page shows information about the venue and then the list of events, then instead of of repeating the venue's location in each event markup, you can mark up the venue as an Organization, followed by a series of event markups for each event.
The following example shows Organization data for the Warfield Theatre, and events scheduled to appear there.
<div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:Organization">
<span class="fn org">Warfield Theatre</span>,
<span class="adr">
<span class="street-address">982 Market St</span>,
<span class="locality">San Francisco</span>,
<span class="region">CA</span>
</span>
<span class="geo">
<span class="latitude">
<span class="value-title" title="37.774929" ></span>
</span>
<span class="longitude">
<span class="value-title" title="-122.419416"></span>
</span>
</span>
<span class="photo"> http://www.example.com/images/image.jpeg</span>
</div>
<div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:Event">
<a href="http://www.example.com/events/spinaltap" rel="v:url"
property="v:summary">Spinal Tap</a>
<img itemprop="photo" src="spinal_tap.jpg" />
When:
<span property="v:startDate" content="2015-10-15T19:00-08:00">
Oct 15, 7:00PM</span>
</div>
<div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:Event">
<a href="http://www.example.com/events/u2" rel="v:url"
property="v:summary">U2</a>
<img itemprop="photo" src="u2.jpg" />
When:
<span property="v:startDate" content="2015-10-16T19:00-08:00">
Oct 16, 7:00PM</span>
</div>
