MusicEvent
MusicEvent is an Event subtype for concerts, recitals, music festivals, DJ sets, and any live music performance. It adds no properties of its own. Everything is inherited from Event. But the @type value matters: Google, Songkick, Bandsintown, and other event aggregators read it to classify the event as a music performance rather than a conference or workshop. Google's Event rich result works with MusicEvent out of the box.
The type hierarchy is Thing → Event → MusicEvent. The properties that matter most for concerts are performer (the artist or band), workPerformed (what compositions are being played), doorTime (when doors open, which is not the same as when the music starts), and offers (ticket information). Google still requires eventAttendanceMode on every Event subtype, a holdover from the pandemic that is now permanent.
Full example of schema.org/MusicEvent json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@id": "https://thunderdomedunmore.com/events/copenhagen-ensemble-2026#event",
"@type": "MusicEvent",
"name": "Nora Lindgren & The Copenhagen Ensemble: The Children's Doctor Live",
"url": "https://thunderdomedunmore.com/events/copenhagen-ensemble-2026",
"description": "The Copenhagen Ensemble performs Nora Lindgren's award-winning score for The Children's Doctor documentary live at The Thunderdome. A benefit concert for the Children First Foundation's pediatric research fund.",
"image": [
"https://thunderdomedunmore.com/events/copenhagen-ensemble-2026/poster-1x1.jpg",
"https://thunderdomedunmore.com/events/copenhagen-ensemble-2026/poster-4x3.jpg",
"https://thunderdomedunmore.com/events/copenhagen-ensemble-2026/poster-16x9.jpg"
],
"startDate": "2026-06-14T19:30:00-04:00",
"endDate": "2026-06-14T22:00:00-04:00",
"doorTime": "2026-06-14T18:00:00-04:00",
"duration": "PT2H30M",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@id": "https://thunderdomedunmore.com#venue",
"@type": "Place",
"name": "The Thunderdome",
"url": "https://thunderdomedunmore.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "500 Main Street",
"addressLocality": "Dunmore",
"addressRegion": "PA",
"postalCode": "18512",
"addressCountry": "US"
}
},
"performer": [
{
"@id": "https://copenhagenensemble.dk#group",
"@type": "MusicGroup",
"name": "The Copenhagen Ensemble"
},
{
"@type": "Person",
"name": "Nora Lindgren",
"url": "https://noralindgren.dk",
"jobTitle": "Conductor"
}
],
"workPerformed": {
"@id": "https://xoofilms.dk/music/the-childrens-doctor-score#album",
"@type": "MusicAlbum",
"name": "The Children's Doctor: Original Score"
},
"organizer": {
"@id": "https://childrenfirstfoundation.dk#ngo",
"@type": "NGO",
"name": "Children First Foundation",
"url": "https://childrenfirstfoundation.dk"
},
"offers": [
{
"@type": "Offer",
"name": "General Admission",
"price": "45.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://thunderdomedunmore.com/events/copenhagen-ensemble-2026/tickets",
"validFrom": "2026-03-01T10:00:00-05:00"
},
{
"@type": "Offer",
"name": "VIP Seating",
"price": "120.00",
"priceCurrency": "USD",
"availability": "https://schema.org/LimitedAvailability",
"url": "https://thunderdomedunmore.com/events/copenhagen-ensemble-2026/tickets?tier=vip",
"validFrom": "2026-03-01T10:00:00-05:00"
}
],
"sponsor": {
"@type": "Corporation",
"@id": "https://redpoint9.com#org",
"name": "Redpoint 9 Corp",
"url": "https://redpoint9.com"
},
"maximumAttendeeCapacity": 2000,
"isAccessibleForFree": false,
"inLanguage": "en",
"recordedIn": {
"@type": "VideoObject",
"name": "The Children's Doctor Live: Concert Film",
"description": "Full concert recording of The Copenhagen Ensemble performing at The Thunderdome"
}
}
</script>performer
performer identifies who is playing. It takes a Person, Organization, or PerformingGroup. For bands and orchestras, reference a MusicGroup (which extends PerformingGroup → Organization). For solo artists, you can use either Person or MusicGroup. Schema.org explicitly says MusicGroup "can also be a solo musician." Multiple acts go in an array. Google pulls performer names into the Event rich result card, so a structured object with name and url gets you more than a plain string.
workPerformed
workPerformed (a sub-property of workFeatured) connects the event to whatever is being performed. For concerts, that means MusicAlbum, MusicComposition, or MusicRecording objects. This is how the knowledge graph connects a live event back to the recorded version: a MusicEvent performs a composition that was recorded as a MusicRecording on a MusicAlbum. Google reads these links to show "performed live at" connections in knowledge panels.
MusicEvent vs Event
Use MusicEvent when the event is primarily a music performance. Use generic Event for conferences, workshops, or mixed-format events that happen to include music. A concert inside a conference is a MusicEvent nested as a subEvent inside the conference Event. Schema.org has no further subtypes under MusicEvent, so concerts, recitals, festivals, and DJ nights all use the same type.
doorTime vs startDate
doorTime is when the venue opens. startDate is when the performance begins. Most concerts have a 30-90 minute gap between the two. If you set them to the same value, you are either telling people to arrive late or misrepresenting when the music actually starts. Google shows both times separately in the Event rich result when both are present. Use ISO 8601 date-time format with timezone offset: 2026-06-14T18:00:00-04:00.
Minimal valid version
The smallest markup that still produces a valid MusicEvent entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MusicEvent",
"name": "Nora Lindgren & The Copenhagen Ensemble: The Children's Doctor Live",
"startDate": "2026-06-14T19:30:00-04:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Place",
"name": "The Thunderdome",
"address": {
"@type": "PostalAddress",
"streetAddress": "500 Main Street",
"addressLocality": "Dunmore",
"addressRegion": "PA",
"postalCode": "18512",
"addressCountry": "US"
}
},
"performer": {
"@type": "PerformingGroup",
"name": "The Copenhagen Ensemble"
},
"image": "https://thunderdomedunmore.com/events/copenhagen-ensemble-2026/poster-16x9.jpg",
"description": "The Copenhagen Ensemble performs the score from The Children's Doctor documentary live at The Thunderdome."
}
</script>Google rich results this unlocks
Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.
- Google docsEvent rich resultprimary
Common MusicEvent mistakes
Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.
- 01
Using generic Event for a concert
Wrong"@type": "Event" for a concert or live music performanceRight"@type": "MusicEvent"MusicEvent tells Google and event aggregators that this is a music performance, not a conference. Generic Event works but loses the classification signal. Songkick and Bandsintown filter specifically for MusicEvent when populating concert listings.
- 02
performer as a plain string
Wrong"performer": "The Copenhagen Ensemble"Right"performer": { "@type": "MusicGroup", "name": "The Copenhagen Ensemble", "url": "https://copenhagenensemble.dk" }performer expects a Person or Organization (including MusicGroup) object, not a string. A plain string cannot be matched to a knowledge graph entity. Give it name, url, and ideally @id so Google can connect the performer to their artist knowledge panel and Spotify profile.
- 03
doorTime and startDate set to the same time
Wrong"doorTime": "2026-06-14T19:30:00-04:00", "startDate": "2026-06-14T19:30:00-04:00"Right"doorTime": "2026-06-14T18:00:00-04:00", "startDate": "2026-06-14T19:30:00-04:00"doorTime is when the venue opens to the audience. startDate is when the performance begins. For most concerts, doors open 30-90 minutes before the first act. Setting them to the same time either tells attendees to arrive too late (missing door opening) or misrepresents when the music actually starts. Google displays both times separately in the Event rich result.
- 04
workPerformed as a title string
Wrong"workPerformed": "The Children's Doctor: Original Score"Right"workPerformed": { "@type": "MusicAlbum", "name": "The Children's Doctor: Original Score", "@id": "https://xoofilms.dk/music/the-childrens-doctor-score#album" }workPerformed expects a CreativeWork object: MusicAlbum, MusicComposition, or MusicRecording. A structured reference with @id lets Google connect the event to the album or composition in the knowledge graph. A plain title string has no entity to link to.
Schema properties in this example
About the example data
The Copenhagen Ensemble performs Nora Lindgren's film score for The Children's Doctor live at The Thunderdome in Dunmore, PA. The concert is organized by the Children First Foundation as a fundraiser for pediatric research, with Redpoint 9 Corp as sponsor. The performer references the MusicGroup entity and workPerformed references the MusicAlbum via @id.
Comments
Loading comments...