Salon & Spa Lead Finder - Vagaro, Boulevard, Booksy, Fresha
Pricing
from $4.00 / 1,000 base lead records
Salon & Spa Lead Finder - Vagaro, Boulevard, Booksy, Fresha
Enriched Google Maps leads for US independent hair salons, barbershops, nail salons, day spas, med spas, and lash/brow studios. Detects booking/POS (Vagaro, Boulevard, Booksy, Fresha, GlossGenius, Phorest, Mindbody, Square). Major franchises pre-blocked.
Pricing
from $4.00 / 1,000 base lead records
Rating
0.0
(0)
Developer
Seibs.co
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
4
Monthly active users
8 days ago
Last modified
Categories
Share
Salon & Spa Lead Finder
TL;DR for B2B SaaS, beauty supply, and salon-tech sales reps selling INTO independent salons, spas, barbershops, and nail salons: Pulls US independent salons, spas, barbershops, nail salons, lash studios, and med-spas from Google Maps with detected booking and PMS software (Boulevard, Vagaro, Mindbody, Booker, Square Appointments, Booksy, GlossGenius, Phorest, Mangomint, Fresha). Compared to compass/crawler-google-places, you get vertical booking-software detection plus chains and franchises (Great Clips, Supercuts, Sport Clips, Massage Envy, European Wax Center, Hand and Stone, Drybar, Ulta, Sephora) pre-blocked. Free Apify plan returns about 1,000 leads per month on your $5 platform credit, then demo samples plus an upgrade message. Upgrade to Apify Starter ($49/mo) for unlimited volume.
Run it in 30 seconds
# Via the Apify Python SDKfrom apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("seibs.co/salon-spa-lead-finder").call(run_input={"search_terms": ["hair salon","nail salon"],"locations": ["Los Angeles, CA"],"enrichment_tier": "premium","max_results_per_query": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Or via curl:
curl -X POST "https://api.apify.com/v2/acts/seibs.co~salon-spa-lead-finder/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"search_terms": ["hair salon", "nail salon"], "locations": ["Los Angeles, CA"], "enrichment_tier": "premium", "max_results_per_query": 50}'
Or click "Try for free" on this page if you prefer the no-code UI.
What you get
Each run produces:
- A clean dataset, filterable in the Apify console and downloadable as CSV or JSON
- An OUTPUT.html dashboard preview of your top records
- A sample-output preview at ./.actor/sample-output.json
Per-archetype custom artifacts shipped with this actor:
- top-leads.csv (HubSpot-ready columns, sorted by confidence_score)
- cold-email-templates.html (per-booking-software pitch with copy-to-clipboard buttons)
- stack-breakdown.csv (booking, payments, retail POS per record)
What does Salon & Spa Lead Finder do?
Pulls Google Maps listings for US independent hair salons, barbershops, nail salons, day spas, med spas, and lash/brow studios, then enriches each record with website-derived signals: emails, social profiles, booking and POS platforms (Vagaro, Boulevard, Booksy, Fresha, GlossGenius, Phorest, Mindbody, Square), online booking embeds, owner names, year founded, and certifications. Major franchises are pre-blocked so the dataset stays focused on independent operators.
Features
- Google Maps lead extraction across 8 salon / spa types
- Major franchises pre-blocked
- Three pay-as-you-go enrichment tiers (base, email, premium)
- Booking / POS detection (Vagaro, Boulevard, Booksy, Fresha, GlossGenius, Phorest, Mindbody, Square Appointments)
- Online booking embed detection (Calendly, Acuity, Vagaro, Mindbody, Schedulicity, etc.)
- Role-bucketed emails (sales, support, billing, hr, executive, marketing)
- Owner names, employee count, year founded, certifications
- Schema.org JSON-LD parsing
- Confidence score per record for quality filtering
What you get
Real production output from a sample run on Smooshine (Austin, Texas):
{"name": "Smooshine","service_line": "hair_salon","address": {"city": "Austin","state": "Texas","zip": "78705","lat": 30.2973862,"lng": -97.7417076},"phone": "(512) 585-6919","website": "http://www.smooshine.com/","rating": 4.9,"reviews_count": 666,"enrichment": {"tier": "premium","social": {"instagram": "https://www.instagram.com/mastercam.austin"},"tech_stack": ["fresha","wix","google_tag_manager"],"year_founded": 1999,"homepage_title": "The X Team | Smooshine","homepage_status": 200}}
Preview (real production data)
Single-record snapshot from the same run, rendered as a table:
| Field | Value |
|---|---|
| Name | Smooshine |
| Service line | hair_salon |
| Location | Austin, Texas |
| Phone | (512) 585-6919 |
| Website | http://www.smooshine.com/ |
| Rating | 4.9 (666 reviews) |
| Tech stack detected | fresha, wix, google_tag_manager |
| Year founded | 1999 |
| Social channels |
Pricing â€" Pay Per Event
| Event | Price | When charged |
|---|---|---|
| Base record | $0.004 | Always |
| Email enrichment | + $0.004 | Email scraped from website |
| Premium signals | + $0.007 | Booking/pos (vagaro, boulevard, booksy, fresha, glossgenius, phorest, mindbody) or marketplace presence detected |
Effective: $0.004 base / $0.008 with email / $0.015 fully enriched.
Use cases
Find indie salons in a metro on no detected booking platform â€" that's your no-stack outbound for Vagaro, Boulevard, Booksy. Filter by city + salon type for hyper-targeted lists.
Buyers include: Vagaro, Boulevard, Booksy, Fresha, GlossGenius, Phorest, Mindbody competitors; beauty-PE rollups; product distributors.
FAQ
Q: Is this legal? A: Yes. Every field is sourced from publicly accessible Google Maps listings and public salon / spa websites. No logged-in scraping, no booking-platform back-end access, no data the business did not publish itself.
Q: Why might a run fail or return zero records? A: The most common cause is the Apify free-plan compute / proxy credit ceiling on large premium runs. The actor soft-fails by default â€" it writes whatever was already enriched and exits cleanly rather than throwing. If a paid run errors, check the log for rate-limit or proxy-bandwidth messages.
Q: Why are Sport Clips, Great Clips, Supercuts, Massage Envy etc excluded?
A: We target boutique independents and small chains because that is where the booking, POS, and marketing-SaaS TAM lives. National chains run enterprise contracts at the brand level â€" individual locations cannot adopt Vagaro / Boulevard / Booksy on their own. They are pre-blocked when exclude_chains: true.
Q: How fresh is the data?
A: Live at run time. Google Maps listings reflect the current snapshot; website enrichment reflects the homepage as of scraped_at. No stale cache.
Q: Can I schedule daily or weekly runs? A: Yes. Apify Schedules can run this actor on any cron interval. Pair with a webhook to push only new salons or changed booking platforms into your CRM.
Q: Does it integrate with my CRM? A: Yes â€" via Zapier, Make, n8n, or direct webhook. Records map cleanly into HubSpot, Salesforce, Pipedrive, Clay, Apollo, and Instantly. See Integrations below.
Q: What does it cost in practice? A: $0.004 base, $0.008 with email, $0.015 fully enriched. A statewide independent-salon run typically lands in the $20-50 range.
Related Actors
Pair this actor with adjacent SEIB intelligence for richer beauty / wellness outbound:
- Google Maps Reviews Pro â€" pull review velocity and sentiment to rank salons by growth or churn-risk
- B2B Sales Triggers â€" detect funding, leadership changes, and hiring spikes to time the pitch
Integrations
- Zapier â€" push to HubSpot/Salesforce/Pipedrive/Apollo- Make.com (formerly Integromat) â€" workflow automation- n8n â€" self-hosted automation- Apify webhooks â€" POST to your endpoint- API + dataset export (JSON/CSV/Excel/XML)- MCP / AI agents â€" call from Claude/GPT/LangChain
Salon / spa types covered
hair_salon | barbershop | nail_salon | day_spa | med_spa | lash_brow | tanning_salon | wellness_massage
What this actor does NOT do (v1)
- No SMTP-level email validation
- No phone validation
- No screenshots
- No non-US geographies
- No data the source business didn't make public
Example: 1,000 records across major Texas metros
{"search_terms": ["hair salon"],"locations": ["Austin, TX", "Dallas, TX", "Houston, TX", "San Antonio, TX", "Fort Worth, TX"],"max_results_per_query": 100,"enrichment_tier": "premium","service_lines": [],"exclude_chains": true}
Cost ceiling: 5 cities Ã- 100 = 500 raw records â†' 350 after chain filter â†' at $0.015 fully enriched = **$5-8 for a metro-wide independent salon / spa types list with platform stack mapped**.
Input
Configure the run from the Apify Console form or via the API. Key fields:
| Field | Type | Description |
|---|---|---|
search_terms | array | Google Maps queries, e.g. ["hair salon", "barbershop", "nail salon"] |
locations | array | US locations, e.g. ["Austin, TX", "78701"] |
max_results_per_query | int | Cap per (term * location) tuple, max 500 |
enrichment_tier | string | base, email, or premium |
service_lines | array | Filter to: hair_salon, barbershop, nail_salon, day_spa, med_spa, lash_brow, tanning_salon, wellness_massage |
exclude_chains | boolean | Drop major franchises (Supercuts, Great Clips, etc.) (default true) |
max_concurrent_enrichments | int | Parallel website fetches, default 8 |
Sample input:
{"search_terms": ["hair salon"],"locations": ["Austin, TX"],"max_results_per_query": 25,"enrichment_tier": "premium","service_lines": ["hair_salon"],"exclude_chains": true}
Output
Sample output: ./.actor/sample-output.json â€" copy-paste-ready preview of real-looking records.
First record inline:
{"place_id": "ChIJY2W0UySwQuOsMqKoImGkEiCgAe8","name": "Velvet Petal Salon & Spa","category": "Hair salon","vertical": "salon_spa","service_line": "hair_salon","address": {"street": "6534 Main St","city": "Scottsdale","state": "AZ","zip": "85251","country": "US","lat": 33.5272,"lng": -111.9381},"phone": "(480) 555-1069","phone_e164": "+14805550169","website": "https://velvetpetalsalon.com/","google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJY2W0UySwQuOsMqKoImGkEiCgAe8","rating": 4.9,"reviews_count": 184,"hours": {"mon": "8:00 AM - 6:00 PM","tue": "8:00 AM - 6:00 PM","wed": "8:00 AM - 6:00 PM","thu": "8:00 AM - 6:00 PM","fri": "8:00 AM - 5:00 PM","sat": "Closed","sun": "Closed"},"claimed": true,"scraped_at": "2026-05-10T10:23:10Z","confidence_score": 0.62,"enrichment": {"tier": "premium","emails": ["info@velvetpetalsalon.com","hello@velvetpetalsalon.com"],"social": {"facebook": "https://www.facebook.com/velvetpetalsalon","instagram": "https://www.instagram.com/velvetpetalsalon","linkedin": "https://www.linkedin.com/company/velvetpetalsalon"},"tech_stack": ["vagaro","google_tag_manager","boulevard_studio","stripe"],"license_numbers": ["AZ-100960"],"service_area_mentions": ["Scottsdale","Phoenix","Tempe"],"year_founded": 2014,"fleet_hints": [],"homepage_title": "Velvet Petal Salon & Spa | Scottsdale, AZ","homepage_status": 200,"bbb": {"accredited": true,"rating": "A+"},"open_24_7": false,"licensed_bonded_insured": false,"locations_count": 2,"spanish_speaking": false,"linkedin_company": "https://www.linkedin.com/company/velvetpetalsalon","yelp_url": "https://www.yelp.com/biz/velvetpetalsalon-scottsdale","third_party_reviews": [],"press_mentions": [],"awards": [],"team_size_hints": ["5 team members"],"owner_names": ["Maria Chen"],"employee_count": 8,"role_emails": {"executive": ["mchen@velvetpetalsalon.com"],"billing": ["billing@velvetpetalsalon.com"],"support": ["support@velvetpetalsalon.com"],"generic": ["info@velvetpetalsalon.com"]},"financing_processors": ["affirm","klarna"],"payment_processors": ["stripe"],"hiring_signals": {"actively_hiring": true,"indicators": ["careers page link","we're hiring banner"]},"insurance_carriers_accepted": [],"languages_offered": [],"online_booking_platforms": ["calendly","vagaro","boulevard_studio"],"customer_count_signals": {"customers_served": 1500,"reviews_count": 184,"projects_completed": null,"locations_served": null,"raw_matches": ["Trusted by 1500+ clients"]},"chatbot_platforms": ["intercom"],"email_marketing_platforms": ["mailchimp"],"lead_capture_ctas": {"has_free_quote_cta": true,"has_get_started_cta": true,"has_appointment_booking": true,"has_callback_request": true,"has_contact_form": true,"cta_count": 3},"mobile_app_links": {"has_ios_app": false,"has_android_app": false,"ios_app_id": null,"android_app_id": null},"certifications_credentials": ["State Cosmetology License"],"financing_accepted": ["credit_card","cash","bnpl"],"growth_signals": {"growth_score": 0.4,"components": {"hiring": 0.6,"employee_scale": 0.4,"multi_location": 0.5},"indicators_count": 2},"jsonld": {"name": "Velvet Petal Salon & Spa","phone": "(480) 555-1069","email": "info@velvetpetalsalon.com","address": {"street": "6534 Main St","city": "Scottsdale","region": "AZ","zip": "85251"},"opening_hours": ["Mo-Fr 08:00-18:00"],"social_urls": ["https://www.facebook.com/velvetpetalsalon","https://www.instagram.com/velvetpetalsalon"],"aggregate_rating": {"rating": 4.9,"count": 184},"employee_count": 8,"founders": ["Maria Chen"]}}}
Each dataset item is a single salon or spa with the structure shown above in What you get. The Apify Console renders two views: Overview for a quick scan of name, location, phone, rating, and key enrichment signals, and Detailed for every field on every record. Records can also be downloaded as CSV, JSON, Excel, or HTML from the Storage tab.
FAQ
Q: Where does the data come from? A: Public Google Maps listings plus public salon/spa website content (homepage, services, contact, about pages). No logged-in scraping.
Q: Are the emails verified? A: Format-validated and TLD-filtered, but not SMTP-verified. Pipe through NeverBounce or ZeroBounce before cold outreach.
Q: Why are some records missing enrichment fields? A: Enrichment is best-effort and depends on what the salon publishes on its public website. Use the confidence_score to filter for richer records.
Q: What is the rate limit? A: Throttled by Google Maps response time and the max_concurrent_enrichments setting (default 8). Plan ~1-2 records per second per concurrent worker.
Q: Can I include franchise locations?
A: Yes, set exclude_chains: false. Default is true.
Save your input as an Apify Task
Apify Tasks let you save a configured input once and re-run it with a single click - no need to re-type search terms, locations, filters, or tier settings every time. Tasks are the foundation for everything that comes next: schedules, monitor mode, and webhook routing all attach to a saved Task, not to the raw actor.
Steps to save your current input as a Task:
- On this actor's Apify Store page, click
Runwith your input fully configured. - Click the
Save as taskbutton at the top of the run page. - Name the task something memorable (e.g.
Salons in Brooklyn, NY - weekly). - Reload the task page and click
Startanytime to re-run with the same inputs.
Tasks unlock the next two features below: scheduling and monitor mode.
Run this weekly with Apify Schedules
Apify Schedules cron-run any saved Task automatically. Pair this with the saved Task above and you get hands-off recurring runs with no manual clicks, no missed weeks, and a steady stream of fresh data into your CRM or warehouse.
Steps to schedule a Task:
- Save your input as a Task (see above).
- Go to https://console.apify.com/schedules and click
Create new schedule. - Pick your Task and set the cron expression. Common patterns:
- Daily at 9am UTC:
0 9 * * * - Weekly on Mondays at 9am:
0 9 * * 1 - Monthly on the 1st:
0 9 1 * *
- Daily at 9am UTC:
- Save. Apify will run your Task on that schedule automatically, push the dataset to whatever integrations you have wired up, and fire run-completion webhooks for downstream automation.
Run weekly to keep your prospect list fresh and catch newly-opened salons and spas in your service area.
Monitor mode (v2, beta)
Monitor mode is the v2 evolution of this actor and is currently in BETA. It turns a recurring schedule into a true change-feed instead of a firehose of duplicate records.
How it works:
- When this actor runs under an Apify Schedule, monitor mode is enabled automatically.
- Instead of emitting ALL records every run, it emits ONLY records that are NEW or CHANGED since the last scheduled run.
- A digest record summarizes the delta (X new, Y changed, Z removed) at the top of every run.
- Optional: provide a Slack or email webhook URL in the
monitor_webhook_urlinput field and the digest fires there too, so your team gets the delta in their inbox or channel without polling the dataset. - Cost: a single
scheduled_delta_runevent ($0.05) per scheduled run, plus standard PPE on emitted delta records only. Predictable monthly cost, no surprise bills from re-charging for unchanged records.
Monitor mode is rolling out to the top 3 actors first (this one included if it's hotel-motel-lead-finder, google-maps-reviews-pro, or mcp-accounting-firm-leads). Full portfolio coverage by end of June.
Support
Open an issue on this actor's GitHub or reach out via the Apify support page.
More from the SEIB portfolio
Same data engine, different vertical â€" pick the one that matches your buyer:
- ðŸ"§ Home Services Lead Finder
- ðŸ½ï¸ Restaurants Lead Finder
- ðŸš- Auto Dealerships Lead Finder
- 🦷 Healthcare Practices Lead Finder
- 🧘 Fitness Studios Lead Finder
- ðŸ"Š Accounting Firms Lead Finder
- ðŸ"© Auto Repair Shops Lead Finder
- ðŸ-ï¸ Construction Contractors Lead Finder
- 🨠Hotels & Motels Lead Finder
- âš-ï¸ Law Firms Lead Finder
- 🢠Real Estate Brokerages Lead Finder
All 12 actors share the same Pay-Per-Event pricing ($0.004 base / $0.008 with email / $0.015 with premium signals) and output schema. Mix-and-match across verticals without translation logic. Built by Seibs Management LLC.
Found this useful?
If this actor saved you time or money, please consider leaving a quick review on the Apify Store. Reviews help other buyers find work that solves their problem and let me prioritize the features paying customers actually use. Leave a review: https://apify.com/seibs.co/salon-spa-lead-finder#reviews