TreatCompare is a healthcare price comparison service. We collect prices from provider-published pages, official public datasets, regulator registers and submitted corrections, then normalise those records so users, journalists and AI systems can see what is included, what is excluded and when the data was last checked.
TreatCompare methodology in one paragraph
TreatCompare collects healthcare price data from public provider pages, official datasets, regulator registers and submitted corrections. We verify providers against the relevant UK regulator where applicable, separate advertised prices from realistic total-cost checks, label sample sizes and limitations, and keep downloadable press datasets tied back to their source and refresh schedule.
Provider price pages, official datasets, regulator registers and submitted corrections.
Relevant registers are checked before UK providers are listed.
Headline prices are separated from common extras and true-cost checks.
Provider and user corrections are reviewed before publication.
Related media datasets are listed on the TreatCompare press hub.
Methodology sections
What our data is based on
TreatCompare uses public data, provider-published information, official datasets and structured analysis to compare healthcare prices, access, availability and outcomes. Sources vary by country and topic, but can include regulator registers, official public datasets, clinic or provider websites, published price pages and TreatCompare compiled datasets.
For US IVF success-rate pages, the underlying outcomes data is based on CDC clinic-level fertility reporting where applicable. We combine that with provider and location data so users can compare cost and outcome context together.
Healthcare prices, eligibility, waiting times and clinic information can change. TreatCompare is for research and cost-comparison planning only; users should verify details directly with the relevant clinic, provider, insurer or public body before making decisions.
Data integrity
How TreatCompare collects and labels prices
TreatCompare's approach to price collection, source provenance, normalisation, outlier checks and comparison is documented in the methodology page. Data corrections go through the public corrections route. Clinical accuracy and patient-safety wording on healthcare pages are the responsibility of an appropriate registered healthcare professional, not TreatCompare.
How TreatCompare price data works
We separate the advertised price from the realistic total wherever a headline price is likely to exclude common extras. This is now a reusable TreatCompare feature across treatment pages: consultation fees, medications, diagnostics, add-ons, storage, delivery, reviews and aftercare can be shown as separate cost lines rather than hidden inside copy.
The provider's published starting price or package price.
A more practical range including common required extras.
A signal based on source quality, recency and comparability.
Standard price-record fields
New pricing datasets are normalised toward a shared record shape before they are rendered in tables or schema. The fields include country, vertical, treatment, sub-treatment, provider, source URL, regulator, registration number where available, location, city, region, postcode or ZIP, price amount, min/max range, currency, unit, basis, advertised price, realistic total cost, inclusions, exclusions, normalised price, normalisation method, confidence score, source type, first seen, last seen, last checked and publish status.
The TypeScript contract lives in the repo as HealthcarePriceRecord, so scraper output, static research files and future database rows can map to the same content model without rewriting page templates.
Advertised vs true cost rules
| Vertical | Headline price | True-cost checks |
|---|---|---|
| IVF | Advertised cycle price | Medication, ICSI, freezing, storage, PGT-A and realistic total. |
| Dental implants | Implant post or package price | Abutment, crown, CBCT, grafting, sedation and per-tooth total. |
| Weight loss | Medication price | Consultation, dose escalation, delivery, blood tests and monthly cost. |
| Aesthetics | Treatment price | Consultation, prescription, review/top-up, aftercare and complication support. |
| Private GP | Appointment fee | Prescription fee, pharmacy cost, referral letter, diagnostics and follow-up. |
Ranges, medians and sample-size rules
- We show medians where there are enough comparable observations for a treatment and country.
- Small samples are labelled clearly, and pages avoid pretending a thin dataset is market-wide.
- Provider packages are normalised to the closest clinically meaningful unit, such as per month, per appointment, per cycle, per tooth or per test panel.
- Outliers are reviewed before publication when they look like scraping errors, discontinued offers, voucher-only prices or non-comparable bundles.
- Where only benchmarks exist, the page says benchmark pricing rather than provider-table pricing.
Provider verification process
Before a provider's prices appear on TreatCompare, we verify their registration with the relevant UK regulatory body:
- Pharmacies are checked against the General Pharmaceutical Council (GPhC) register. We verify the pharmacy registration number and confirm the premises are currently registered.
- Healthcare services (such as weight management clinics) are checked against the Care Quality Commission (CQC) register. We confirm the provider is registered and has not had its registration suspended or cancelled.
- Doctor-led services are additionally checked against the General Medical Council (GMC) register to confirm the named clinician holds a licence to practise.
- Optical providers are checked against the General Optical Council (GOC) register.
Verification is performed when a provider is first added and is re-checked periodically. If a provider's registration lapses or is revoked, they are removed from all listings immediately. We also maintain a flagging system for providers whose pricing or behaviour appears suspicious, which triggers a manual review before any data is displayed.
Price collection process
Prices are collected from provider websites using automated scraping. Our scrapers visit provider pricing pages and extract the cost of each treatment, along with metadata about what is included in the price.
Frequency
Provider price datasets are typically updated weekly. Each price record includes a timestamp showing when it was last checked, which is displayed alongside the price on comparison pages.
What “inclusions” means
Different providers include different services in their headline price. Some include the initial clinical consultation; others charge separately. We record whether each listing includes: clinical consultation, ongoing monitoring, prescriber access, and blood tests. This information is displayed on comparison pages so users can compare total cost, not just headline price.
Price normalisation
Providers sell treatments in different pack sizes and durations. To enable fair comparison, we normalise prices to a standard unit — per week for injectable weight loss medications, per month for other treatments. The original pack size and price are retained in our data and can be viewed on individual listing pages.
Outlier detection and quality control
We run automated outlier detection on every price update. If a price is significantly above or below the median for that treatment, it is flagged for manual review. Flagged prices are not displayed until a reviewer confirms they are accurate. This prevents scraping errors, temporary website glitches, or deliberately misleading prices from appearing in comparisons.
How providers are added or removed
Providers are added to TreatCompare when they meet all of the following criteria:
- They hold valid registration with the relevant UK regulatory body (GPhC, CQC, GMC, or GOC).
- Their prices are publicly displayed on their website.
- They sell directly to patients (not wholesale or trade-only).
Providers are removed if their registration is revoked, if they cease trading, or if they are flagged as suspicious and fail manual review. Providers can also request removal by contacting us.
How disputes are handled
If a provider believes their price or listing is inaccurate, they can contact us with their regulatory registration number for verification. We will review and correct any errors within two working days. If a user reports an inaccurate price, we will re-scrape the provider's website and update accordingly.
Help keep these prices accurate
If a price has changed, a provider wants to update a listing, or you have a new quote, send it to the TreatCompare data team. We review submissions before publishing.
NHS waiting times data
The NHS waiting times shown on TreatCompare's NHS vs private comparison pages are sourced from NHS England's monthly Referral to Treatment (RTT) statistics — the official measure of how long patients wait between GP referral and starting consultant-led treatment.
Source
Our pipeline downloads the published NHS England Provider Extract (a per-trust per-specialty Excel file released around the second Thursday of each month, with a two-month lag). The full dataset covers every NHS England trust and every Treatment Function code; we filter it down to the 30 English cities and 9 specialties displayed on TreatCompare.
Refresh schedule
The ingest runs automatically on the 15th of every month via GitHub Actions. The workflow auto-discovers the latest published Provider Extract URL, parses the Excel file, filters to our trust × specialty matrix, and commits the regenerated dataset back to the repository. Once the data lands, every NHS-vs-private page on TreatCompare reflects the new month within minutes.
Specialty vs procedure granularity
NHS England publishes wait times at the Treatment Function (specialty) level, not at the individual procedure level. So a page about “knee replacement waiting time” shows the wait for the whole Trauma & Orthopaedics specialty (Treatment Function code 110), which is the granularity that NHS England actually publishes. Each page makes this clear in its FAQ schema and main copy.
Coverage and limitations
- Coverage is currently NHS England only. NHS Scotland (Public Health Scotland), NHS Wales (StatsWales) and HSC Northern Ireland publish their own waiting time statistics on different schedules and metrics, and are out of scope for the first version.
- The two-month publishing lag is a property of NHS England's data release schedule and cannot be reduced.
- City-level wait times are aggregated across the NHS trusts that serve each city. For multi-trust cities (notably London), this means the headline wait is an average across the dominant teaching hospitals; per-trust breakdowns are shown on every city detail page for transparency.
Open data and reuse
The full filtered dataset is published openly under the Open Government Licence v3.0. You can download it as CSV or JSON, and there's a press kit for journalists. Attribution to TreatCompare and NHS England is requested.
Adult social care cost data
The adult social care costs shown on TreatCompare's /care-costs pages are sourced from NHS England's annual Adult Social Care Activity and Finance Report (ASC-FR), which publishes per-local-authority unit costs for residential care, nursing care, combined residential and nursing, and short-term care.
Source
Our pipeline downloads the published NHS England ASC-FR statistical release (annual). Each English upper-tier council files an annual return covering total spend, activity volumes and unit costs by service category. The data is licensed under the Open Government Licence v3.0.
Council rate vs self-funder rate
Important: ASC-FR figures are the rates that local authorities pay providers for the residents they fund — not what private self-funders pay for the same care. Self-funder rates are typically 20-40% higher because care providers cross-subsidise local-authority-funded residents from private fees. TreatCompare shows the council rate as a baseline because it's the only nationally consistent published figure, and labels self-funder estimates explicitly.
Coverage and limitations
- England only. Adult social care in Wales (Welsh Government), Scotland (Scottish Government / Care Inspectorate) and Northern Ireland (HSC) uses different reporting and is out of scope.
- Residential and short-term care only (2024-25 onward). The ASC-FR Finance Report only publishes per-LA unit costs for residential, nursing, combined residential-and-nursing, and short-term care. Home care, day care, supported living and learning disability services are reported under the separate ASC Activity Report which doesn't publish comparable per-LA unit costs in the same form. We only ship pages for services where official per-LA data exists.
- Council-paid rates, not market rates. Self-funders typically pay more — see note above.
- Annual lag. ASC-FR is typically published in October each year for the financial year that ended the previous March. Data is therefore 7-19 months old at any point.
- LA-level granularity. Costs are aggregated to the upper-tier council level. Individual care home rates within an LA can vary by ±20-30% from the council average.
Open data and reuse
The full filtered dataset is published openly under the Open Government Licence v3.0. Download as CSV or JSON. Press kit at /press/care-costs-data.
Data accuracy disclaimer
While we make every effort to ensure prices are accurate and up to date, TreatCompare cannot guarantee that all prices are correct at any given moment. Prices can change at any time and may differ from what is shown on this site. Always verify the final price directly with the provider before making a purchase or booking a consultation.
TreatCompare does not provide medical advice. The information on this site is for comparison purposes only. Always consult a qualified healthcare professional before starting any treatment.