Fresha Scraper — Salon, Spa & Beauty Business Leads avatar

Fresha Scraper — Salon, Spa & Beauty Business Leads

Pricing

from $7.00 / 1,000 venue scrapeds

Go to Apify Store
Fresha Scraper — Salon, Spa & Beauty Business Leads

Fresha Scraper — Salon, Spa & Beauty Business Leads

Scrape Fresha salons, spas, barbers, nail & beauty/wellness businesses by category and city, or from venue URLs. Get name, phone, address, geo, rating & reviews, full service menu with prices, team, hours, amenities and a lead score. Monitoring, no login, no key, no browser.

Pricing

from $7.00 / 1,000 venue scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Share

Fresha Scraper — Salon, Spa & Beauty Business Leads (Phones, Services & Prices)

Extract complete beauty & wellness business data from Fresha — salons, spas, barbershops, nail bars, medspas, massage, tattoo studios, gyms and more. Get the fields lead lists actually need: business name, phone, full address + geo, star rating & review count, the full service menu with prices, team members, opening hours and amenities — plus the venue's own website (for unclaimed listings) and optional email/social enrichment.

No login, no API key, no browser — fast JSON extraction with 99%+ reliability, worldwide.

Why this Fresha scraper?

Most beauty scrapers return a name and an address and stop. This actor reads Fresha's own page data and ships the richest record in the category, across both Fresha venue types:

DataTypical scrapersThis actor
Business name, address, geo (lat/lng)
Phone numberpartial
Star rating + review countpartial
Rating distribution (1–5★ breakdown)
Full service menu with prices & durations
Team members + job titles
Opening hours (per day + schema)
Amenities (pet-friendly, woman-owned, LGBTQ+, …)
Currency, price range, gift cards & memberships
Venue's own website (unclaimed listings)
Contact emails / phones / socials (website crawl)✅ opt-in
Nearby venues (extra discovery)✅ opt-in
Lead score (0–100) per venue
Monitoring — only new venues

It captures both the claimed, bookable venues (/a/) and the unclaimed "lite" listings (/lvp/) — so a single city + category search returns far more businesses than scrapers that see only one type.

Use cases

  • Lead generation — salons, spas and barbershops are high-intent local buyers for booking software, payments, POS, marketing, supplies and insurance. Score them by size and reputation (reviewsCount, serviceCount, teamSize) and reach them by phone, website or enriched contactEmails.
  • Local market & pricing intelligence — compare service menus and prices (services[].price), price ranges and rating distributions across a city or category.
  • Sales territory building — pull every hair salon / nail bar / medspa in a metro with address, geo and phone for route planning and outreach.
  • Competitor & supply monitoring — schedule recurring runs to watch a city/category for newly listed venues with monitoring mode.
  • Aggregators & directories — feed apps and marketplaces with structured beauty/wellness venue data, including services and opening hours.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Fresha Scraper, choose business types and locations (or paste Fresha URLs), and click Start.
  3. Watch venues stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results via the Apify API.

Input

{
"businessTypes": ["hair-salons", "barbershops", "nail-salons"],
"locations": ["New York, US", "London, UK"],
"maxResults": 200,
"includeVenueDetails": true,
"includeServices": true,
"includeReviews": false,
"enrichContactEmails": true,
"monitorMode": false
}
  • businessTypeshair-salons, barbershops, nail-salons, beauty-salons, eyebrows-and-lashes, waxing-salons, aesthetics (medspas), spas, massage, tattoo-and-piercing, gym-and-fitness, personal-trainers, tanning-studios, weight-loss, therapy-centers. Friendly words like barbers, nails, medspa, gym are auto-mapped. Each type is combined with every location.
  • locationsCity, Country (London, UK, Dubai, AE), US City, ST (Austin, TX), an optional neighborhood (New York, US, Manhattan), or a raw Fresha geo slug (us-new-york). For non-US locations use the country name (e.g. Toronto, Canada).
  • startUrls — direct Fresha venue URLs (/a/… or /lvp/…) or category/landing URLs (/lp/en/bt/…).
  • maxResults / maxVenuesPerSearch — global and per-search caps.
  • minRating / withPhoneOnly / freshaVerifiedOnly — filters.
  • includeVenueDetails (default true) — open each venue for phone, services, team, hours, rating distribution and reviews.
  • includeServices (default true) — the categorised service menu with prices, durations and variants.
  • includeReviews (default false) — output review records (type review).
  • includeNearbyVenues (default false) — attach nearby venues found on each page.
  • enrichContactEmails (default false) — when a venue links its own website, crawl it for emails, phones and socials.
  • monitorMode (default false) — emit only venues not seen in previous runs.

Output

One record per venue (type: "venue"), plus optional review records (type: "review"):

{
"type": "venue",
"venueType": "booking",
"venueId": "2908118",
"name": "Forbici London",
"venueUrl": "https://www.fresha.com/a/forbici-london-london-20-montpelier-street-nwlw36bn",
"businessType": "Hair Salon",
"rating": 4.9,
"reviewsCount": 1748,
"ratingDistribution": { "5": 1644, "4": 54, "3": 22, "2": 11, "1": 17 },
"isFreshaVerified": true,
"phone": "+44 7764 821181",
"street": "20 Montpelier Street",
"city": "London",
"area": "Marylebone",
"postalCode": "SW7 1HD",
"country": "gb",
"latitude": 51.52137,
"longitude": -0.15332,
"fullAddress": "20 Montpelier Street, London, England",
"currency": "GBP",
"priceMin": 10,
"priceMax": 330,
"priceRange": "10 - 330 GBP",
"serviceCount": 188,
"serviceCategoryCount": 21,
"services": [
{ "category": "Featured", "items": [
{ "name": "Spray Tan", "price": 35, "currency": "GBP", "formattedPrice": "from £35", "duration": "30 min - 40 min",
"variants": [{ "name": "Full Body Spray Tan", "price": "£45", "duration": "40 min" }] }
] }
],
"teamSize": 4,
"team": [{ "name": "Tyson", "jobTitle": "Director Stylist", "rating": null }],
"amenities": ["Pet-friendly", "Woman-owned", "LGBTQ+"],
"openingHours": { "days": [{ "day": "Monday", "closed": false, "hours": "10:00 AM - 7:00 PM" }], "status": "Open" },
"hasGiftCards": true,
"hasMemberships": true,
"website": null,
"contactEmails": [],
"leadScore": 79,
"searchBusinessType": "hair-salons",
"searchLocation": "London, UK",
"scrapedAt": "2026-06-15T12:00:00.000Z"
}

Unclaimed "lite" venues (venueType: "lite") skip the bookable service menu but add the venue's own website (the best email-enrichment target) plus offeredCategories with treatment names.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

  • Apify API — start runs, fetch datasets, manage schedules over REST.
  • apify-client for JavaScript and Python — official SDKs.
  • Schedules — run it daily/weekly to track new salons & spas in a city or category; perfect for lead pipelines.
  • Webhooks — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/fresha-scraper').call({
businessTypes: ['hair-salons', 'barbershops'],
locations: ['Austin, TX'],
maxResults: 200,
enrichContactEmails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} beauty & wellness venues`);

Monitoring mode

Turn on monitorMode and the actor remembers every venue id it has returned (in a named key-value store) and emits only new venues on the next run. It pairs cleanly with Schedules — the schedule triggers the run; monitoring decides what's new — so you can watch a city/category for newly listed businesses without conflict or duplicates.

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new venue leads straight into your CRM.
  • Slack — get notified when a monitored search finds new venues.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find the top-rated hair salons in Miami with their phone numbers and prices" and let it run this scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete local-business lead-gen stack:

Tips

  • More venues per city: each business-type + city landing returns roughly 40–130 venues. To go deeper, add more business types, target specific neighborhoods (New York, US, Manhattan), or turn on includeNearbyVenues.
  • Best phone coverage: keep includeVenueDetails on — the phone number lives on the venue page, not the listing.
  • Emails: claimed Fresha venues keep customers on-platform (no website), but unclaimed "lite" listings often link their own site — turn on enrichContactEmails to crawl those for emails and socials.
  • Cost control: filter with minRating / withPhoneOnly and cap with maxResults. Detail, reviews and enrichment are all opt-in.

FAQ

How do I scrape salons/spas for a specific city? Put the city in locations (Austin, TX, London, UK, Dubai, AE) and pick businessTypes. Each type pairs with each city.

Which categories are supported? Hair salons, barbershops, nail salons, beauty salons, brows & lashes, waxing, medspas/aesthetics, spas, massage, tattoo & piercing, gyms & fitness, personal trainers, tanning, weight loss and therapy/wellness centers.

Where do phone numbers and emails come from? Phones come from the public Fresha venue page. Emails are never taken from Fresha — with enrichContactEmails on, the actor visits a venue's own linked website (mostly unclaimed listings) and extracts publicly listed contacts.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically every run via the Google Drive integration.

How do I get only new venues over time? Turn on monitorMode and create a Schedule; each run emits only venues not seen before.

A field is null — why? Some venues genuinely don't publish a price, website or reviews (especially unclaimed "lite" listings). Fields are null only when the data doesn't exist, not because the scraper skipped them.

Is scraping Fresha legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for personal data) and Fresha's terms.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.