Schema Markup for Clinic Websites: The MedicalBusiness Structured Data Guide
Schema markup has a reputation for being the kind of technical SEO task that gets mentioned in a meeting, nodded at, and then never actually done. Which is a shame, because for clinic websites it's genuinely one of the lower-effort, higher-clarity fixes available — it's essentially you telling Google, in a language it understands perfectly, exactly who you are, where you're located, what specialties you cover and who your practitioners are. No guesswork required on Google's part. We particularly love 💖 this one because unlike a lot of marketing work, it's a "set it up properly once" job rather than an ongoing campaign to manage.
The mistake almost every clinic makes with schema
The first mistake is simply not having it — most clinic websites, even nicely designed ones, have zero structured data behind the scenes, leaving Google to guess at business type, specialties and practitioner details from plain page text alone. The second, more serious mistake is clinics (often on a developer's or plugin's default recommendation) adding aggregateRating or Review schema pulled from patient testimonials or star ratings to make search listings look flashier with gold stars. For registered health practitioners, using patient testimonials in advertising — including structured data built from them — runs directly against AHPRA's advertising rules. It's a genuinely easy trap to fall into because it's a common (and often encouraged) tactic in other industries.
Copy-paste MedicalBusiness / MedicalClinic JSON-LD template
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MedicalClinic",
"name": "[Clinic Name]",
"url": "https://www.example.com.au",
"logo": "https://www.example.com.au/logo.png",
"image": "https://www.example.com.au/clinic-photo.jpg",
"telephone": "+61-X-XXXX-XXXX",
"address": {
"@type": "PostalAddress",
"streetAddress": "[Street Address]",
"addressLocality": "[Suburb]",
"addressRegion": "[State]",
"postalCode": "[Postcode]",
"addressCountry": "AU"
},
"medicalSpecialty": ["Physiotherapy", "ExercisePhysiology"],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "08:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday"],
"opens": "09:00",
"closes": "13:00"
}
],
"employee": [
{
"@type": "Physician",
"name": "[Practitioner Name]",
"medicalSpecialty": "Physiotherapy"
},
{
"@type": "Physician",
"name": "[Practitioner Name]",
"medicalSpecialty": "ExercisePhysiology"
}
]
}
</script>
Important: deliberately leave out aggregateRating and review properties. These are typically built from patient testimonials or star ratings, and using patient testimonials in advertising is not permitted for registered health practitioners under AHPRA's advertising guidelines. Organic Google reviews can still exist on your Google Business Profile — that's a different thing to actively featuring review-based schema as a marketing asset on your own site.
employee array to list each practitioner with their own medicalSpecialty, so a search for "exercise physiologist [suburb]" could surface the right individual rather than the practice as a whole competing for every specialty at once.@type: Dentist alongside individual practitioner pages, each carrying its own schema referencing the parent practice, so each dentist's bio page had a chance of appearing distinctly in relevant local searches.MedicalBusiness with medicalSpecialty: "Psychiatric" and carefully worded description fields avoiding any language implying guaranteed therapeutic outcomes, keeping the structured data consistent with the compliant tone of the visible page copy.How the mechanics actually work
Schema markup is added as JSON-LD (JavaScript Object Notation for Linked Data) in the page's HTML, usually in the <head>. It doesn't change what's visually on the page — it's a parallel, machine-readable summary of the same information. Google uses it to build a clearer picture of your business for local search and knowledge panel features, though it's worth being clear-eyed that schema is a supporting signal, not a ranking guarantee.
- Validate before publishing — use Google's Rich Results Test to check for errors before the schema goes live.
- Match visible content — the details in your schema should genuinely match what's on the page; Google can penalise markup that misrepresents the page.
- One schema block per entity — for multi-location clinics, each location page should carry its own address and opening hours, not one shared block reused across every page.
- Update it when things change — a practitioner leaving or hours changing means the schema needs updating too, or it becomes actively misleading rather than just outdated.
Mistakes to avoid
- Adding aggregateRating or review schema sourced from patient testimonials.
- Copy-pasting the same schema block across multiple location pages without updating the address.
- Letting schema fall out of date after a practitioner or opening hours change.
- Publishing schema that doesn't match what's actually visible on the page.
- Skipping validation and assuming it's error-free.
Frequently asked questions
Will adding schema markup make our clinic rank higher immediately?
Not on its own, and it's worth being honest about that — schema is a clarity signal, not a ranking factor with a guaranteed, immediate lift. It works best alongside solid on-page content and a well-optimised Google Business Profile, not as a standalone fix.
Can we include our Google star rating in the schema?
We'd recommend against building aggregateRating schema from patient reviews given AHPRA's rules on testimonials for registered health practitioners. Your Google Business Profile can still display its own organic star rating natively — that's separate from adding review-based schema to your own website as a marketing feature.
Do solo practitioners need this, or is it just for multi-practitioner clinics?
Solo practitioners benefit too, just with a simpler structure — one MedicalBusiness block with your specialty and hours is enough. The multi-practitioner employee array setup mainly matters once you have several practitioners worth surfacing individually in search.
How do we know if our schema is actually working correctly?
Google's Rich Results Test and Search Console's structured data reports will tell you if the markup is valid and being read correctly. What they won't tell you definitively is how much it's contributing to rankings — that's genuinely hard to isolate from everything else happening on your site.
Keep reading 🤍
I help Gold Coast and Brisbane businesses grow with branding, websites and marketing that actually works.
Work with me ✦