We use cookies for analytics and to serve ads. Accept to enable Google Analytics and AdSense. You can decline to stay opt-out.
Fitness/bootcamp class schedule pages with Event listings, LocalBusiness context, FAQs, and breadcrumb navigation.
Anchors the gym/studio location and NAP details.
Represents the list of upcoming classes/events.
Describes each class/event with time and location.
Answers drop-in, membership, and cancellation questions.
Provides navigation context to the schedule page.
Ensure every applicable required property is present in your implementation. Nested props reference their parent objects (for example, `offers.priceCurrency`).
Paste as a single script tag. Keep product details, offer data, shipping/returns, and FAQ answers in sync with the page.
[
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://www.example.com/locations/downtown-gym#location",
"name": "Example Fitness — Downtown",
"url": "https://www.example.com/locations/downtown-gym",
"telephone": "+1-415-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "200 Market St",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94105",
"addressCountry": "US"
}
},
{
"@context": "https://schema.org",
"@type": "ItemList",
"@id": "https://www.example.com/classes#list",
"name": "This Week's Classes",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": { "@id": "https://www.example.com/classes/hiit-monday-7am#event" }
},
{
"@type": "ListItem",
"position": 2,
"item": { "@id": "https://www.example.com/classes/yoga-tuesday-6pm#event" }
}
]
},
{
"@context": "https://schema.org",
"@type": "Event",
"@id": "https://www.example.com/classes/hiit-monday-7am#event",
"name": "HIIT — Monday 7:00am",
"startDate": "2025-03-03T07:00:00-08:00",
"location": {
"@type": "Place",
"name": "Example Fitness — Downtown",
"address": {
"@type": "PostalAddress",
"addressCountry": "US",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94105"
}
},
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"offers": {
"@type": "Offer",
"price": "20.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.example.com/classes/hiit-monday-7am#book"
}
},
{
"@context": "https://schema.org",
"@type": "Event",
"@id": "https://www.example.com/classes/yoga-tuesday-6pm#event",
"name": "Vinyasa Yoga — Tuesday 6:00pm",
"startDate": "2025-03-04T18:00:00-08:00",
"location": {
"@type": "Place",
"name": "Example Fitness — Downtown",
"address": {
"@type": "PostalAddress",
"addressCountry": "US",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94105"
}
},
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"offers": {
"@type": "Offer",
"price": "18.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.example.com/classes/yoga-tuesday-6pm#book"
}
},
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do you allow drop-ins?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Drop-ins are welcome if the class shows availability. Reserve online to guarantee a spot."
}
},
{
"@type": "Question",
"name": "Is there a membership required?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No membership required. Members get discounted pricing at checkout."
}
},
{
"@type": "Question",
"name": "What is the cancellation policy?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Cancel up to 2 hours before class for a full refund. Late cancellations may be charged."
}
}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
{ "@type": "ListItem", "position": 2, "name": "Classes", "item": "https://www.example.com/classes" },
{ "@type": "ListItem", "position": 3, "name": "Downtown Schedule", "item": "https://www.example.com/classes/downtown" }
]
}
]For virtual-only, use a VirtualLocation in the Event and keep LocalBusiness if you still show a primary studio location.
Include one Event per class visible on the page. Keep times, locations, and pricing aligned with the UI.