Rich snippets - Events

New! schema.org lets you mark up a much wider range of item types on your pages, using a vocabulary that Google, Microsoft, and Yahoo! can all understand. Find out more. (Google still supports your existing rich snippets markup, though.)

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:

image of a Google rich snippet for a page listing multiple events

... or it can list a single event, like this:

image of a Google rich snippet for a page listing a single event

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 tickets property.)
  • 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.

To check that your markup is correct, and preview how your content might look in search results, use the rich snippets testing tool. If rich snippets aren't appearing for your site, see possible reasons why.

<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>
Click to see HTML marked up with microdata

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. itemscope indicates that the content of the <div> describes an item, and itemtype="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 an itemprop attribute 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 properties street-address, locality, and region.
  • To specify dates and times unambiguously, use the time element with the datetime attribute. Here, the startDate property indicates the start date of the concert. The value in the datetime attribute 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 meta tag 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>

Click to see HTML marked up with microformats

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 href line at the top contains both the URL to a detailed page about the event and the title of the event, and therefore includes both the url and summary properties. 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 a class attribute.
  • 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 putting location and vcard on 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>
Click to see HTML marked up with RDFa

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 the xmlns: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 the content attribute 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>