Treatwell Search Scraper
Pricing
from $0.04 / 1,000 treatwell venue listings
Treatwell Search Scraper
๐ Extract Treatwell salon and spa listings with addresses, ratings, visible prices, discounts, images, and profile URLs from search pages.
Pricing
from $0.04 / 1,000 treatwell venue listings
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract salon and spa listings from public Treatwell search, category, treatment, and location pages.
Use this actor to turn Treatwell browse pages into a clean dataset of venues, ratings, addresses, visible service prices, discounts, images, and profile URLs.
What does Treatwell Search Scraper do?
Treatwell Search Scraper reads public Treatwell search pages and saves one structured record per venue listing.
It is designed for search and category URLs such as London haircuts, Manchester massages, nail salons, spa treatments, and other public Treatwell browse pages.
The actor follows Treatwell pagination and stops when your maximum item limit is reached.
Who is it for?
Local-services lead generation teams
Find salons, spas, barbers, nail studios, and beauty venues in a target city or neighbourhood.
Beauty brands and suppliers
Build lists of venues that may be relevant for outreach, sampling, partnership, or distribution.
Market analysts
Monitor how many venues appear in a treatment category and compare visible pricing across cities.
Salon operators
Track competitor ratings, review counts, and listed prices in your local area.
Agencies and data teams
Schedule recurring runs and export Treatwell venue data to CRM, BI, or spreadsheet workflows.
Why use this actor?
- ๐ Extracts public Treatwell venue listings at scale.
- ๐ Captures address, locality, region, postcode, and country fields.
- โญ Includes ratings and review counts when Treatwell exposes them.
- ๐ท Saves visible service prices, minimum price, maximum price, and discount labels.
- ๐ผ๏ธ Collects venue image URLs from Treatwell search pages.
- ๐ Includes venue profile URLs and source search URLs.
- โก Uses HTTP and Cheerio, so it is lightweight and fast.
- ๐งพ Outputs a clean Apify dataset ready for export.
What data can you extract?
| Field | Description |
|---|---|
venueName | Treatwell venue name |
venueUrl | Public Treatwell venue profile URL |
venueId | Treatwell listing ID when exposed |
position | Position on the current search page |
searchUrl | Original input URL |
pageUrl | Paginated page that produced the venue |
address | Combined address string |
streetAddress | Street address |
locality | Locality or city field |
region | Region field when available |
postalCode | Postcode |
country | Country code |
rating | Average rating |
reviewCount | Number of reviews |
serviceCount | Number of services visible in the listing telemetry |
displayedPrices | Visible service prices from the search page |
discountTypes | Discount labels such as from, offpeak, or sale_price |
minPrice | Minimum visible price |
maxPrice | Maximum visible price |
imageUrl | Main image URL |
imageUrls | All exposed image URLs |
scrapedAt | ISO timestamp |
How much does it cost to scrape Treatwell listings?
This actor uses pay-per-event pricing.
You pay a small start fee plus a per-result fee for each Treatwell venue listing saved to the dataset.
The exact price is shown in the Apify Store pricing table before you run the actor.
Because the actor uses direct HTTP by default, normal runs avoid expensive browser automation and proxy bandwidth.
How to use Treatwell Search Scraper
- Open the actor on Apify.
- Paste one or more public Treatwell search, category, treatment, or location URLs.
- Set
maxItemsto the number of venues you want. - Keep
followPaginationenabled if you want more than one page. - Run the actor.
- Export the dataset as JSON, CSV, Excel, XML, or via API.
Example Treatwell URLs
Use URLs like these:
https://www.treatwell.co.uk/places/treatment-ladies-haircuts-1/offer-type-local/in-london-uk/https://www.treatwell.co.uk/places/treatment-massage/offer-type-local/in-manchester-uk/https://www.treatwell.co.uk/places/treatment-manicure/offer-type-local/in-london-uk/
Treatwell may redirect URLs to canonical versions. The actor records the final page URL in pageUrl.
Input configuration
startUrls
Public Treatwell browse URLs to scrape.
The actor accepts normal search URLs and already-paginated URLs such as /page-2/.
maxItems
Maximum number of unique venue listings to save across all input URLs.
Use a small value for testing and a larger value for recurring collection.
followPagination
When enabled, the actor follows Treatwell rel="next" links until it reaches maxItems.
proxyConfiguration
Optional Apify Proxy settings.
Direct HTTP works for typical public Treatwell pages, so leave proxy disabled unless your environment is blocked.
Example input
{"startUrls": [{ "url": "https://www.treatwell.co.uk/places/treatment-ladies-haircuts-1/offer-type-local/in-london-uk/" }],"maxItems": 100,"followPagination": true,"proxyConfiguration": { "useApifyProxy": false }}
Example output
{"venueName": "Fringe","venueUrl": "https://www.treatwell.co.uk/place/fringe-1/","venueId": 529948,"position": 1,"searchUrl": "https://www.treatwell.co.uk/places/treatment-ladies-haircuts-1/offer-type-local/in-london-uk/","pageUrl": "https://www.treatwell.co.uk/places/treatment-ladies-haircuts-1/offer-type-local/in-london-uk/","address": "4 Market Place, London, NW11 6JG, GB","rating": 5,"reviewCount": 32,"displayedPrices": [45, 50, 25],"minPrice": 25,"maxPrice": 50,"imageUrl": "https://cdn1.treatwell.net/images/view/example/","scrapedAt": "2026-07-07T00:00:00.000Z"}
Tips for best results
- Start with a Treatwell category page that already shows the venue type you need.
- Set
maxItemshigh enough to cover all paginated pages in your area. - Use separate runs for different treatments or cities if you want clean segmentation.
- Keep the original
searchUrlcolumn when joining results back to campaigns. - Schedule recurring runs to monitor price and rating changes over time.
Lead generation workflow
- Run the actor for a city and treatment category.
- Export venues with high review counts or specific postcodes.
- Enrich the venue URLs or addresses with your CRM workflow.
- Segment leads by price range, rating, or locality.
- Repeat weekly or monthly for new opportunities.
Competitive pricing workflow
Use displayedPrices, minPrice, and maxPrice to compare visible Treatwell pricing.
For example, a salon operator can monitor haircut pricing in nearby neighbourhoods and identify venues advertising discounts.
Market monitoring workflow
Run the same URLs on a schedule.
Compare review counts, new venue URLs, removed venue URLs, and visible price ranges over time.
This is useful for local market maps and category growth tracking.
Integrations
Connect the dataset to:
- Google Sheets for sales lists.
- Airtable for lead management.
- HubSpot or Salesforce via Apify integrations.
- BigQuery or Snowflake for market analytics.
- Slack alerts when new venues appear.
- Make or Zapier for automated follow-up workflows.
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/treatwell-search-scraper').call({startUrls: [{ url: 'https://www.treatwell.co.uk/places/treatment-ladies-haircuts-1/offer-type-local/in-london-uk/' }],maxItems: 100,followPagination: true});console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/treatwell-search-scraper').call(run_input={'startUrls': [{'url': 'https://www.treatwell.co.uk/places/treatment-ladies-haircuts-1/offer-type-local/in-london-uk/'}],'maxItems': 100,'followPagination': True,})print(run['defaultDatasetId'])
cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~treatwell-search-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://www.treatwell.co.uk/places/treatment-ladies-haircuts-1/offer-type-local/in-london-uk/"}],"maxItems":100,"followPagination":true}'
MCP usage
Use the actor from Apify MCP with Claude Code or Claude Desktop.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/treatwell-search-scraper
Add it in Claude Code:
$claude mcp add apify-treatwell "https://mcp.apify.com/?tools=automation-lab/treatwell-search-scraper"
Claude Desktop JSON configuration:
{"mcpServers": {"apify-treatwell": {"url": "https://mcp.apify.com/?tools=automation-lab/treatwell-search-scraper"}}}
Example prompts:
- "Scrape 100 Treatwell haircut venues in London and summarize the price range."
- "Find Treatwell spa venues in Manchester and export the dataset as CSV."
- "Monitor this Treatwell category page weekly and list new venue URLs."
Data quality notes
The actor extracts data that Treatwell exposes in public search HTML.
Some pages may show fewer prices or discounts than full venue profile pages.
Address formatting can vary by venue and country.
Ratings and review counts are saved only when Treatwell exposes them on the page.
Limitations
This actor does not log in, book appointments, bypass paywalls, or access private Treatwell account data.
It does not scrape customer review text in the MVP.
It does not fetch every venue detail page by default, which keeps runs faster and cheaper.
Legality
This actor extracts publicly available information from Treatwell pages.
You are responsible for ensuring your use case complies with applicable laws, Treatwell terms, privacy rules, and data protection obligations.
Do not use scraped data for spam, harassment, or unlawful profiling.
FAQ
Does this actor scrape Treatwell reviews?
No. The MVP captures review counts and ratings from search pages, not full review text.
Can I scrape multiple Treatwell cities in one run?
Yes. Add multiple Treatwell search URLs to startUrls and set maxItems high enough for the combined run.
Troubleshooting
The run returned fewer items than expected
Check whether the Treatwell URL has enough pages and whether maxItems is high enough.
Some locations or treatments have fewer venues than broad categories.
A field is missing for some venues
Treatwell does not expose every field for every venue on search pages.
Missing optional fields are omitted rather than filled with fake values.
The page is blocked in my environment
Enable Apify Proxy in the advanced input settings and try again.
The actor is designed to work without proxy for normal public pages, but some networks may be blocked.
Related scrapers
Explore other Automation Lab actors on Apify:
- https://apify.com/automation-lab/google-maps-lead-finder
- https://apify.com/automation-lab/fresha-salon-scraper
- https://apify.com/automation-lab/booking-com-scraper
- https://apify.com/automation-lab/yelp-business-scraper
Changelog
0.1
Initial version: Treatwell search pagination, JSON-LD venue extraction, ratings, addresses, images, and visible price telemetry.
Support
If a Treatwell page stops working or you need additional fields, open an Apify issue with the input URL and run ID.
Summary
Treatwell Search Scraper is a lightweight extractor for public Treatwell salon and spa search pages.
It helps sales, research, and market-monitoring teams collect clean local beauty venue data with low operating cost.