UK cost surveys — physio

What does a physiotherapy appointment cost in the UK?

We read 13 UK physio websites, one business per city, and recorded what each publishes for a first appointment or initial assessment.

£65 median published price · £45 to £110 across 11 practices · measured 2026-07-31 to 2026-08-05

Session length varies more here than in any other vertical — the prices below cover appointments from 30 to 60 minutes, and a 30-minute session is not the same product as an hour. Where a practice published tiers by clinician seniority, the entry tier is recorded.

Every price, and where it was published

CityBusiness and the wording they usedPrice
Coventry Saunders Physiotherapy30 minute sessions are priced at £45 each; 'Sessions start from £45' £45+
Milton Keynes PC Physiotherapy30 min Initial assessment (New patient) £59; 60 min £90 £59
Plymouth Nuffield Health Plymouth HospitalInitial appointment £59.00 (price appears only inside the online booking flow, not on the clinic page) £59
Norwich Norfolk Physiotherapy & Acupuncture ClinicInitial Assessment and Treatment starting from (40-60 mins) £60 £60+
Aberdeen Burton PhysiotherapyPhysiotherapy (45mins) £62; (60mins) £75 £62
York Regen Physio (York North)First Appointment £65 £65
Bournemouth Body in Motion ClinicPhysiotherapy 1 hour assessment and treatment £70 £70
Edinburgh Physis PhysiotherapyMSK Physiotherapy Initial Consultation, Associates £70 (Senior £80, Directors £90) £70
Birmingham Edgbaston Physiotherapy ClinicInitial Assessment Consultation and Treatment Session 60 Minutes £80 £80
Oxford Bodyset OxfordPhysiotherapy - Initial Assessment (45 mins) £83; Express Initial Assessment (30 mins) £73 £83
Exeter The Good PhysioInitial Physiotherapy Assessment £110.00 for an hour £110

A “+” marks a price the business published as a “from” figure. Prices are quoted with the business's own label because the label is doing real work: a 30-minute session and a 60-minute session are not the same product, and an out-of-hours rate is not a consultation fee.

What is not in the figures

2 of the 13 businesses we read could not be included, and why is as interesting as the prices:

How this was measured

One business per city, found the way an assistant finds one: a plain search for the service and the city, first usable result. Every price is quoted from the business's own published page on the measurement date, with the label they used; where a business published a range or a 'from' price, that is stated. Candidates are gathered by tooling/price-survey.mjs and then curated by hand, because the automated pass reads out-of-hours rates, care-plan monthly fees and multi-hour blocks as if they were standard prices. A business is excluded rather than guessed at, and every exclusion is published with its reason.

The finding underneath the prices

Of 46 UK service websites read across four verticals, 0 could accept a booking or quote request from a machine, and 2 published a price in structured data. Two, and one of them changed under us. A driving school publishes prices through a Wix Stores payload it did not author. Harley Private Dental was recorded on 31 July as marking up its catalogue with Offer/OfferCatalog and no price values; re-measured on 6 August it carries three populated Offer prices (£110, £105, £85). We cannot tell whether the site changed or the first reading was wrong, and we are not going to guess — the current state is what is stated here. The other 15 dental practices re-checked the same day publish no price in structured data, and 13 of the 17 publish JSON-LD at all. A further 4 publish a price that exists only inside a JavaScript payload, so an assistant fetching the page is served no price at all.

These prices are published for people and invisible to machines. That is the gap this survey exists to measure, and the full survey has the method and every row.

If this is your business

Your prices are already public. Ajar publishes them in a form an assistant can read and act on, and holds every request for you to approve before anything binds. Nothing changes on your website.

How it works · Get a page