The Data
Everything we have checked, published as two JSON files you can download, query and republish — commercially, for free. The only condition is that you credit us.
Why this exists
Every hair transplant directory publishes who it included. None of them publish who they left out, or why. That makes the inclusions impossible to audit — you cannot tell a curated list from a list of whoever paid, because the only difference between them is the part nobody shows you.
So we publish both halves. 8 clinics we checked are not in our directory, and every one of them is in this dataset with the reason we recorded and the date we looked. If our standards are bad, you now have what you need to say so.
What's in it
clinics.json
Every entry in the directory, with the two facts the industry does not publish about itself:
-
Who operates. Whether the clinic names a physician on its own website.
Currently 33 of 36 clinics do.
This is recorded in four states, never a yes/no:
named,checked_names_nobody,not_checked, andagency_does_not_operate. -
Whether the price is theirs or ours.
Only 8 of 36 clinics put rates on
their own site. Every other figure is labelled
our_estimate, because it is our estimate and not a quote. - Accreditations, techniques, city, founding year, and our verification date.
Ratings and review counts are deliberately absent. We hold no review volume we can source, and shipping an unsourced star rating inside a dataset about provenance would be a joke at our own expense.
rejected.json
The clinics we checked and did not list. Each record carries what we observed, the date we observed it, the page we read, and a reason code:
| Reason | What it means | Count |
|---|---|---|
| no_named_surgeon | named no physician on their own site | 3 |
| not_a_clinic | an agency or intermediary, not an operating clinic | 1 |
| unverifiable | no primary source to build a listing from | 3 |
| duplicate_domain | a second domain for a practice already listed | 1 |
Two of those four codes carry no criticism at all — duplicate_domain and
unverifiable are bookkeeping about our own data, not findings about anyone's
business.
How each field was checked
- The clinic's own website is the source for who operates and what it costs. Not a directory, not a review site, not a listing that quotes them. If the clinic did not say it, we did not record it.
- Accreditations are checked against the issuing body where one is reachable — a badge on a clinic's own page is a claim, not a certificate.
- A failed page load is not evidence. Four clinics blocked our crawler; a human opened each one in a browser instead. We will never record "names nobody" on the strength of a 403.
- Every date is the date we looked, and it lives inside the record rather than in a header, so a row lifted out of the file still says when it was true.
- The full ranking method is on how we rank, including what it deliberately leaves out.
How to read it without getting it wrong
not_checked does not mean the clinic hides anything. It means we
have not looked, or the site refused us. Collapsing "we don't know" into "they won't
say" turns a gap in our research into an accusation against a business, and that is
the one way this dataset could do real harm. Anything you build on it should keep the
four states apart.
- Every reason in
rejected.jsonis a dated observation of a public page, not a verdict about a business. - These records have a shelf life. A clinic that named no physician in July may name one next year — which is why we re-check every rejected domain quarterly and publish the result whichever way it goes.
- Nothing here is an assessment of clinical quality or safety, and nothing here is medical advice.
The licence, in one line
CC BY 4.0. Use it, sell it, build on it, remix it. Credit Compare Hair Transplant with a link to comparehairtransplant.com, and say if you changed anything. That is the entire deal. We would rather this data got used everywhere with our name on it than sat here being ours.
Get something changed
Named a surgeon since we checked? Started publishing prices? Tell us and we will re-check. That is not a courtesy line — a published negative claim obliges us to keep it current, and a clinic that has changed is the correction we most want to make. Same goes for anything you think we got wrong. Send it here and we will re-check and re-publish.
The dataset is regenerated from the live database whenever clinic records change, so the repo is always the freshest copy. Per-record dates are the authority on freshness; the repo's commit history is the changelog.