Overview

Mark up your organized events so that users can discover events through Google Search results and other Google products like Google Maps.
You can add all types of events through markup — from performances by famous artists, to a neighborhood salsa class. Adding markup to your events makes it easier for users to discover and attend your event.
If you only have a few events on your website, you can use the Data Highlighter.
Example
The image on the right shows event search results for "jazz concerts this weekend". See JSON-LD code for this example in the Structured Data Testing Tool. You can also use Microdata or RDFa syntax.
Guidelines
You must follow the general structured data quality guidelines and technical guidelines for your event to be eligible to be shown in Search results. In addition, the following guidelines apply to event structured data.
Technical guidelines
- The target page must contain structured data items from event types on schema.org.
- Each event MUST have a unique URL (a leaf page) and markup on that URL.
Content guidelines
- Each event must accurately describe the event name, start date, and location.
- Avoid marking non-events as events:
- Don’t promote non-event products or services such as "Trip package: San Diego/LA, 7 nights" as events.
- Don’t add short-term discounts or purchase opportunities, such as: "Concert — buy your tickets now," or "Concert - 50% off until Saturday."
- Don’t mark business hours as events, such as: "Adventure park open 8 AM to 5PM."
- Don't mark coupons or vouchers as events, such as: "5% off your first order."
- Mark up multi-day events correctly:
- If your event or ticket info is for an event that runs over several days, specify both the start and end dates of the event.
- If there are several different performances across different days, each with individual tickets,
add a separate
Event
element for each performance.
Structured data type definitions
The full definition of Event
is available
at schema.org/Event.
You must include the required properties for your content to be eligible for display in enhanced search results. You can also include the recommended properties to add more information about your content, which could provide a better user experience.
Required properties | |
---|---|
location
|
A nested Place. For example: "location": { "@type": "Place", "name": "Santa Clara City Library" } |
location.address
|
The venue's detailed address. For example: "location": { "@type": "Place", "name": "Santa Clara City Library", "address": { "@type": "PostalAddress", "streetAddress": "2635 Homestead Rd", "addressLocality": "Santa Clara", "postalCode": "95051", "addressRegion": "CA", "addressCountry": "US" } } Best practices:
|
name
|
Title of the event. For example: "name": "Jan Lieberman Concert Series: Journey in Jazz" Best practices:
|
startDate |
The start date and start time of the event in the local timezone. For example: "startDate": "2018-03-21T16:00" You can also add time in the UTC zone using ISO-8601 format. For example: "startDate": "2018-03-21T16:00-08:00" If you don't know the start time, don't enter fake time or 00:00. Instead, only specify the start date. For example: "startDate": "2018-03-21" |
Recommended properties | |
---|---|
description
|
Description of the event. Describe all details of the events to make it easier for users to understand and attend the event. |
endDate
|
The end date and end time of the event. Use the same format as "endDate": "2017-04-24T23:00-08:00" Don't enter fake time or 00:00 if the end time isn't known. Instead, only specify the end date. For example: "endDate": "2017-04-24" |
image
|
Repeated field of ImageObject or URL URL of an image or logo for the event or tour. We recommend that images are 1920px wide (the minimum width is 720px). Additional image guidelines:
For example: "image": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ] |
location.name
|
The venue's detailed name. For example: "location": { "@type": "Place", "name": "Santa Clara City Library, Central Park Library" } |
offers
|
A nested Offer, one for each ticket
type. For example:
"offers": { "@type": "Offer" } |
offers.availability
|
One of the following: For example: "offers": { "@type": "Offer", "availability": "https://schema.org/InStock" } |
offers.price
|
The lowest available price, including service charges and fees, of this type of ticket. For example: "offers": { "@type": "Offer", "price": "30" } |
offers.priceCurrency
|
The 3-letter currency code. For example: "offers": { "@type": "Offer", "priceCurrency": "USD" } |
offers.validFrom
|
The date and time when tickets go on sale (only required on date-restricted offers), in ISO-8601 format. For example: "offers": { "@type": "Offer", "validFrom": "2017-01-20T16:20-08:00" } |
offers.url
|
The URL of a page providing the ability to buy tickets. For example:
"offers": { "@type": "Offer", "url": "https://www.example.com/event_offer/123" } This URL must meet the following requirements:
|
performer
|
A nested PerformingGroup or Person, one for each performer. For example: "performer": { "@type": "PerformingGroup" } |
performer.name
|
The performer's name. For example: "performer": { "@type": "PerformingGroup", "name": "Andy Lagunoff" } |
Troubleshooting
If your site is not displaying as an option for purchasing tickets, follow the steps below:
- Make sure that your structured data includes the
offers.url
property. - Ensure that your URL meets the URL requirements for
offers.url
. - Ask Google to recrawl your site.
- Submit a request for (re)evaluation.