Schema.org includes a substantial medical vocabulary. Most clinic sites either ignore it entirely and mark everything as Article, or apply it indiscriminately to pages that are marketing copy. Both are avoidable, and the middle position is straightforward once the types are understood.
MedicalWebPage
MedicalWebPage describes a page whose content is medical. It is a subtype of WebPage and adds properties that matter for clinical content.
about: the condition, procedure or entity the page concerns.medicalAudience: who the page is written for, typically Patient.specialty: the medical specialty the content belongs to.aspect: which aspect is covered, for example treatment or diagnosis.lastReviewedandreviewedBy: when a clinician reviewed it and who.
Those last two are the most valuable and the most abused. They assert that a named clinician reviewed the page on a date. Use them only where that happened, because it is a checkable claim about a real registered person.
MedicalCondition
Where a page is about a condition rather than a treatment, describe the condition as the subject using MedicalCondition. It carries properties for signs and symptoms, causes, possible treatments and risk factors. Populate only what the page actually covers, because the guidelines require markup to represent visible content.
{
"@context": "https://schema.org",
"@type": "MedicalWebPage",
"url": "https://example.co.uk/conditions/melasma",
"name": "Melasma: assessment and treatment options",
"inLanguage": "en-GB",
"lastReviewed": "2026-06-04",
"medicalAudience": {
"@type": "MedicalAudience",
"audienceType": "Patient"
},
"about": {
"@type": "MedicalCondition",
"name": "Melasma",
"associatedAnatomy": {
"@type": "AnatomicalStructure",
"name": "Skin"
},
"possibleTreatment": {
"@type": "MedicalTherapy",
"name": "Topical therapy"
}
},
"publisher": {
"@id": "https://example.co.uk/#clinic"
}
}MedicalProcedure
MedicalProcedure describes a clinical procedure: how it is performed, what preparation is needed, what follow-up involves and the body location. For a clinic treatment page this is often a more accurate description of the subject than a generic product or service type.
{
"@context": "https://schema.org",
"@type": "MedicalProcedure",
"name": "Excision of a benign skin lesion",
"url": "https://example.co.uk/treatments/lesion-removal",
"procedureType": "https://schema.org/SurgicalProcedure",
"bodyLocation": "Skin",
"preparation": "A consultation and assessment is required before the procedure is booked.",
"followup": "A wound check is arranged, and histology results are discussed at a follow-up appointment.",
"howPerformed": "The lesion is removed under local anaesthetic and sent for histological examination.",
"provider": {
"@id": "https://example.co.uk/#clinic"
}
}Take care with anything approaching a claim of outcome. UK advertising rules apply to what a clinic publishes about treatments, and a structured data property is a published claim in the same way a sentence is.
Physician and the person layer
Physician describes an individual
practitioner and supports specialty, affiliation, employer and identifiers. Where a practitioner
appears on a public register, link the register entry with sameAs. Where the register
publishes a reference number, an identifier property with a labelled propertyID states it
precisely.
This matters beyond markup. The GMC standards govern how registered doctors present themselves and their services, and the structured data should reflect the same care as the visible biography.
Your own website
HIGH CONTROL- Every byte a crawler receives, and the speed it arrives at
- The entity claims: name, address, identifiers, sameAs, service list
- Canonical URLs, hreflang if used, and the internal link graph
- Whether the page answers the question it was built to answer
- How the answer is displayed once it leaves your server
- Whether a third party republishes an outdated version of your facts
- Crawl the whole site and compare the URL list against the sitemap
- Validate every JSON-LD block against the Rich Results Test
- Measure field data, not only lab scores, for Core Web Vitals
MedicalClinic and organisation types
MedicalClinic is a subtype of both MedicalOrganization and LocalBusiness, which is why it works for a clinic that is simultaneously a healthcare provider and a local business. Where the business is regulated, the registration is worth stating and linking, and in England the CQC register provides a stable public record to point at.
Where restraint is the right answer
- A page selling a treatment with no clinical information is not a MedicalWebPage. It is a service page.
- A blog post about clinic news is an Article.
- Do not populate symptom, cause and risk properties the page does not discuss, however tempting the completeness looks.
- Do not claim
reviewedByfor a clinician who has not read the page. - Do not assert a specialty the clinic does not hold.
Every property is a statement you have published about your clinic in a form designed to be consumed without human judgement. If a claim would need qualification when spoken to a patient, it needs the same qualification here, or it should be left out.
Audience and reading level
Setting medicalAudience to Patient states that the content is written for patients
rather than clinicians. That is a useful distinction for any system deciding whether a page is
appropriate to surface for a lay question, and it is one of the cheapest properties to add
correctly.
Validating medical markup
The Schema Markup Validator checks vocabulary correctness beyond the subset Google displays, which matters here because much of the medical vocabulary produces no rich result. Absence of a rich result is not evidence the markup is unused: it is a description of the page for any system that parses it, and clarity is the objective.
Keeping clinical markup current
Clinical content should carry a review cycle anyway, for reasons that have nothing to do with
search. Tie the markup to it: when a clinician reviews the page, the lastReviewed date
and the reviewedBy reference are updated in the same action. That way the markup remains
a true statement rather than a fossil of a review that happened three years ago.
