How we measure

Version 1.0.0, updated 2026-08-29. Public name of the score: Structural Verification Index. Every number on this site can be recomputed from the published data and the rules on this page: the engine reads the same file this page is rendered from.

What we check — and what we do not

We check structural trust facts against official public registers: who the responsible physician is, what certification and licence the registers confirm, whether the facility and the legal entity can be traced, whether the clinic discloses its own identifiers, whether its advertising is honest, whether its language fronts agree, and whether patient documents are published.

We do not assess outcomes, skill or complications. A high score means the clinic is well verified, not that treatment there is right for you. This is not medical advice.

The unit

One record = one clinic in this country: brand + address + responsible physician. The named physician is the load-bearing field — every register check is by name. Procedure segment and city are facets, not units.

Inclusion policy

Four mechanical conditions. The first three decide whether a clinic is listed; the fourth whether it can be scored.

  1. Identifiable: a live public surface and a working in-country contact on the check date.
  2. Provides the service itself: not an aggregator, booking site, affiliate or tour packager.
  3. In scope: the intervention is performed by a physician — plastic or aesthetic surgery, hair transplant, physician-led injectables or device treatments, medical weight loss. Out: salons, barbers, nails/brows/lashes, spas, med-spas without a named physician.
  4. Names a responsible physician. Otherwise the record is published as verification unavailable: listed, not scored, no rank. Unknown is not fault — a missing name is a statement about coverage, not an accusation.

Country register map

The map for South Korea was compiled 2026-08-29, before any clinic research. A class marked as absent makes its axis not applicable; a register that cannot be scripted leaves its axis cells as 'could not verify', without penalty. We never simulate a register.

Specialist board register대한성형외과학회 (Korean Society of Plastic and Reconstructive Surgeons) — 전문의 찾기 (certified-specialist finder) (open, machine-readable)
RECIPE (verified 2026-08-29, no login/CAPTCHA/token/cookie): plain HTML form POST to the same URL as the page. Method POST, Content-Type application/x-www-form-urlencoded, charset UTF-8. Fields: local='' , country='' , limit=<page size, e.g. 10 or 1000>, get_page=<1-based page>, keyword='hospital' (search by clinic name) or 'addr1' (search by region), key=<search term, UTF-8 percent-encoded>. Send a browser User-Agent; a Referer of the same page is accepted but not required. Response is the full page HTML: the hit count is in the string '총 N명', and the last <table> holds one row per certified specialist (No, 병원명, 전문의명, 구분, 전화번호, 주소). Build the body with Node URLSearchParams (or curl --data-binary @file) — Git Bash mangles Korean in curl --data-urlencode. NOTE the first pass failed because it sent search_type/search_word as GET params; the real field names are keyword/key and the method is POST, which is why the unfiltered default roster came back. Korean-only. There is no doctor-name search input (only region/hospital), but the specialist's name is returned in every row, so a name can be confirmed by searching the clinic. This academic-society roster (분과전문의/인정의) is the closest public equivalent to a 'specialist board' check for plastic surgery — Korea has no separate government specialist-certification lookup; 전문의 status is otherwise only inferable indirectly via HIRA's per-hospital 전문의 headcounts (see facility_registry). A rival association site, 대한성형외과의사회/PRS Korea (https://www.prskorea.co.kr/sub/search/doctor.asp), also lists surgeons but explicitly restricts full search to paying regular members, so it is not treated as the primary open register here.
Medical licence register보건복지부 면허민원 (Ministry of Health & Welfare license-affairs portal) (login required)
GENUINE SECOND-PASS ATTEMPT (2026-08-29), still login: fetched the portal, enumerated every link, and found exactly two login-free services — /instt/docuNo_check.do (문서번호 진위확인) and /instt/docCert_check.do (면허(자격)증 위변조확인). Read the page JS, extracted the real submit target (jQuery $.ajax POST to /instt/check_process.do with DOCU_NO=<12 digits, 3x4 concatenated> and CURR_NO=<licence number>, dataType json) and ran it: it is scriptable and anonymous but useless as a register — it verifies a certificate you were handed, and cannot be searched by doctor name or licence number alone. Everything else is behind login. Unlike Thailand's TMC public check, Korea has no patient-facing licence-verification-by-name service; 정부24 (gov.kr) offers an equivalent authenticated service ('의료인면허(자격)등록증명') that is likewise login-gated. Because this axis has no open register, M3/M4-style licence citations cannot be sourced from a live self-service search — only from what a clinic itself discloses, from HIRA facility pages that state 전문의 headcounts against a licensed 요양기관, from the 대한성형외과학회 roster (specialist_board), or — for a negative — from the MOHW sanctions list, which does publish 대표자의면허번호.
Facility register건강보험심사평가원(HIRA) 병원·약국찾기 / 병원정보서비스 (open, machine-readable)
RECIPE (verified 2026-08-29, no login/CAPTCHA/key/cookie): the portal's own header form is a plain GET that is rendered server-side — the map SPA is a red herring. (1) SEARCH: GET https://apm.hira.or.kr/search?where=<tot|ykiho>&query=<UTF-8 percent-encoded name or region>. where=tot is the combined search; where=ykiho restricts to facilities only. Response is HTML; the count is in '병원/약국 검색결과 N건', and each result is a <li class="list"> whose title div carries onclick="detailView('<ykihoB64>');" and whose <span class="name" id="<numeric ykiho>"> holds the facility name — phone, road address and postcode follow in the same block. <ykihoB64> is base64(numeric ykiho) then percent-encoded (12345199 -> MTIzNDUxOTk%3D). (2) DETAIL: GET https://apm.hira.or.kr/mapSearch/detail?menuId=AP000042&ykiho=<ykihoB64> for the page, or better GET https://apm.hira.or.kr/mapSearch/medicalCareMedicalDetailInfoAjax?ykiho=<ykihoB64>&targetFragment=tabInfo0&pageSize=10000 for a small HTML fragment containing exactly '진료과목 및 의사현황' — total doctor count and 전문의 headcount per specialty (tabInfo1 = 평가정보, tabInfo2 = 진료비정보, tabInfo3 = 장비). (3) AUTOCOMPLETE (name normalisation): GET https://apm.hira.or.kr/rest/search/autoComplete?query=<term> returns JSON {code:'SUCCESS', data:[{keyword:…}]}. Send a browser User-Agent. The first pass failed because it only loaded the SPA shell at /mapSearch/main and tried the retired hira.or.kr/rd/hosp/getHospList.do (HTTP 410). HIRA is the authoritative facility register — 요양기관 registration is a legal precondition to operate — and the 전문의-per-department figures on the detail fragment are the citable proxy for specialist staffing (M1/M4).
Company register국세청 홈택스 — 사업자등록상태조회 (National Tax Service business-registration status check) (open, machine-readable)
RECIPE (verified 2026-08-29, no login/CAPTCHA/API key/session cookie): the WebSquare UI is a red herring — the underlying action answers a direct request. POST https://teht.hometax.go.kr/wqAction.do?actionId=ATTABZAA001R08&screenId=UTEABAAA13&popupYn=false&realScreenId= with header Content-Type: application/json; charset=UTF-8 (a browser User-Agent and a Referer of https://teht.hometax.go.kr/websquare/websquare.wq?w2xPath=/ui/pp/index_pp.xml were sent; no cookie needed) and body {"pubcUserNo":"","mobYn":"N","inqrTrgtClCd":"1","txprDscmNo":"<10 digits, hyphens stripped>","psbSearchYn":"Y"}. ENCODING TRAP: posting the WebSquare-looking XML <map id="ATTABZAA001R08">…</map> returns {"resultMsg":{"code":"ETC","exceptType":"org.codehaus.jackson.JsonParseException"}} — the action is JSON-only. Omitting inqrTrgtClCd/txprDscmNo/psbSearchYn returns 'ETICMZ0149 사용자번호가 존재하지 않습니다', which is what makes the field set self-verifying. Read smpcBmanTrtCntn (ko) / smpcBmanEnglTrtCntn (en) for registered-vs-closed and trtCntn for taxpayer type and closure date. Still number-only (사업자등록번호 in, open/closed + taxpayer-type out): it cannot resolve a clinic name to a registration number, so it is usable once a number is known — Korean clinics publish theirs in the site footer in NNN-NN-NNNNN form, which is where all three test numbers came from, and the KHIDI foreign_patient register also indexes by 사업자등록번호. A second, higher-detail legal-entity channel — 법인등기 at the court's 인터넷등기소, https://www.iros.go.kr — requires member sign-up before any name search and charges a fee per record (₩700 열람 / ₩1,000 발급), so that channel remains 'login' and is not primary.
Sanctions / discipline register보건복지부 — 거짓청구 요양기관 명단공표 (false-claim institution public disclosure) + 불법개설 의료기관 실태조사 결과 공표 (illegally-established institution disclosure) (open, machine-readable)
Plain GET, no parameters; parse the <table> rows directly. Usefully, the table publishes 대표자의면허번호 (the representative's medical licence number) alongside the clinic name — the only place in this map where a Korean physician licence number appears in an open register. This is a general (all-specialty) healthcare-fraud/illegal-operation disclosure required by 국민건강보험법 §100, published twice a year and displayed for only 6 months per cycle — it is not aesthetic-medicine-specific and is not searchable by clinic name (must be browsed page by page, ~40-44 entries per cycle at last check). No aesthetic/plastic-surgery clinic was observed in the sampled entries. Given the rotation and narrow disclosure criteria (≥15M KRW in false claims, or ≥20% of billing false), a clean read of this list must never be reported as 'no sanctions found' for M7 — only a positive hit is citable; a miss is always null, never evidence of a clean record.
Foreign-patient registerKHIDI 국제의료정보포털/메디컬코리아 — 외국인환자 유치의료기관 정보시스템 (Medical Korea foreign-patient-recruiting institution registry) (open, machine-readable)
RECIPE (verified 2026-08-29, no login/CAPTCHA/token; the jsessionid in the page's script URLs is cosmetic and not required): three sibling endpoints, all accepting POST (application/x-www-form-urlencoded, UTF-8) or GET with the same params, each returning an HTML table fragment. (1) 유치기관 현황조회 — /korp/agencyStateList.do, params korName=<UTF-8 institution name>, optional type, withdrawStatus, sido, targetNation, registerNumber (exactly 4 digits), pageIndex=<1-based, 10 rows/page>; count is in '총 N건의 의료기관이 검색되었습니다'; the 상태 column gives 유지 / 폐업 / 등록취소 — this is the citable registration-status field. (2) 평가인증기관 현황조회 — /korp/certStateList.do, same params, adds 주소 and 유치대상국가 columns. (3) 등록기관 조회 by number — /korp/searchAgency.do (사업자등록번호 split 3+2+5). BULK: /korp/agencyStateExcel.do?korName=… returns a real .xlsx (application/x-msdownload, Content-Disposition '유치기관 현황.xlsx') for offline use; /korp/certStateExcel.do likewise. The first pass failed only because it guessed non-existent paths (/korp/inst/instSearch.do etc., both 404) instead of reading fnAgencyState() in the main page's inline script, which names the real target. Build bodies with Node URLSearchParams — Git Bash corrupts Hangul in curl --data-urlencode. Legal registration as a 유치의료기관 is a precondition under the Medical Service Act for marketing to foreign patients, so this is the authoritative check for that claim, and the 폐업/등록취소 statuses make lapsed registrations citable as well as live ones.

The nine axes

Every axis is a fact or a quote from a public source, scored 1–5 against a fixed rubric. There are no editorial axes. Each cell carries its sources, its source class (official register / secondary) and its check date.

Fame, review volume, domain age and social-media following are scored nowhere.

M1 · Specialist certification of the responsible physician — weight 26

Whether the physician named as responsible for this clinic is found in the country's specialist board register with a current specialisation matching the advertised segment (plastic surgery or dermatology, by segment).

Register class: Specialist board register — 대한성형외과학회 (Korean Society of Plastic and Reconstructive Surgeons) — 전문의 찾기 (certified-specialist finder).

ValueAnchor
5Found by name or number; specialty matches what is advertised; status current.
4Found; specialty adjacent to what is advertised (noted on the profile).
3Found in the register; the register does not disclose specialty.
2Only a secondary source (association, aggregator) supports the certification.
1Certification is claimed and found in no source.

M2 · Identifiability of the responsible physician — weight 16

Whether a patient can name the specific physician and their role before making contact, and whether that physician is tied to this location.

ValueAnchor
5Physician(s) named with role and tied to this address.
4Named; role unclear.
3A name appears in only one place on the site.
2Surname or initials without a full name.
1'Our team' only — this is the gate state 'verification unavailable'.

M3 · Basic medical licence — weight 8

Whether the responsible physician's registration is found in the country's medical licence register.

Register class: Medical licence register — 보건복지부 면허민원 (Ministry of Health & Welfare license-affairs portal).

ValueAnchor
5Matched by licence number.
4Matched by name.
3Register not machine-accessible; the clinic publishes the number.
2Licence claimed without a number.
1Public data contradicts the claim.

M4 · Facility registration — weight 10

Whether the operating location is found in the facility register (where the country has one; otherwise this axis is not applicable).

Register class: Facility register — 건강보험심사평가원(HIRA) 병원·약국찾기 / 병원정보서비스.

ValueAnchor
5Record found: name, address and status match.
4Record found with a spelling discrepancy.
3Register exists; no record found (we do not claim 'unlicensed').
2Only the clinic's own statement.
1A published registration number is contradicted by the register (verified false → flag).

M5 · Legal-entity traceability — weight 8

Who is legally responsible: a legal entity in the company register, tied to the brand and the address.

Register class: Company register — 국세청 홈택스 — 사업자등록상태조회 (National Tax Service business-registration status check).

ValueAnchor
5Legal entity and registration number published and matched in the register.
4Matched by name.
3Legal entity named; register not accessible.
2Brand only.
1No legal entity found after a full pass (verified conflict → hold H2).

M6 · Self-disclosure of identifiers — weight 10

Whether the clinic itself publishes the numbers needed to re-check it (licences, certificates with issuer). Disclosure is rewarded; a missing number is not a missing licence.

ValueAnchor
5All load-bearing numbers published with issuers.
4Physician numbers published; facility or legal-entity numbers not.
3Partial, without issuers.
2Logos without numbers.
1No identifiers at all.

M7 · Advertising honesty — weight 12

A machine profile of the clinic’s own claims: outcome guarantees, ‘100% safe’, ‘No. 1’ or ‘best’ without an issuer, ‘unlimited grafts’, before/after presented as a promise, foreign boards presented as the national specialist board. Every deduction cites an exact quote with URL, locale and date.

ValueAnchor
5No pattern from the lexicon found.
4One or two soft superlatives.
3Systematic superlatives without guarantees.
2Guarantee or ‘100%’-class statement (bright line; cap candidate).
1Verified fake credential (flag + cap).

M8 · Cross-locale consistency — weight 5

Whether facts agree across the language fronts of the clinic's own site (physician, numbers, accreditations) — a mechanical comparison of extracted fields.

ValueAnchor
5All load-bearing fields agree.
4Spelling discrepancies.
3Some facts appear on only one front.
2A load-bearing fact (physician or number) differs.
1Fronts contradict each other on credentials (H2 candidate).

M9 · Patient documents — weight 5

Presence check for five document classes: informed consent, risks/contraindications, aftercare, revision policy, complaint route. Presence only — the quality of the documents is not assessed.

ValueAnchor
5All five classes published.
4Four.
3Two or three.
2One.
1None.

The formula

Each axis value 1–5 is mapped to 0–1. The composite is the weighted average over the axes that hold a value: axes that are not applicable in this country and axes we could not verify drop out of the normalisation.

composite = 100 × Σ(weight × (value − 1) / 4) / Σ(weight of axes with a value)
score = min(composite + focus adjustment, lowest active ceiling), clamped to 0…100

Coverage threshold: a score is published only when at least 75% of the applicable axis weight holds a sourced value. Below that the record shows 'verification pending' and carries no rank.

Focus adjustment

A mechanical classification from the clinic's own menu.

FocusAdjustment
specialist0
aesthetic in general clinic-2
spa or salon addon-5

Score ceilings

A ceiling is applied only from a verified-false finding — never from 'not found'. Each ceiling is rendered from a fixed template with the exact quote or register entry and its URL; no free text is written about a named clinic.

CeilingMax scoreWhat triggers itFixed wording
Verified false accreditation or licence claim45A claimed accreditation, board certification or licence is contradicted by the official register. Never applied on 'not found' alone.The register {registry} (record dated {date}) does not confirm the credential claimed at {url}: “{quote}”. Under this methodology the score is capped at {cap}. The clinic has been offered a right of reply.
Outcome guarantee or ‘100% safe’-class statement65The clinic's own published text guarantees a result or absolute safety. Applied only with the exact quote.The clinic's own page {url} ({locale}, {date}) states: “{quote}”. Under this methodology an outcome guarantee caps the score at {cap}.
Active sanction in a machine-readable official register45Exists only in countries whose registry map declares a sanctions register. Absence of a sanction is never a finding.Entry in the {registry} register dated {date}: {url}. The score is capped at {cap} and the profile is held pending the clinic's right of reply.

The sanctions ceiling exists only in countries with a machine-readable official sanctions register. In this country: 보건복지부 — 거짓청구 요양기관 명단공표 (false-claim institution public disclosure) + 불법개설 의료기관 실태조사 결과 공표 (illegally-established institution disclosure). Absence of a sanction is never a finding.

Holds

Positive verification by default; the hold ladder handles the cases where public records conflict or the physician cannot be identified.

IDHoldEffectFixed wording
H1Clarification requestedprofile provisional, no crownA clarification has been requested from the clinic. The profile is provisional and carries no crown until it is resolved.
H2Material structural conflictceiling after the right-of-reply window (69), 14-day right-of-reply windowPublic records show a material structural conflict ({detail}). After the right-of-reply window the score is capped at {cap}.
H3Responsible physician not identifiablecomposite withheld, unrankedThe responsible physician could not be identified from public sources. The composite score is withheld and the clinic is listed without a rank.

Crowns and procedure slices

A crown is a boolean gate from register-verified axes — never from a clinic's claim. Within a crown, the order is the composite.

CrownMeaningGate
Specialist-ledThe responsible physician holds a current, matching specialist certification in the official register (M1 = 5, official source) and is clearly identifiable (M2 ≥ 4).M1 ≥ 5 (official register) · M2 ≥ 4
Foreign-patient readyThe clinic is verified in the country's official foreign-patient register. Exists only where such a register exists.verified in KHIDI 국제의료정보포털/메디컬코리아 — 외국인환자 유치의료기관 정보시스템 (Medical Korea foreign-patient-recruiting institution registry)

Procedure slices list the clinics whose own menu names the procedure (a sourced boolean), ranked by the composite:

Outcome quality

There is no independent measurement of treatment outcomes in this field, and we do not imitate one. The register facts already in the axes are the only quality-adjacent evidence we publish.

How the data is produced (unattended run)

  1. No score without a source — in two passes. A collector records the value, the quote and the URL; a separate verifier reloads the URL and looks for the quote by string match. If the quote is not found, the cell degrades to 'could not verify'.
  2. All negative wording is templated. Ceilings and holds are rendered from fixed strings plus the cited quote or register entry. Nothing free-form is written against a named clinic.
  3. The validator is the build gate. Every axis key must be present (null allowed, absence not), every citation must resolve, ceilings only from verified-false findings with a quote, weights must sum to 100, and superlatives in our own text fail the build.
  4. A checklist per record: at least two independent sources, the register map opened and cited, every axis either a sourced value or an explicit 'could not verify'.
  5. Right of reply without a human in the loop: messages to the contact form or corrections@ are processed as ordinary data input. A correction with a source is applied and logged; a statement without one is published next to the data and the score does not change.

Freshness

Each record shows the real date of its last check. Register axes (M1, M3, M4) are rechecked within 90 days; the advertising axis (M7) within 180 days. Every change is logged in the changelog and in the record's own history.

What this register does not do

Independence: we take no money from clinics, we do not book, we do not refer, and no position can be bought. Data changes only through sourced facts, for every clinic under the same rules.

This site is an independent research project provided 'as is'. Clinic names and public information are used for identification. Nothing here creates a doctor–patient or advisory relationship.

Methodology versions

DateVersionChange
2026-08-29v1.0.0Initial public methodology: nine mechanical axes (M1–M9, weights summing to 100), 1–5 rubric per axis, weighted composite normalised over axes that hold a value, 75% coverage threshold, hold ladder H1–H3, score caps only from verified-false findings, focus penalty, registry-gated crowns.