Treatwell Scraper — UK Beauty & Wellness Salon Data
Pricing
from $1.20 / 1,000 result scrapeds
Treatwell Scraper — UK Beauty & Wellness Salon Data
Scrape salon, spa, and barbershop listings from Treatwell.co.uk, the UK's largest beauty and wellness booking marketplace. Get business names, addresses, phone numbers, ratings, and treatment prices by city and category. No login required.
Pricing
from $1.20 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape salon, spa, and barbershop listings from Treatwell.co.uk, the UK's largest beauty and wellness booking marketplace. Get business names, addresses, phone numbers, ratings, and treatment prices by city and treatment category, across every major UK town.
What is Treatwell Scraper?
Treatwell lists thousands of hair salons, barbershops, nail bars, spas, and beauty clinics across the UK, searchable by city and by treatment category (hair, nails, massage, face, body, hair removal). Every listing and detail page carries the full venue profile server-rendered directly into the page — name, address, GPS coordinates, phone number, star rating, review count, and a sample of the treatments on offer with starting prices.
This actor walks a city + category search, follows the site's own pagination, and visits each venue's detail page to pull the complete profile. What people build with it:
- Local lead generation — beauty-industry suppliers (product distributors, booking software, POS systems, insurance) build outreach lists of salons and spas filtered by city, category, and rating.
- Market research — franchise operators and beauty brands map salon density, treatment pricing, and competitor coverage by UK city before opening a new location.
- Price benchmarking — salon owners compare their own treatment menu and pricing against nearby competitors in the same category.
- Directory and aggregator products — build a searchable local salon-finder without maintaining a directory from scratch.
What data does Treatwell Scraper extract?
Each venue record includes:
- Name — the salon, spa, or barbershop's business name
- Category — venue type as listed on Treatwell (Hair Salon, Nail Salon, Spa, Barbershop, Beauty Salon, etc.)
- Address, city, postal code — the full UK address
- Region — the neighbourhood/area name Treatwell groups the venue under (e.g. "Angel, London")
- GPS coordinates — latitude and longitude
- Phone — direct contact number
- Rating and review count — the venue's average customer rating and total reviews
- Price range — lowest and highest treatment price at the venue, in GBP
- Top treatments — a sample of featured treatments with starting prices (e.g. "Ladies Cut & Blow Dry — from £67")
- Description — the venue's own profile text
- Image — the venue's primary listing photo
- URL — the source detail page
How to scrape Treatwell data
| Field | Type | Required | Description |
|---|---|---|---|
city | String | No | UK city or town, e.g. "london", "manchester", "edinburgh". Defaults to "london". |
treatmentGroup | String | No | Treatment category: hair, hair-removal, massage, nails, face, body. Defaults to "hair". |
startUrls | Array | No | Specific Treatwell.co.uk city/category listing pages or venue detail pages. Overrides city + treatmentGroup. |
maxResults | Integer | No | Maximum venues to return (default: 100, max: 5,000) |
proxyConfiguration | Object | No | Proxy settings. Not required — Treatwell.co.uk has no anti-bot protection — but recommended for large runs. |
Tips:
- Combine
cityandtreatmentGroupfor a focused pull, e.g.city: "manchester",treatmentGroup: "nails"for nail salons in Manchester. - Pagination is handled automatically — the actor reads the site's own page count and only fetches as many pages as needed to reach
maxResults. - For a nationwide category database, run once per major UK city (London, Manchester, Birmingham, Glasgow, Edinburgh, Leeds, Liverpool, Bristol...) with a high
maxResults. - Popular cities and categories can return thousands of venues (London hairdressers alone lists 2,000+) — set
maxResultsto match what you actually need.
Output
{"name": "Eishas Studio","address": "176 High Street","city": "Ilford","postalCode": "IG1 1LZ","url": "https://www.treatwell.co.uk/place/eishas-studio/","scrapedAt": "2026-07-26T14:16:47.044Z","treatmentGroup": "hair","latitude": 51.5928718,"longitude": 0.0843224,"phone": "07414 586479","rating": 5,"reviewCount": 6,"imageUrl": "https://cdn1.treatwell.net/images/view/v2.i16766414.w720.h480.x8B8E297C/","itemDescription": "Give your beauty routine a major promotion at Eishas Studio, your new go-to destination in Ilford...","priceRange": "£5.00 - £80.00","category": "Hair Salon","subCategory": "Beauty Salon","region": "Ilford, London","priceFrom": 5,"priceTo": 80,"currency": "GBP","topTreatments": [{ "name": "Ladies Cut & Blow Dry", "priceFrom": 45 },{ "name": "Full Head Colour", "priceFrom": 65 }]}
How much does it cost?
Treatwell Scraper uses CheerioCrawler (no browser needed):
| Volume | Estimated CUs | Estimated Cost |
|---|---|---|
| 100 venues | ~0.04 | ~$0.02 |
| 500 venues | ~0.18 | ~$0.09 |
| 1,000 venues | ~0.35 | ~$0.18 |
| 5,000 venues | ~1.60 | ~$0.80 |
The actor first collects venue URLs from listing pages, then visits each detail page for the full profile (phone, price range, treatment menu). Costs scale linearly.
Can I integrate?
Push UK salon and spa data into your tools:
- Google Sheets — build a sortable salon database filtered by city, category, or rating
- CRM / outreach tools — feed venue lists into a B2B sales pipeline for suppliers selling into the beauty industry
- Zapier / Make — trigger workflows when new salons appear in a target city
- PostgreSQL / MongoDB — power a searchable salon-finder app
- Power BI / Tableau — visualize salon density and treatment pricing by UK city
Can I use it as an API?
Yes. Build UK beauty-industry intelligence into your product:
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("studio-amba/treatwell-scraper").call(run_input={"city": "manchester","treatmentGroup": "nails","maxResults": 200,})for venue in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{venue['name']} — {venue['city']} — {venue.get('priceRange', 'no price listed')}")
JavaScript:
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_API_TOKEN" });const run = await client.actor("studio-amba/treatwell-scraper").call({city: "edinburgh",treatmentGroup: "massage",maxResults: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const withPhone = items.filter((v) => v.phone);console.log(`${withPhone.length}/${items.length} Edinburgh venues have a listed phone number`);
FAQ
Is phone number always available? Almost always — Treatwell requires a contact number for bookable venues. It's pulled from each venue's detail page and is present on nearly every listing.
Are ratings and review counts available? Yes, for the large majority of venues. Very new listings without reviews yet will have this field empty.
What treatment categories are supported?
Six top-level categories: hair, hair-removal, massage, nails, face, and body. Use startUrls with a Treatwell venue-type URL (e.g. /places/at-barbershop/offer-type-local/in-london-uk/) to target barbershops or massage-and-therapy-centres specifically.
What cities are supported?
Any UK city or town Treatwell covers — not just the 8 largest. Pass any city name as the city input; the actor builds the search URL directly.
Why is city sometimes a borough or postal town instead of the city I searched?
The city field reflects the last line of the venue's actual postal address as published on Treatwell (e.g. "Ilford" for a London venue), not the search term. This is more accurate for outreach than forcing every result to say "London".
Limitations
- Treatment prices reflect Treatwell's listed starting prices at time of scraping and can change with demand-based pricing (off-peak/last-minute discounts).
topTreatmentsis a sample (up to 5 featured treatments), not the full service menu — Treatwell doesn't expose the complete price list outside its booking flow.- Very new or unreviewed venues will have empty
rating/reviewCountfields.
Related directory and local-business scrapers
- Hochzeitslocation.de Scraper — German wedding venue directory, same local-business shape
- Trouwen.nl Scraper — Dutch wedding venue and vendor directory
- Resto.be Scraper — restaurant directory scraping
- Doctoralia Spain Scraper — appointment-booking marketplace, same booking-platform data shape
Your feedback
Want a specific city bundled by default, full treatment-menu extraction, or opening-hours data? Open an issue on GitHub or contact us through the Apify platform. We prioritise improvements based on user demand.