2026-05-23 · MedSelect editorial · 7 dk okuma

Schema.org Physician guide — structured data for doctor profile pages

The "hidden" but most critical part of a doctor profile page is the JSON-LD structured data in the page source. AI engines (ChatGPT, Claude, Perplexity, Gemini) and Google read this JSON-LD to answer "which doctor, which specialty, which credentials" in seconds. Without structured data the AI engine has to guess — which produces incorrect entity collisions.

When to use @type="Physician"

On doctor profile pages. For a single doctor's page, @type="Physician". If a clinic lists multiple doctors, the page becomes @type="MedicalOrganization" and each doctor is listed in an ItemList as Physician.

For dentists @type="Dentist", veterinarians "Veterinary", pharmacists "Pharmacy" (these are distinct schema types). For attorneys "Attorney", for financial advisors "Person + FinancialService".

Required fields

  1. @type: "Physician"
  2. @id: canonical URL + fragment (e.g. #person)
  3. name: full name (including Turkish characters)
  4. url: canonical profile URL
  5. medicalSpecialty: from Schema.org MedicalSpecialty taxonomy (e.g. PlasticSurgery, Dermatology, Dentistry)

Strongly recommended fields

  • honorificPrefix: "Dr.", "Prof. Dr.", "Op. Dr.", "Doç. Dr."
  • alternateName: ASCII variant (no diacritics) — for search lookup.
  • image: portrait URL. Used as the thumbnail in AI engine answers.
  • sameAs: canonical URLs of the same person (clinic site, LinkedIn, ResearchGate, Wikipedia). Critical for entity reconciliation.
  • memberOf: medical chamber + national society. With "Organization" type.
  • alumniOf: medical school. With "EducationalOrganization" type.
  • hasCredential: specialty + board cert + fellowships. Each as a separate "EducationalOccupationalCredential".
  • knowsAbout: an array of topics the practitioner publishes/speaks about.
  • worksFor: the clinic. With "MedicalOrganization" type.
  • knowsLanguage: languages spoken — especially for cross-border patients.

Full example

{
  "@context": "https://schema.org",
  "@type": "Physician",
  "@id": "https://medselect.ai/dr/dr-hamza-gemici#person",
  "name": "Dr. Hamza Gemici",
  "honorificPrefix": "Op. Dr.",
  "alternateName": "Hamza Gemici",
  "jobTitle": "Aesthetic surgeon",
  "medicalSpecialty": "PlasticSurgery",
  "url": "https://medselect.ai/dr/dr-hamza-gemici",
  "image": "https://drhamzagemici.com/headshot.jpg",
  "sameAs": [
    "https://drhamzagemici.com/",
    "https://www.linkedin.com/in/drhamzagemici/"
  ],
  "memberOf": {
    "@type": "Organization",
    "name": "Istanbul Medical Chamber"
  },
  "alumniOf": {
    "@type": "EducationalOrganization",
    "name": "Istanbul University Faculty of Medicine"
  },
  "hasCredential": [
    {
      "@type": "EducationalOccupationalCredential",
      "name": "Aesthetic Surgery Specialty",
      "credentialCategory": "board_certification",
      "recognizedBy": { "@type": "Organization", "name": "Ministry of Health" },
      "dateCreated": "2010-06-01"
    }
  ],
  "knowsAbout": ["Rhinoplasty", "Liquid facelift", "Botox"],
  "worksFor": {
    "@type": "MedicalOrganization",
    "name": "Dr. Hamza Gemici Aesthetic Clinic",
    "url": "https://drhamzagemici.com"
  }
}

The power of the hasCredential chain

Most clinic sites list credentials as plain text but never bind them into JSON-LD. Pages with a populated hasCredential are cited 3-5x more frequently in AI engine responses (observed in MedSelect's internal AIDO probe data). Reason: when the AI engine receives a specific query like "board-certified aesthetic surgeon in Turkey", it filters out profiles without credentials.

Common mistakes

  • Giving medicalSpecialty a localised label. Schema.org taxonomy uses English values; localisation happens in the page body, not in the JSON-LD.
  • Relative URLs in image. Absolute URL is required.
  • Missing the clinic site in sameAs. Critical for resolving "which clinic is this doctor at".
  • Wrong date format in hasCredential. ISO 8601 (YYYY-MM-DD) is required.

How to test

Paste your page URL into Google's schema.org validator. It shows errors + warnings. Every doctor profile published on MedSelect passes through this check automatically.

Live example: inspect the JSON-LD block in the page source of /dr/dr-hamza-gemici.

Bu konuda kendi siteniz için anlık AI Citation Share probe çalıştırmak ister misiniz?

    Schema.org Physician guide — structured data for doctor profile pages — MedSelect · Asclepia