Musical Artists: Specify your events to Google

This technique is being piloted for events on musical artist websites only. We'll be expanding to other categories of events soon.... watch this space!

Google shows musical artists’ tour dates to millions of users each day in Google Search. With your events displayed in Google products, your fans can easily see event details and find where to buy tickets. To be eligible for these features and to ensure that Google has the right data, you must provide up-to-date event schedules using structured data markup on your official website.

Providing event data on artist sites

Google’s new approach to organizing event data depends on finding complete event information on each artist’s official website. Human-readable event listings are not sufficient; instead, the artist’s website must include structured data about each upcoming event. This document describes three choices for how to provide this structured data:

  1. Add HTML markup directly to the event listings. This is a good option if you have a custom event platform, want full control over all fields, and don’t mind a little coding.
  2. Use a markup-compatible events plugin or widget. This is an easy, reliable option if your events listing is powered by one of the supported platforms listed under Option 2 below.
  3. Use Google’s point-and-click “Data Highlighter” in Webmaster Tools. This option allows you to participate without changing your website at all, as long as your events are formatted consistently.

Option 1: Add HTML Event Markup Directly

For websites whose HTML templates can be edited directly, the best approach is to add structured markup code to a page on the website that lists events. The page could be either the website’s home page; a page linked from the home page (e.g., my-artist.com/tour); or individual “event details” pages for each event. If your event listings are spread over multiple pages, add markup to each page individually. Google will collect event details from all the pages it indexes on your site.

You can embed data in a web page using schema.org field names and the new JSON-LD data format. JSON-LD is easy to produce with many widely available JSON encoders. The data, enclosed within the <script type="application/ld+json"> ... </script> tags as shown in the examples below may be placed in either the <HEAD> or <BODY> region of the page. Either way, it won’t affect how your document appears in users’ web browsers. 

Here’s an example snippet of JSON-LD describing two B.B. King concerts. A snippet like this can be inserted anywhere in the web page that lists those events.

<script type="application/ld+json">
[{
  "@context" : "http://schema.org",
  "@type" : "MusicEvent",
  "name" : "B.B. King",
  "startDate" : "2014-04-12T19:30",
  "location" : { 
     "@type" : "Place",
     "name" : "Lupo’s Heartbreak Hotel",
     "address" : "79 Washington St., Providence, RI"
  },
  "offers" : {
     "@type" : "Offer",
     "url" : "https://www.etix.com/ticket/1771656"
  }
},
{
  "@context" : "http://schema.org",
  "@type" : "MusicEvent",
  "name" : "B.B. King",
  "startDate" : "2014-04-13T20:00",
  "location" : { 
     "@type" : "Place",
     "name" : "Lynn Auditorium",
     "address" : "Lynn, MA, 01901"
  },
  "offers" : {
     "@type" : "Offer",
     "url" : "http://frontgatetickets.com/venue.php?id=11766"
  }
}]
</script>

The complete list of fields Google uses for musical events is shown in the Specification at the end of this document. Here is an example of a more fully specified event, including a tour image, full venue address, multiple performers, and multiple ticket classes. In general, the more fields specified, the more information about the event Google can present to Google users.

<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",
    "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",
        "price" : "$63.25",
        "availability" : "SoldOut",
        "url" : "http://www.ticketmaster.com/event/17004C29"
    },{
        "@type" : "Offer",
        "name" : "VIP Experience",
        "url" : "http://www.example.com/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/"
    } ],
    "eventStatus" : "EventRescheduled",
    "previousStartDate" : "2013-09-30T19:30",
    "typicalAgeRange" : "18+"
}]
</script>

Other markup formats

As alternatives to JSON-LD, Google can also read schema.org fields embedded in a web page with the microdata or RDFa standards. For examples of microdata markup, see http://schema.org/Event. For help authoring correct microdata, try Google's Structured Data Markup Helper tool.

Google also supports microformat-style markup, but strongly recommends schema.org for new markup implementations.

Testing your markup

Whichever format you choose, once you have edited your template to include the markup, you should test that Google can understand the events correctly. To do this, submit the HTML source of your marked-up web page to Google’s Events Markup Tester tool. If the tool reports “No structured data present,” then you likely have a syntax error such as a spurious comma. Otherwise, if the tool reports that any required event fields are missing, please repair the data and try again.

Option 2: Use a Markup-Compatible Events Plugin or Widget

Some band-oriented platforms and CMS event plugins have built-in support for adding structured data markup to the event listings they generate. If you use one of the following platforms, Google should understand your events automatically:

If your website shows its event listings by embedding the “widget” of an events database service, Google can read your events from that widget. Supported widgets include:

Your site's plugin or widget isn’t on our supported list? Forward this article to the author and ask them to add markup!

Option 3: Use Google’s “Data Highlighter” Tool

If you can’t add schema.org markup and you can't use a supported CMS plugin or widget, then you still have another option: Data Highlighter. Data Highlighter lets you “teach” Google to understand the pattern of your event listings without changing your HTML code at all. For this to work, your event listings must be formatted in a regular pattern — for example, in a table or list with each field shown consistently for each event, rather than in free-form text.

Data Highlighter is part of Google Webmaster Tools, so the first step is to get yourself verified to use those tools. Once you're verified, follow these step-by-step instructions to highlight and tag each key field of each event on your event listing page. If your event listings are spread over multiple pages, you can see the "Tag this page and others like it" option documented here.

When you're finished, Google remembers the pattern so that each time it crawls your site, it understands any newly added or modified events. Note that if your site later undergoes a formatting change, you'll have to go back to Data Highlighter to teach it the new pattern. Also note that, unlike with Options 1 and 2, this option does not make your structured data available to other search engines.

Making Sure Google Understands Your Content: the Structured Data Dashboard

Whether you use markup, a supported plugin, or Data Highlighter to indicate your site's event data, you'll use the same tool to monitor Google's understanding of the data over time: the Structured Data Dashboard. The Dashboard is a feature of Webmaster Tools. Log in and click on “Site Appearance,” then “Structured Data.” You can drill into your event data and see Google's understanding of it, including warnings about formatting problems or missing fields. Note, however, that updates to your website currently take up to two weeks to propagate to the Dashboard. (For instant feedback on structured data HTML markup, use the Events Markup Tester as described above.)

Troubleshooting tips

Google isn't showing a Knowledge Graph panel for your artist. 
Many factors determine whether a specific search triggers a Knowledge Graph panel, but helpful steps you can take are to make sure that the artist is in both Wikipedia and MusicBrainz, and that the artist’s official home page is recorded properly on both those sites.

There is a Knowledge Graph panel for your artist, but no events listed, even though you have added markup or applied Data Highlighter to that artist’s official site.
First, check that the events are shown correctly with no errors in the Structured Data Dashboard for the performer or venue's official website, as described above. If all fields look correct, report the missing events using the small “Feedback” link under the Knowledge Graph panel in Google search. Click “Wrong?” on the name of the artist and explain the problem, being sure to use the term “events” in your description.

Specification

Google understands structured markup using schema.org field names, which are supported by all major search engines. For music events on artists’ official sites, Google recommends the use of items of type schema.org/MusicEvent with the following fields, which will produce the most in-depth user experience and highest level of visibility. Google requires the fields marked in red to show the events at all.

Property Description Example value
name (required) The title of the event. "B.B. King with Jonathon \"Boogie\" Long"
image URL of an image or logo for the event or tour "http://www.bbking.com/gallery/b-b-king-live.jpg"
url URL of a page providing details about the event. "http://www.bbking.com/events/apr12-providence.html"
startDate (required) The start date and time of the event, in ISO-8601 format. "2014-04-12T19:30"
doorTime The time admission commences, in ISO-8601 format. "18:30"
endDate The end date and time of the event, in ISO-8601 format. "2014-04-12T22:00"
eventStatus The event’s cancellation status, if applicable. Must be one of the example values at right. "EventCancelled"
"EventPostponed"
"EventRescheduled"
previousStartDate The previously scheduled date (only if eventStatus is set). "2014-04-12T19:30"
typicalAgeRange The expected age range. "21+"
location (required) A nested schema.org/Place.  
location.name (required) The venue name. "Lupo's Heartbreak Hotel"
location.sameAs The URL of the venue’s official website. "http://lupos.com/"
location.address (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. "5201 S. Harper Ct. Chicago, IL"
location.address.streetAddress The street address. "5201 S. Harper Ct."
location.address.addressLocality The locality or city. "Chicago"
location.address.addressRegion The region or state. "IL"
location.address.postalCode The postal code. "60615"
location.address.addressCountry The country code. “US"
offers A nested schema.org/Offer, one for each ticket type.  
offers.name The ticket type. "Balcony"
"Platinum pass"
offers.url (recommended) The URL of a page providing the ability to buy tickets (if applicable). "http://www.ticketmaster.com/event/17004C29"
offers.price The ticket price, including service charges and fees. "$29.00"
offers.priceCurrency The 3-letter currency code (unless included in price value). "CAD"
"USD"
offers.availability The availability status of tickets. "InStock"
"LimitedAvailability"
"SoldOut"
offers.validFrom The ISO-8601 date and time when tickets go on sale. "2014-02-05T10:00"
offers.validThrough The ISO-8601 date and time when tickets go off sale. "2014-03-19T23:59"
performer A nested schema.org/Organization or schema.org/Person, one for each performer  
performer.name The artist name. "B.B. King"
performer.sameAs The URL of the artist’s official website or Wikipedia page. "http://en.wikipedia.org/wiki/B.B._King"