SYSTEM all green source fresha.com queue 18,392 pages p99 latency 184ms dataflirt.com · scraper/fresha-com
RUN · 41 active pipelines · fresha.com live

Fresha directory data,
at warehouse scale.

We extract salon profiles, service menus, pricing, staff lists, and reviews from Fresha. Delivered as clean JSON, CSV, or Parquet to S3, BigQuery, or Snowflake on your cadence.

Venues extracted
112K /run
Service menus
840K /run
Review records
3.2M /month
Active pipelines
41
Uptime
99.98%
Data Dictionary

Every field we extract from fresha.com

Structured, schema-consistent data across all major object types — delivered clean, typed, and ready to query.

Complete list of extractable fields for Venue Profiles objects from fresha.com. All fields typed and schema-versioned.

venue_idnametypeaddresscitycountrylatitudelongituderatingreview_countphonewebsiteabout_textopening_hours
venue_profiles
● 200 OK
"venue_id": "849201",
"name": "Lumiere Beauty Lounge",
"type": "Beauty Salon",
"city": "London",
"rating": 4.9,
"review_count": 842,
"latitude": 51.5074,
"longitude": -0.1278
# venue_idnametypeaddresscitycountry
1
2
3

Complete list of extractable fields for Service Menus objects from fresha.com. All fields typed and schema-versioned.

service_idvenue_idcategoryservice_namedescriptionduration_minutespricecurrencydiscount_pricestaff_assignedbooking_link
service_menus
● 200 OK
"service_id": "svc_94812",
"venue_id": "849201",
"category": "Hair Styling",
"service_name": "Balayage & Blow Dry",
"duration_minutes": 180,
"price": 145.0,
"currency": "GBP",
"discount_price": "None"
# service_idvenue_idcategoryservice_namedescriptionduration_minutes
1
2
3

Complete list of extractable fields for Staff Directories objects from fresha.com. All fields typed and schema-versioned.

staff_idvenue_idnameroleratingreview_countservices_offeredprofile_imagebooking_availabilitybio
staff_directories
● 200 OK
"staff_id": "stf_4920",
"venue_id": "849201",
"name": "Sarah Jenkins",
"role": "Senior Stylist",
"rating": 5.0,
"review_count": 156,
"services_offered": "['Hair Styling', 'Colouring']"
# staff_idvenue_idnameroleratingreview_count
1
2
3

Complete list of extractable fields for Reviews & Ratings objects from fresha.com. All fields typed and schema-versioned.

review_idvenue_idreviewer_nameratingreview_textdate_postedservice_receivedstaff_membervenue_replyreply_date
reviews_& ratings
● 200 OK
"review_id": "rev_849201a",
"venue_id": "849201",
"reviewer_name": "Emma W.",
"rating": 5,
"review_text": "Best balayage in the city. Sarah was brilliant.",
"date_posted": "2026-03-14",
"service_received": "Balayage & Blow Dry",
"staff_member": "Sarah Jenkins"
# review_idvenue_idreviewer_nameratingreview_textdate_posted
1
2
3

Complete list of extractable fields for Search Results objects from fresha.com. All fields typed and schema-versioned.

keywordlocationpositionvenue_idnametyperatingreview_countdistancesponsoredtop_rated_badgescraped_at
search_results
● 200 OK
"keyword": "hair salon",
"location": "Manchester",
"position": 3,
"venue_id": "92810",
"name": "Northern Quarter Cuts",
"rating": 4.8,
"top_rated_badge": true,
"scraped_at": "2026-05-18T10:22:00Z"
# keywordlocationpositionvenue_idnametype
1
2
3

Capabilities

Extract the entire beauty and wellness ecosystem

Our Fresha scraper targets deep directory layers: venue profiles, granular service menus, staff listings, and customer reviews — handling dynamic pagination and map-based search results automatically.

Venue Profile Extraction

Capture business name, address, coordinates, aggregate ratings, about text, and operating hours across multiple cities and categories.

Service Menu & Pricing

Extract complete treatment menus including service names, descriptions, duration, standard pricing, and discounted rates.

Staff Directory Mining

Compile lists of practitioners, their roles, individual ratings, and the specific services they are qualified to perform.

Review Corpus Capture

Extract full text reviews, star ratings, service context, staff attribution, and venue replies across all historical data.

Map-Based Search Scraping

Iterate through geographic coordinates and bounding boxes to ensure complete coverage of venues in a target region.

Category & Tag Mapping

Normalise venue classifications (e.g., Hair Salon, Spa, Nail Bar) and extract specific amenities or tags.

Badge & Status Tracking

Identify 'Top Rated' venues and sponsored listings within search results to analyse platform visibility.

Multi-Region Support

Scrape directories across the UK, US, Australia, and Europe with accurate currency and timezone mapping.

Delta Updates

Run continuous pipelines that only emit records when a venue changes its pricing, adds new services, or receives new reviews.

// engagement pipeline

From target regions to warehouse records

Brief in. Clean data out.

Define Scope
d 0

Provide target cities, categories, or specific venue URLs. We design the extraction schema together.

Pipeline Build
d 2–4

We configure Scrapy / Playwright crawlers, proxy rotation, and geographic bounding box iteration for Fresha.

Validation & QA
d 4–6

Schema validation, null-rate checks, and location deduplication before full launch.

Delivery
ongoing

JSON / CSV / Parquet pushed to your S3 bucket, BigQuery dataset, or Snowflake stage on agreed cadence.

Under the hood

How our Fresha pipeline handles the hard parts

Directory scraping requires bypassing location-based rate limits and rendering single-page applications. Here is how we maintain pipeline stability.

pipeline-monitor · fresha.com · live ● active
// fingerprinting
Identity rotation
TLS fingerprintrandomised
User-agentrotated
IP poolresidential
Challenges blocked0
// pagination
Page coverage
48,291 pages queued running
// observability
Pipeline health
99.9%
uptime
142ms
p99 lat
0.3%
null rate
2
alerts
Dynamic rendering
Full Playwright execution for SPA content

Fresha's interface relies heavily on client-side rendering. We run full Playwright browser sessions to hydrate service menus, trigger lazy-loaded reviews, and expose complete staff directories that static requests miss.

Geographic pagination
Bounding box iteration for complete coverage

Standard search pagination limits results to top venues. We use programmatic coordinate grids (bounding boxes) to systematically scan cities block by block, ensuring 100% extraction of smaller, unranked salons.

Anti-bot layer
Residential proxy rotation + fingerprint spoofing

Frequent requests to directory endpoints trigger rate limits. Our crawlers use residential ISP proxies with realistic browser fingerprints and randomised request timing to distribute load across target regions.

Schema stability
Resilient selectors with fallback chains

Platform updates frequently alter DOM structures. Our selector strategy uses multiple fallback chains — CSS selectors, XPath, and JSON payload interception — so layout changes do not break your data pipeline.

Change detection
Only re-scrape what's changed

For large directory catalogues, we maintain a hash index of last-seen values. Subsequent runs only push diffs — reducing compute cost and downstream processing load when tracking price changes.

Applications

Who uses Fresha data — and how

Teams across industries use fresha.com data to build competitive products and smarter operations.

01
B2B Lead Generation

Software vendors and suppliers extract verified salon contact details, operating status, and staff counts to build targeted sales lists.

02
Market Pricing Analysis

Franchises and independent salons track competitor service menus to optimise their own pricing strategies and treatment durations.

03
Beauty Trend Forecasting

Brands analyse the frequency of specific treatments (e.g., balayage vs highlights) across regions to predict product demand.

04
Aggregator Platforms

Local discovery apps ingest venue profiles, ratings, and operating hours to enrich their own directory offerings.

05
Local SEO & Reputation Management

Agencies monitor review velocity and aggregate ratings across thousands of venues to report on client performance vs competitors.

06
Investment Due Diligence

PE firms evaluate regional market saturation, average service prices, and review sentiment before acquiring salon chains.

Why DataFlirt

"Fresha contains the most comprehensive pricing and service menu dataset for the global beauty and wellness industry — but accessing it requires navigating heavy map-based pagination and dynamic rendering."

Extracting local business directories at scale requires bypassing location-based rate limits and rendering single-page applications. DataFlirt handles the proxy rotation, JavaScript execution, and schema maintenance so your data engineering team receives normalised, query-ready records.

Technical Spec

Fresha scraper — technical capabilities

Everything supported by our fresha.com scraper — rendered SPA elements, auth walls, rate-limit evasion and beyond.

JavaScript rendering
Full Playwright sessions — required for service menus and staff lists
Supported
Residential proxy rotation
ISP-grade residential IPs routed to match target search region
Supported
Bounding box search
Coordinate-based iteration to bypass 50-page search limits
Supported
Service menu extraction
Full hierarchical extraction of categories, treatments, and pricing
Supported
Review pagination
Extraction of all historical reviews per venue
Supported
Change detection (diffs)
Hash-based diff: only emit records with changed fields since last run
Supported
Webhook delivery
HTTP POST per record or batch for downstream integration
Supported
Real-time booking availability
Requires navigating complex calendar state and session tokens
Partial
Private user booking history
Gated data requires authenticated user credentials
Partial
Private staff schedules
Internal calendar data not exposed on the public frontend
Partial
Infrastructure

Infrastructure powering the Fresha pipeline

Open-source tooling on proven cloud infra — no vendor lock-in, full observability.

ScrapyPlaywrightPython 3.12RedisPostgreSQLApache AirflowAWS LambdaS3CloudWatch2CaptchaCapSolverResidential ProxiesDockerKubernetesGrafanaPrometheusPostGIS
Scrapy + Playwright Stack

Scrapy handles crawl orchestration, geographic grid iteration, and retry logic. Playwright handles JavaScript rendering for single-page application hydration.

Residential Proxy Infrastructure

We maintain pools of residential ISP proxies across target regions. Rotation happens per-request to bypass location-based rate limits and IP bans.

Cloud-Native Orchestration

Pipelines run on AWS Lambda and ECS. Airflow handles scheduling, dependency management, and SLA alerting. All state stored in managed Postgres.

Output & Delivery

Your data, your destination

Data delivered to where your team already works — no new tooling required.

JSON
Newline-delimited or nested — schema versioned per run
CSV
Flat file with typed columns — ready for ingestion
XLS
Formatted spreadsheet for business analysts
Parquet
Columnar format for BigQuery, Snowflake, Athena
AWS S3
Direct bucket delivery — compatible with any data lake
Webhook
HTTP POST per record for real-time downstream processing
API
REST endpoint to query your extracted dataset
Postgres
Upsert into your existing schema with conflict resolution
S3
Direct bucket delivery — compatible with any data lake
// faq

Common questions.

About fresha.com scraping, legality, and pipeline operations.

Ask us directly →
Is scraping Fresha legal?

Scraping publicly available directory information is generally permissible under applicable law. DataFlirt targets only public, non-authenticated venue profiles, service menus, and reviews. We do not extract personal user data or circumvent authentication walls.

How do you handle Fresha's map-based search limits?

Standard search results often cap at a certain number of venues. We use coordinate bounding boxes to divide a city into smaller grids, querying each sector individually to guarantee 100% extraction of all listed salons.

Can you extract full service menus and prices?

Yes. We extract the complete hierarchy of service categories, individual treatments, durations, standard prices, and any listed discounts or staff-specific pricing variations.

Do you scrape staff directories?

Yes. We capture staff names, roles, aggregate ratings, and the specific services each practitioner is qualified to perform, as listed on the venue profile.

How fresh is the data?

Full city or regional directory refreshes typically complete within a 12-24 hour window depending on scale. We can configure delta pipelines to run weekly or monthly to capture new venues and price changes.

Can you track price changes over time?

Yes. Every pipeline run produces timestamped records. We maintain a history of service prices, allowing you to track inflation or promotional pricing trends across specific venues or regions.

What is the minimum viable engagement?

Our smallest packages start at a defined regional extraction (e.g., all venues in London or New York) with monthly delivery. For national or global coverage, we price based on volume and delivery frequency.

$ dataflirt scope --new-project --source=fresha.com ready

Tell us what
to extract.
We do the rest.

20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need a one-off directory export for a specific city or a continuous price-monitoring feed across national chains — we scope, build, and operate the pipeline. Tell us what you need.

hello@dataflirt.com · Bengaluru · IST · typical reply < 4h
Related Scrapers

More in business directories

Services

Data Extraction for Every Industry

View All Services →