Skip to content
Back to Blog
Insights

Clinic schema markup Malaysia

By Bernard Leong

Co-Founder, Geo One

19 September 2026
Clinic schema markup Malaysia

A clinic needs one primary organisation block, using the most specific valid Schema.org type for the practice, carrying a stable @id, your legal and trading name, full address, telephone, openingHoursSpecification, availableLanguage and sameAs links. Each clinician is a Person linked back to that clinic; each treatment sits on a service page linked from it; FAQPage markup goes only where you have real questions and real answers. Every fact must match your Google Business Profile and your own pages. That is the whole job. Schema packages sold to clinics often bolt on extra types and properties, not harmful in themselves, but no substitute for getting the core block right.

Written for owners and practice managers of GP, dental, veterinary and physiotherapy practices in the Klang Valley, 2 to 50 staff, with nobody in-house who owns marketing. Disclosure: it comes from Geo One, a Generative Engine Optimisation (GEO) and Answer Engine Optimisation (AEO) agency in Kuala Lumpur that builds and audits structured data for Malaysian SMEs.

What is schema markup, and why does it matter for a clinic?

Schema markup is code in your page source, usually JSON-LD, that states your business facts in a structure machines read the same way every time. Instead of hoping a crawler works out that "Mon to Fri, 9am till 6pm (closed public holidays)" means your opening hours, you declare it.

The vocabulary lives at Schema.org, launched in 2011 by Google, Microsoft (Bing) and Yahoo, with Yandex joining shortly after; see Schema.org's own account of its founding. It is a shared open standard, not one company's private format, and not a ranking trick.

GEO is the work of improving the signals that help AI-generated answers understand and potentially surface a business; AEO is structuring content so an assistant can lift a clean, correct answer out of it. Schema sits underneath both. Structured data helps search systems interpret explicit business facts and can make pages eligible for supported Google search features. Treat it as entity and technical hygiene—not as a direct AI-ranking mechanism. If those terms are new, see Geo One's plain-English explanation of answer engine optimisation.

The honest limit: no markup improves the signals that help AI platforms understand a business beyond what the content itself provides, and no markup can secure a citation or mention in any AI answer. These systems publish no ranking criteria and change without notice. What schema does is remove the ambiguity that makes a clinic easy to overlook.

What a Klang Valley clinic actually needs, field by field

One block, on your homepage or a dedicated location page, with these filled in properly:

  • name, the public-facing clinic name as patients know it, on your signage and invoices.
  • legalName, the Companies Commission of Malaysia (SSM)-registered entity name, if it differs from the trading name.
  • alternateName, a genuine abbreviation or commonly used variation patients type. Many KL clinics are known by a short form that differs from the registered name.
  • @id, a stable, permanent URL identifying the clinic entity, for example https://yourclinic.com/#clinic. Without it, nothing else in your markup can point at the clinic reliably.
  • telephone, full international format (+603... or +6012...), matching the number on your WhatsApp and your Google listing.
  • address, a PostalAddress with street, city, state, postcode and addressCountry: MY, matching your Google listing: "Petaling Jaya, Selangor, 46200", not "KL area". If your SSM-registered address differs from the physical clinic location patients visit, use legalAddress for the registered address. Schema.org's MedicalClinic properties permit the two to differ.
  • openingHoursSpecification, per day, with separate entries if you close for lunch. A clinic open 9am–1pm and 2pm–6pm needs two entries for that day. Note public holiday, Raya and Chinese New Year closures on the page itself.
  • contactPoint, a ContactPoint with availableLanguage listing the languages your front desk genuinely handles—commonly English, Bahasa Malaysia and Mandarin, often Tamil or Cantonese too. Schema.org describes availableLanguage on a ContactPoint as the clearer pattern for languages handled at reception.
  • sameAs, your Google Business Profile, Facebook page, professional register entry and any legitimate directory listing you control.
  • Clinician links, each doctor's Person entry connected to the clinic @id.
  • Service links, each treatment page reachable from the clinic entity, not floating on its own.

Multiple branches: each physical location should have its own MedicalClinic node with its own address, telephone, openingHoursSpecification and unique @id. A parent organisation entity can connect the branches.

Complete only the first nine fields and you have done more than most clinic websites.

A realistic Malaysian JSON-LD example

{
  "@context": "https://schema.org",
  "@type": "MedicalClinic",
  "@id": "https://yourclinic.com/#clinic",
  "name": "Klinik Sejahtera PJ",
  "legalName": "Sejahtera Medical Sdn Bhd",
  "url": "https://yourclinic.com",
  "logo": "https://yourclinic.com/images/logo.png",
  "telephone": "+60312345678",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 Jalan Kemajuan",
    "addressLocality": "Petaling Jaya",
    "addressRegion": "Selangor",
    "postalCode": "46200",
    "addressCountry": "MY"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 3.1073,
    "longitude": 101.6068
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "09:00",
      "closes": "13:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "14:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday"],
      "opens": "09:00",
      "closes": "13:00"
    }
  ],
  "specialOpeningHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "validFrom": "2026-02-16",
      "validThrough": "2026-02-18",
      "opens": "00:00",
      "closes": "00:00"
    }
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "reception",
    "telephone": "+60312345678",
    "availableLanguage": ["English","Malay","Chinese"]
  },
  "availableService": [
    {
      "@type": "MedicalTherapy",
      "name": "General consultation",
      "url": "https://yourclinic.com/services/general-consultation"
    },
    {
      "@type": "MedicalTherapy",
      "name": "Chronic disease management",
      "url": "https://yourclinic.com/services/chronic-disease"
    }
  ],
  "physician": {
    "@type": "Physician",
    "@id": "https://yourclinic.com/#dr-aminah",
    "name": "Dr Aminah binti Yusof",
    "worksFor": { "@id": "https://yourclinic.com/#clinic" }
  }
}

Which Schema.org type fits which practice?

Use the most specific valid type that genuinely describes the entity, and check it on Schema.org before you use it: guessing a type that does not exist is worse than using a broader one that does.

Practice or page Suggested modelling Watch out for
GP or general clinic MedicalClinic Add medicalSpecialty only where accurate
Dental practice Dentist Do not also declare it a MedicalClinic on the same node
Veterinary practice VeterinaryCare Avoid patient-facing medical properties that assume humans
Physiotherapy centre Check Schema.org first; a broader business type with an accurate specialty is safer Do not assume a narrow type exists because it sounds right
Doctor or therapist page Person, with worksFor pointing to the clinic @id Modelling an individual as a medical business type is usually wrong

What about FAQPage markup?

As of May 2026, Google no longer displays FAQ rich results in Search. FAQPage remains valid Schema.org vocabulary, but clinics should use it only when it accurately represents visible questions and answers—not because they expect an expanded Google result.

Mark up FAQs only where they earn their place:

  • Every question and answer in the markup must be visible on the page. Markup that does not reflect visible content risks a manual action.
  • Use questions patients actually ask at the counter: "Do you take walk-ins on Sunday?", answered "Yes, 9am to 1pm, walk-ins only"—not questions written to fill a schema slot.
  • Answer in the answer. Do not write "contact us to find out more" where a fee range, a wait time or an opening hour belongs.
  • One FAQPage per page, where the questions live, not duplicated site-wide.

What should a clinic leave out?

  • aggregateRating and review on your own business. Google's structured data guidance treats reviews a business collects and publishes about itself as self-serving and ineligible for review rich results. Marking them up invites a problem and buys nothing.
  • priceRange guesses and invented offers. If you do not publish consultation fees, do not declare them in code.
  • Long lists of medicalSpecialty values you do not practise. Claiming five specialties to catch more queries misdescribes the practice.
  • Claims that are regulated offline. Advertising of medical services and medicines in Malaysia is constrained by the Medicines (Advertisement and Sale) Act 1956 and, for registered practitioners, by Malaysian Medical Council guidance on advertising. Structured data is published content: if a claim about outcomes or comparative superiority would not pass on a brochure, it does not become acceptable in JSON-LD. Check anything borderline with your regulator or your medical indemnity provider before it goes live.

How do you check the markup is right?

Run the page through the Schema Markup Validator for syntax and vocabulary errors, and Google's Rich Results Test for whether Google sees an eligible rich result. Expect a difference between them. MedicalClinic may pass the vocabulary validator while returning no eligible rich result in Google's tool, because not every valid type qualifies for a Google search feature. Both tools are useful; neither is the final word on whether the markup is doing its job.

Frequently asked questions

What schema does my clinic website actually need?

One primary organisation block using the most specific valid Schema.org type for your practice, carrying a stable @id, legal or trading name, full address, telephone, openingHoursSpecification, contactPoint with availableLanguage and sameAs links to your profiles. Then each practising clinician as a Person linked back to the clinic, each treatment on a service page linked from the clinic entity, and FAQPage markup only where you have real questions and answers.

Will adding schema markup get my clinic mentioned in ChatGPT or Gemini answers?

No markup guarantees a citation, a mention or a position in any AI answer. These systems publish no ranking table and change without notice. What schema does is remove the ambiguity that makes a clinic easy to skip, because assistants are more likely to rely on facts they can parse and corroborate across several places than on prose buried in a slider.

what answer engine optimisation actually is

Which Schema.org type should a dental or veterinary practice use?

A dental practice is modelled as Dentist, and a veterinary practice as VeterinaryCare. Do not also declare a dental practice a MedicalClinic on the same node. For veterinary care, avoid patient-facing medical properties that assume human patients. A GP or general clinic uses MedicalClinic, adding medicalSpecialty only where it is accurate. Always check the type on Schema.org before using it.

What type should I use for a physiotherapy centre?

Check Schema.org first, because a broader business type with an accurate specialty is safer than inventing a narrow one that does not exist. Do not assume a type exists just because the name sounds right. Guessing a type that is not in the vocabulary is worse than using a broader type that genuinely is.

Do my schema details have to match my Google Business Profile?

Yes. Every fact in the markup has to match your Google Business Profile and your own pages. That includes the telephone number, which should be in full international format and the same number that rings on your WhatsApp and your Google listing. Use name for the trading name patients know and legalName for the SSM-registered entity where the two differ.

What is an @id and why does my clinic markup need one?

The @id is a stable, permanent URL that identifies the clinic, for example https://yourclinic.com/#clinic. Without it, nothing else in your markup can point at the clinic reliably. Each doctor's Person entry connects to the clinic @id through worksFor, and each treatment page should be reachable from the clinic entity rather than floating on its own.

Bernard Leong

Co-Founder, Geo One

Nearly 20 years across energy, capital strategy and applied AI, including large-scale operational data at BP. Founded SkillsMe and Cryptrain.

More about the team

Check Your AI Visibility

See how AI platforms currently view your business with a free scan.

Free AI Scan
Clinic schema markup Malaysia | Geo One