@type: ExerciseGym · SportsActivityLocation
Gym schema generator
Gym seekers compare hours, price and class options. ExerciseGym schema with 24/7 hours, membership pricing and classes makes your gym easy to evaluate.
Free · no account needed · validated against Google's LocalBusiness guidelines
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "ExerciseGym", "@id": "https://studiothread.example/#localbusiness", "name": "Studio Thread Hair", "description": "Independent Shoreditch hair salon specialising in lived-in colour, curly cuts and balayage. Vegan products, no-rush appointments.", "url": "https://studiothread.example", "logo": "https://studiothread.example/logo.png", "image": [ "https://studiothread.example/img/salon-16x9.jpg", "https://studiothread.example/img/colour-1x1.jpg" ], "telephone": "+44 20 7946 0321", "email": "book@studiothread.example", "priceRange": "££", "currenciesAccepted": "GBP", "paymentAccepted": "Credit Card, Debit Card, Apple Pay", "address": { "@type": "PostalAddress", "streetAddress": "88 Redchurch Street", "addressLocality": "London", "addressRegion": "Greater London", "postalCode": "E2 7DJ", "addressCountry": "GB" }, "geo": { "@type": "GeoCoordinates", "latitude": 51.52421, "longitude": -0.074918 }, "openingHoursSpecification": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Tuesday", "Wednesday", "Friday" ], "opens": "10:00", "closes": "19:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": "Thursday", "opens": "10:00", "closes": "21:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": "Saturday", "opens": "09:00", "closes": "17:00" } ], "specialOpeningHoursSpecification": [ { "@type": "OpeningHoursSpecification", "name": "Boxing Day", "validFrom": "2026-12-26", "validThrough": "2026-12-26", "opens": "00:00", "closes": "00:00" } ], "hasOfferCatalog": { "@type": "OfferCatalog", "name": "Hair services", "itemListElement": [ { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Cut & finish", "description": "Consultation, wash, cut and blow-dry." }, "priceSpecification": { "@type": "PriceSpecification", "minPrice": "65.00", "priceCurrency": "GBP" } }, { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Balayage", "description": "Hand-painted lightening with gloss and toner." }, "priceSpecification": { "@type": "PriceSpecification", "minPrice": "180.00", "priceCurrency": "GBP", "maxPrice": "290.00" } }, { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Curly cut", "description": "Dry cut tailored to your curl pattern." }, "price": "85.00", "priceCurrency": "GBP" } ] }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": "428", "bestRating": "5", "worstRating": "1" }, "review": [ { "@type": "Review", "author": { "@type": "Person", "name": "Amara Okafor" }, "reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" }, "reviewBody": "First stylist who actually understands my curls.", "datePublished": "2026-09-03" } ], "sameAs": [ "https://maps.app.goo.gl/studiothread-example", "https://www.instagram.com/studiothreadhair", "https://www.tiktok.com/@studiothreadhair" ]}</script>Generate your gym schema
Fill in your details — the JSON-LD, validator and search preview update as you type. Free, no account.
Step 1 of 7
Business
Type & identity
Business type
Pick the most specific schema.org subtype. It's the strongest relevance signal you can send.
@typeIdentity
Use the name exactly as it appears on your storefront and Google Business Profile.
nameMissing business name
alternateNamelegalNamedescription0/750
sloganfoundingDateWebsite & media
urlMissing website URL
logoSquare, at least 112×112px, on a plain background.
imageNo images
Free schema checker
Validate existing gym markup
Already have gym markup? Paste it to see its score, rich result eligibility and exactly what to fix.
Properties that matter for gyms
@type: ExerciseGym | SportsActivityLocation subtype. |
openingHoursSpecification | 24/7 or staffed hours. |
hasOfferCatalog | Memberships, day passes, personal training. |
priceRange | Monthly membership range. |
name + address | Required by Google for every LocalBusiness — and must match your Business Profile exactly. |
Best practices
- Encode memberships as per-month unit prices.
- List a free trial pass if you offer one.
- Staffed hours vs. access hours belong in the description.
FAQ
What the validator checks
- Required name and full postal address
- Phone format and international prefix
- Overlapping or invalid split hours
- Coordinates with 5+ decimal precision
- Expired holiday exceptions
- Keyword-stuffed business names
- Self-serving review markup
- Most specific schema.org subtype
For agencies
Managing several gyms?
Host the schema for up to 25 client locations and update hours across every site from one dashboard.
See Pro