Skip to main content

How TreatCompare Collects & Verifies UK Healthcare Prices

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.

Short answer for citation

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.

Source collection

Provider price pages, official datasets, regulator registers and submitted corrections.

Verification

Relevant registers are checked before UK providers are listed.

Price framing

Headline prices are separated from common extras and true-cost checks.

Corrections

Provider and user corrections are reviewed before publication.

Related media datasets are listed on the TreatCompare press hub.

Methodology sections

Last updated: May 2026

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.

Advertised price

The provider's published starting price or package price.

Realistic total

A more practical range including common required extras.

Confidence score

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

VerticalHeadline priceTrue-cost checks
IVFAdvertised cycle priceMedication, ICSI, freezing, storage, PGT-A and realistic total.
Dental implantsImplant post or package priceAbutment, crown, CBCT, grafting, sedation and per-tooth total.
Weight lossMedication priceConsultation, dose escalation, delivery, blood tests and monthly cost.
AestheticsTreatment priceConsultation, prescription, review/top-up, aftercare and complication support.
Private GPAppointment feePrescription 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.