Fresha.com Scraper - Salon & Spa Data Extractor
Pricing
from $0.35 / 1,000 results
Fresha.com Scraper - Salon & Spa Data Extractor
Extract salon, spa & beauty business data from Fresha.com. Scrape services with prices, reviews, team members, ratings, and operating hours. Search by city or neighborhood worldwide (Dubai, London, NYC, etc.). Perfect for market research, lead generation, price comparison, and chatbot integration.
Pricing
from $0.35 / 1,000 results
Rating
0.0
(0)
Developer

Malik Mazhar Ali
Actor stats
0
Bookmarked
7
Total users
3
Monthly active users
14 days ago
Last modified
Categories
Share
Fresha Scraper - Salon & Spa Data Extractor
Extract salon, spa, and beauty service data from Fresha.com - the world's largest booking platform for beauty and wellness services.
This Actor supports two powerful modes for different use cases:
What Data Can You Extract?
| Data Type | Venue Mode | Search Mode |
|---|---|---|
| Business name & details | ✅ | ✅ |
| Services with prices | ✅ (full list) | ❌ |
| Operating hours | ✅ | ❌ |
| Team members & ratings | ✅ | ❌ |
| Customer reviews | ✅ | ❌ |
| Overall rating | ✅ | ✅ |
| Review count | ✅ | ✅ |
| Location/address | ✅ | ✅ |
| Direct booking URL | ✅ | ✅ |
| Packages & offers | ✅ | ❌ |
Mode 1: Venue Scraping (Specific Business)
Best for: Getting complete details about specific salons you already know.
Scrape detailed information from specific Fresha venue pages including all services, prices, team members, reviews, and operating hours.
Example Input
{"mode": "venue","venueUrls": ["https://www.fresha.com/a/sofitel-spa-dubai-downtown-dubai-sofitel-dubai-downtown-sheikh-zayed-rd-downtown-dubai-4s5674wx","https://www.fresha.com/a/jalal-hafed-gents-salon-dubai-building-6-al-raya-street-city-walk-dubai-z0atp2ev"],"outputFormat": "full","includeReviews": true,"includeTeam": true,"maxReviews": 10}
Example Output (Full Format)
{"venueName": "Sofitel Spa Dubai Downtown","url": "https://www.fresha.com/a/sofitel-spa-dubai-downtown...","description": "Experience luxury wellness at Sofitel Spa...","phone": "+971 4 503 6666","rating": 4.9,"reviewsCount": 1156,"currency": "AED","priceMin": 150,"priceMax": 2500,"serviceCount": 47,"hours": {"Monday": ["10:00 AM - 10:00 PM"],"Tuesday": ["10:00 AM - 10:00 PM"]},"categories": [{"name": "Massage","services": [{"name": "Swedish Massage","price": "AED 450","duration": "1 hr","priceValue": 450},{"name": "Deep Tissue Massage","price": "AED 550","duration": "1 hr","priceValue": 550}]},{"name": "Facial Treatments","services": [...]}],"packages": [{"name": "Couples Retreat","price": "AED 1200","discount": { "description": "Save 20%", "value": 300 },"includes": ["Couples Massage", "Facial", "Spa Access"]}],"team": [{"name": "Maria","role": "Spa Therapist","rating": 4.9}],"reviews": [{"rating": 5,"comment": "Amazing spa experience, highly recommend!","author": "Ahmed","date": "Jan 15, 2026"}]}
Output Formats
| Format | Description | Best For |
|---|---|---|
full | All venue data including raw fields | Data analysis, backup |
services_only | Just services and prices | Price comparison |
chatbot_optimized | Compact format for AI processing | WhatsApp bots, n8n chatbots |
Mode 2: Search (By Location)
Best for: Discovering salons in a location - either by category or across all categories.
Search for salons and spas by location. Select a specific category or choose "All Categories" for maximum discovery.
Option A: Search Specific Category
{"mode": "search","searchLocation": "Dubai, UAE","serviceCategory": "spa","maxSearchResults": 50}
Output:
{"searchQuery": {"location": "Dubai, UAE","serviceCategory": "spa","totalFound": 156,"resultsReturned": 6},"venues": [{"name": "Sofitel Spa Dubai Downtown","slug": "sofitel-spa-dubai-downtown-dubai-sofitel-dubai-downtown-sheikh-zayed-rd-downtown-dubai-4s5674wx","url": "https://www.fresha.com/a/sofitel-spa-dubai-downtown...","rating": 4.9,"reviewsCount": 1156,"location": "Downtown Dubai, Dubai"}],"scrapedAt": "2026-01-23T08:01:20.527Z"}
Option B: Search All Categories (Maximum Discovery)
Select "All Categories" in the dropdown (or leave empty) to automatically search all 10 service categories with automatic deduplication.
{"mode": "search","searchLocation": "Dubai, UAE","serviceCategory": "","maxSearchResults": 100}
Output:
{"searchQuery": {"location": "Dubai, UAE","mode": "multi-category","categoriesSearched": 10,"totalUniqueFound": 24,"resultsReturned": 24},"categoryBreakdown": {"spa": { "found": 6, "new": 6 },"hair-salon": { "found": 6, "new": 4 },"barbershop": { "found": 4, "new": 3 },"nail-salon": { "found": 5, "new": 2 },"beauty-salon": { "found": 6, "new": 3 },"massage": { "found": 4, "new": 1 },"skin-care": { "found": 5, "new": 2 },"brows-lashes": { "found": 6, "new": 2 },"makeup": { "found": 4, "new": 1 },"waxing": { "found": 5, "new": 0 }},"venues": [{"name": "Sensasia Emirates Golf Club","slug": "sensasia-emirates-golf-club-dubai-...","url": "https://www.fresha.com/a/sensasia-emirates-golf-club-dubai-...","rating": 4.9,"reviewsCount": 2017,"discoveredInCategory": "spa"}],"scrapedAt": "2026-01-23T08:30:00.000Z"}
Search Mode Comparison
| Category Selection | Unique Venues | Time | Best For |
|---|---|---|---|
| Specific category | 4-10 | ~30 sec | Quick category lookup |
| All Categories | 15-40+ | ~5 min | Comprehensive discovery |
⚠️ Important: Search Modes Return Featured Venues
Fresha's search page uses a map-centric design:
- The "X venues nearby" count refers to map markers, not a scrollable list
- The list view only shows 6-10 featured/promoted venues per category
- Selecting "All Categories" maximizes discovery by searching all 10 categories
This is a Fresha platform limitation, not a scraper limitation.
Recommended Workflow for Full Data
// Step 1: Discover venues with "All Categories" search{ "mode": "search", "searchLocation": "Dubai, UAE", "serviceCategory": "" }// Step 2: Scrape full details for discovered venues{"mode": "venue","venueUrls": ["https://www.fresha.com/a/sensasia-emirates-golf-club-dubai-...","https://www.fresha.com/a/curve-beauty-salon-dubai-..."]}
Available Service Categories
hair-salon- Hair salonsbarbershop- Barbershopsnail-salon- Nail salonsspa- Spasbeauty-salon- Beauty salonsmassage- Massage therapyskin-care- Skin carebrows-lashes- Brows & lashesmakeup- Makeup serviceswaxing- Waxing services
Supported Locations (Optimized)
The scraper includes GPS coordinates for accurate results in:
- UAE: Dubai, Abu Dhabi
- Saudi Arabia: Riyadh, Jeddah
- Qatar: Doha
- Kuwait: Kuwait City
- Bahrain: Manama
- Oman: Muscat
Other locations work but may have less accurate results depending on proxy IP.
Input Parameters Reference
Common Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | venue | Scraping mode: venue (specific business) or search (by location) |
webhookUrl | string | - | URL to POST results after scraping |
proxyConfiguration | object | Auto | Proxy settings (not required for Fresha) |
Venue Mode Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
venueUrls | array | - | List of Fresha venue URLs |
venueSlug | string | - | Single venue slug (alternative) |
includeReviews | boolean | true | Include customer reviews |
includeTeam | boolean | true | Include team members |
maxReviews | integer | 10 | Max reviews to include |
outputFormat | string | full | Output format |
Search Mode Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchLocation | string | - | Location to search (required) |
serviceCategory | string | "" | Category: empty for all categories (30-60+ venues), or specific category |
maxSearchResults | integer | 50 | Max venues to return |
Integration with n8n
This Actor is designed for seamless integration with n8n workflows.
Option 1: Using Official Apify Node (Recommended)
-
Install the Apify node in n8n (if not already installed)
-
Create Apify API Token:
- Go to Apify Console → Settings → API & Integrations
- Create a new API token and copy it
-
Configure n8n Apify Node:
For Venue Mode:
Node: ApifyOperation: Run ActorActor ID: malikgen/fresha-scraperInput Body:{"mode": "venue","venueUrls": ["https://www.fresha.com/a/sofitel-spa-dubai-downtown-dubai-sofitel-dubai-downtown-sheikh-zayed-rd-downtown-dubai-4s5674wx"],"outputFormat": "chatbot_optimized","includeReviews": true,"maxReviews": 5}For Search Mode:
Node: ApifyOperation: Run ActorActor ID: malikgen/fresha-scraperInput Body:{"mode": "search","searchLocation": "Dubai, UAE","serviceCategory": "spa","maxSearchResults": 20} -
Get Results:
- Add another Apify node with Operation: "Get Dataset Items"
- Connect it to get the scraped data
Option 2: Using HTTP Request Node
If you prefer not to use the Apify node, you can use HTTP requests:
-
Start the Actor Run:
Node: HTTP RequestMethod: POSTURL: https://api.apify.com/v2/acts/malikgen~fresha-scraper/runs?token=YOUR_API_TOKENBody Type: JSONBody:{"mode": "venue","venueUrls": ["https://www.fresha.com/a/sofitel-spa-dubai-downtown-dubai-sofitel-dubai-downtown-sheikh-zayed-rd-downtown-dubai-4s5674wx"],"outputFormat": "chatbot_optimized"} -
Wait for Completion (add Wait node):
- Add a Wait node: 30-60 seconds for venue mode, 2-3 minutes for search mode
-
Get Results:
Node: HTTP RequestMethod: GETURL: https://api.apify.com/v2/acts/malikgen~fresha-scraper/runs/last/dataset/items?token=YOUR_API_TOKEN
Option 3: Using Webhooks (Real-time)
Configure the Actor to POST results directly to your n8n webhook:
-
Create n8n Webhook:
- Add a Webhook node in n8n
- Copy the webhook URL
-
Run Actor with Webhook:
{"mode": "venue","venueUrls": ["https://www.fresha.com/a/sofitel-spa-dubai-downtown-dubai-sofitel-dubai-downtown-sheikh-zayed-rd-downtown-dubai-4s5674wx"],"webhookUrl": "https://your-n8n-instance.com/webhook/fresha-results"} -
Webhook Payload Structure:
{"source": "fresha-scraper","timestamp": "2026-01-23T12:00:00Z","data": { /* scraped venue or search data */ }}
Complete n8n Workflow Example: WhatsApp Salon Assistant
[WhatsApp Trigger]→ [Check if cached data < 1 hour]→ [If stale: Run Fresha Scraper]→ [OpenAI: Process data and user query]→ [Send WhatsApp response with service info]
Workflow Steps:
-
WhatsApp Trigger: Receives user message like "What massage services does Sofitel Spa offer?"
-
Check Cache: Query your database/Redis for recent data
-
Run Scraper (if needed):
- Use Apify node with
chatbot_optimizedformat - This format is compact and AI-friendly
- Use Apify node with
-
AI Processing:
- Send scraped data + user question to OpenAI/Claude
- Get formatted response
-
Send Reply: Return service info to WhatsApp
Technical Details
Performance
- Venue mode: ~2-5 seconds per venue (HTTP-only, fast)
- Search mode: ~30-90 seconds (browser-based, handles JavaScript)
Proxy Recommendations
⚡ GOOD NEWS: No proxy is required! Fresha.com works perfectly without any proxy configuration.
Our testing shows:
| Proxy Type | Duration | Cost | Recommendation |
|---|---|---|---|
| No Proxy | ~25s | $0.004 | ✅ BEST - Use this! |
| Datacenter | ~72s | $0.012 | Works but slower |
| Residential | ~119s | $0.042 | Not needed, expensive |
Bottom line: Leave proxy configuration empty/disabled for the best performance and lowest cost. Fresha.com does not have aggressive anti-bot measures.
Rate Limiting
The Actor includes built-in delays and respects Fresha's servers with reasonable request rates.
Use Cases
- Price Comparison: Compare service prices across multiple salons
- Market Research: Analyze salon ratings and reviews in a region
- Chatbot Integration: Power WhatsApp/Telegram bots with real salon data
- Lead Generation: Find salons for B2B outreach
- Competitive Analysis: Monitor competitor pricing and services
- Booking Aggregator: Build salon discovery platforms
Support & Resources
- Issues: Report bugs on GitHub
- API Documentation: Apify API Reference
- n8n Integration: Apify n8n Docs
Changelog
v0.1.20 (Current)
- SIMPLIFIED: Merged 3 modes into 2 modes for cleaner UX
venue- Scrape specific business (unchanged)search- Search by location (now includes "All Categories" option)
- IMPROVED: Category dropdown now clearly shows "All Categories (searches all 10, discovers 30-60+ venues)"
- UPDATED: Venue URL placeholder uses Dubai salon example
- REMOVED: search-all mode (legacy support maintained for backward compatibility)
- Categories are based on Fresha.com's official URL parameters
v0.1.18
- FIXED: Search mode now collects 90+ venues instead of only 4-6
- Implemented incremental scroll-and-collect strategy to handle DOM virtualization
- Confirmed: No proxy required - Fresha works perfectly without proxy (fastest & cheapest)
- Added memory limits (512MB min, 2GB max) for cost optimization
v0.1.17
- NEW: Search-All Mode - Multi-category search for maximum venue discovery
- Automatically searches all 10 service categories and deduplicates results
- Discovers 15-40+ unique venues instead of 4-10 per single search
- Added category breakdown in output showing discovery stats
v0.1.16
- Updated examples to use Dubai, UAE
- Improved documentation for search mode limitations
- Added two-step discovery workflow guide
v0.1.14
- Improved location extraction accuracy
- Better handling of Arabic text
- Enhanced error handling for search mode
- Comprehensive n8n integration documentation
v0.1.0
- Added search mode with PlaywrightCrawler
- Dual-mode architecture (venue + search)
- GCC region geolocation support
- Webhook integration for n8n
v0.0.1
- Initial release
- Venue scraping with CheerioCrawler
- Multiple output formats