Free Theater Event Schema Generator

Fill in the facts visible on your page, copy the Theater Event JSON-LD, and validate it before you publish. The guide, examples, and FAQs are below the tool. Generate this schema with AI

Type to filter 121 supported schema types.

Schema workflow

Use only facts a visitor can verify on the page, then validate the JSON-LD before publishing.

Required

  • Visible Theater Event content
  • Canonical page URL
  • Clear page owner/publisher
  • Fields that match the visible page

Recommended

  • A representative image when the schema supports it
  • SameAs or related links when visible
  • Validation before publishing

Avoid

  • Adding properties that are not visible
  • Copying example URLs into production
  • Skipping Google and Schema.org validation
Next step

Validate, repair, and publish clean structured data.

Check the generated JSON-LD against the visible page, then run both SwiftSchema and external validators before publishing.

Theater Event Schema Generator — Promote Plays and Musicals

Generate valid TheaterEvent JSON-LD with venue, cast, and ticketing details. Clarify performance times and improve discovery.

Try the TheaterEvent Generator

Why theater listings underperform

  • Showtimes miss timezone offsets or end times, causing confusion.
  • Venues are named in prose but not as a structured Place with address.
  • Cast and crew are unlinked, reducing relevance for performer searches.
  • Ticket info lacks price/currency/availability or a purchase URL.

How SwiftSchema helps

The TheaterEvent generator centers the fields that matter for eligibility: start/end dates with timezone, attendance mode, venue (`Place` or `VirtualLocation`), organizer, and ticket `Offer` details.

It encourages cast/crew via `performer`, adds language/context, and outputs copy-ready JSON-LD you can paste once per performance.

How it works

  1. 01

    Choose TheaterEvent in the generator below.

  2. 02

    Add performance name, description, start (and optional end) date/time with timezone.

  3. 03

    Provide venue details as a Place with address; add VirtualLocation for livestreams.

  4. 04

    List key cast/crew in `performer` and add ticket Offers with price, currency, availability, and URL.

  5. 05

    Copy JSON or Script, paste on the show page, and validate in the Rich Results Test.

Ready to build the markup?

Paste once per performance. Validate. Ship.

Generate TheaterEvent JSON-LD

What is TheaterEvent structured data?

TheaterEvent is an Event subtype for stage performances—plays, musicals, opera, improv, or dance theater. It clarifies who is performing, when and where the show runs, how to attend (in-person or virtual), and how to buy tickets. Accurate markup helps search engines surface the right date, venue, and ticket info for audiences searching by show title, cast, or local theaters.

Essential properties to include

  • name — production title; include season/year if relevant.
  • startDate / endDate — ISO 8601 timestamps with timezone (e.g., 2026-03-15T19:30:00-05:00).
  • location — Place with venue name and PostalAddress; add VirtualLocation for livestreams.
  • eventAttendanceMode — OfflineEventAttendanceMode, OnlineEventAttendanceMode, or MixedEventAttendanceMode to reflect in-person vs hybrid shows.
  • eventStatus — keep up-to-date (EventScheduled, EventCancelled, EventPostponed, etc.).
  • performer — principal cast/crew as Person or Organization entries.
  • organizer — producing theater company or presenter.
  • offers — ticket options with price, priceCurrency, availability, and purchase url; include multiple offers for seating sections.
  • image — poster or production stills (1200px+ recommended).
  • description — synopsis and key highlights; align with on-page copy.
  • inLanguage — include when performances are localized or multilingual.

Implementation tips

  • Create one TheaterEvent per showtime; for long runs, keep each performance distinct to avoid ambiguous dates.
  • Use EventSeries when you need to group a run while keeping individual performances linked.
  • Keep URLs canonical and stable; if a performance is cancelled or rescheduled, update eventStatus and optionally add previousStartDate.
  • Pair with BreadcrumbList and Organization schema for the venue or company to strengthen entity understanding.

Required properties

  • name
  • startDate
  • location.name

Recommended properties

  • description
  • image
  • endDate
  • eventAttendanceMode
  • eventStatus
  • location.address
  • organizer.name
  • performer.name
  • offers.price
  • offers.priceCurrency
  • offers.url
  • offers.availability
  • inLanguage
Minimal JSON-LD
Validate
{
  "@context": "https://schema.org",
  "@type": "TheaterEvent",
  "name": "Hamlet",
  "startDate": "2026-03-15T19:30:00-05:00",
  "location": {
    "@type": "Place",
    "name": "Majestic Theatre"
  }
}
TheaterEvent with cast, venue address, and ticket offers
Validate
{
  "@context": "https://schema.org",
  "@type": "TheaterEvent",
  "name": "Hamlet",
  "description": "Shakespeare's classic tragedy performed by the City Players.",
  "startDate": "2026-03-15T19:30:00-05:00",
  "endDate": "2026-03-15T22:00:00-05:00",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "image": [
    "https://example.com/images/hamlet-poster.webp"
  ],
  "location": {
    "@type": "Place",
    "name": "Majestic Theatre",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "123 Main St",
      "addressLocality": "Chicago",
      "addressRegion": "IL",
      "postalCode": "60601",
      "addressCountry": "US"
    }
  },
  "performer": [
    {
      "@type": "Person",
      "name": "Jane Carter",
      "description": "Playing Hamlet"
    },
    {
      "@type": "Person",
      "name": "Dev Patel",
      "description": "Playing Horatio"
    }
  ],
  "organizer": {
    "@type": "Organization",
    "name": "City Players",
    "url": "https://cityplayers.example.com"
  },
  "offers": [
    {
      "@type": "Offer",
      "name": "Orchestra",
      "price": "89",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "url": "https://tickets.example.com/hamlet-orchestra"
    },
    {
      "@type": "Offer",
      "name": "Balcony",
      "price": "59",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "url": "https://tickets.example.com/hamlet-balcony"
    }
  ]
}

FAQs

Do I need to list the cast?Show

Include key cast and crew using `performer` (Person or Organization). It improves understanding and eligibility for richer event displays.

How do I handle online or hybrid performances?Show

Set `eventAttendanceMode` and include a `VirtualLocation` with a join or ticket URL. Keep the in-person `Place` when hybrid.

What about recurring shows?Show

Use a unique TheaterEvent per performance. For long runs, consider `EventSeries` and link each show date as a separate TheaterEvent instance.

Related types

Browse all schema types

References