OrbTop

StyleSeat + Booksy Beauty Pro Scraper

LEAD GENERATIONBUSINESSAUTOMATION

StyleSeat + Booksy Beauty Pro Scraper

Scrape beauty professional profiles from StyleSeat and Booksy in one unified schema. Returns business name, full address, phone, services with prices, ratings, social handles, and Instagram for hundreds of thousands of stylists, barbers, and salon owners across the US — all in clean flat JSON.


StyleSeat + Booksy Scraper Features

  • Pulls profiles from two platforms under one schema. The platform field tells you which.
  • Extracts the full service menu with per-service pricing — useful for wholesale pricing benchmarks.
  • Parses StyleSeat sitemap shards (1–20, ~1,000 stylists each) and Booksy search-result pages.
  • Returns Instagram handles for StyleSeat profiles, since most independent stylists live there.
  • Pure HTTP scraping. No browser, no proxy required.
  • Rate-limited at 5 req/sec out of the box. You can leave it running and it won't get clobbered.
  • 28 fields per record, including geo coordinates, ratings, review counts, and lifetime appointment counts.

Who Uses Beauty Professional Data?

  • Payment processors — build prospect lists for SMB merchant onboarding (Stripe, Square competitors).
  • Salon software vendors — find independent stylists not yet on a booking platform, or poach Booksy/StyleSeat users with better terms.
  • Beauty product wholesalers — Olaplex, CND, GHD distributors targeting independent salons need salon contact lists with service menus.
  • Insurance agencies — beauty professional liability policies need verified business addresses and category data.
  • Market researchers — analyze service pricing across cities, segment by category, or measure platform overlap.
  • Recruiters — staffing agencies sourcing licensed stylists by city and specialty.

How the StyleSeat + Booksy Scraper Works

  1. Pick which platforms you want — StyleSeat, Booksy, or both. Defaults to both.
  2. For StyleSeat, the scraper walks one or more of the 20 sitemap shards (sitemap-stylists-N.xml) and hits StyleSeat's public profile API for each stylist.
  3. For Booksy, you supply one or more search-result URLs — https://booksy.com/en-us/s/{category}/{location_id}_{city-slug} — and it harvests every business linked from those pages.
  4. Each profile is normalised to the same flat record. The platform discriminator lets you keep them together or split them downstream.

Input

{
  "maxItems": 50,
  "platforms": ["styleseat", "booksy"],
  "styleseat_sitemap_shards": ["1"],
  "booksy_search_urls": [
    "https://booksy.com/en-us/s/barber-shop/134655_los-angeles",
    "https://booksy.com/en-us/s/hair-salon/134655_los-angeles"
  ],
  "do_fetch_services": true
}
Field Type Default Description
maxItems integer 50 Total profiles to scrape, split across enabled platforms.
platforms array ["styleseat","booksy"] Which platforms to scrape. Pick one or both.
styleseat_sitemap_shards array ["1"] StyleSeat sitemap shard numbers (1–20). Each shard contains ~1,000 stylists.
booksy_search_urls array LA barber + hair-salon Booksy search URLs to harvest. Format: https://booksy.com/en-us/s/{category}/{location_id}_{city-slug}.
do_fetch_services boolean true Fetch StyleSeat's service menu (extra API call per profile, but enriches services_offered and specialties). Booksy services come for free from JSON-LD.

StyleSeat-only run

{
  "maxItems": 1000,
  "platforms": ["styleseat"],
  "styleseat_sitemap_shards": ["1", "2", "3"],
  "do_fetch_services": true
}

Booksy-only run

{
  "maxItems": 200,
  "platforms": ["booksy"],
  "booksy_search_urls": [
    "https://booksy.com/en-us/s/barber-shop/134598_philadelphia",
    "https://booksy.com/en-us/s/nail-salon/134608_austin"
  ]
}

StyleSeat + Booksy Scraper Output Fields

{
  "platform": "styleseat",
  "profile_url": "https://www.styleseat.com/m/v/gdarling",
  "professional_name": "Glenda Darling",
  "business_name": "Smoke & Mirrors",
  "category": "Stylist",
  "specialties": ["Full Highlights", "Women's Cut", "Bonding Hair Extensions"],
  "address": "256 Sutter Street, 2nd Floor",
  "city": "San Francisco",
  "state": "CA",
  "zip": "94108",
  "country": "US",
  "latitude": 37.7898866,
  "longitude": -122.4047905,
  "phone": "4152490840",
  "email": "",
  "website": "",
  "instagram": "smokeandmirrorssf",
  "facebook": "",
  "tiktok": "",
  "booking_url": "",
  "rating": 4.98,
  "review_count": 134,
  "service_count": 13,
  "price_range": "",
  "services_offered": [
    "Full Highlights with Haircut — $585",
    "Bang Trim — $30+",
    "Hair Extensions — $450+"
  ],
  "profile_blurb": "I began working as an independent stylist in San Francisco's Pacific Heights neighborhood in 1998...",
  "profile_photo": "https://d220aniogakg8b.cloudfront.net/static/uploads/2016/02/05/...",
  "num_appointments": 1000,
  "neighborhood": "Financial District",
  "timezone": "US/Pacific",
  "scraped_at": "2026-04-25T15:54:28.597Z"
}
Field Type Description
platform string "styleseat" or "booksy".
profile_url string Public profile URL on the source platform.
professional_name string Stylist or owner name. Often blank for Booksy salon listings.
business_name string Salon, studio, or business name.
category string Profession (StyleSeat) or business category (Booksy).
specialties array Specialty tags. Populated for StyleSeat when do_fetch_services is on.
address string Street address.
city string City. For Booksy, parsed from the embedded streetAddress segment.
state string US state — 2-letter abbreviation (StyleSeat) or full name (Booksy).
zip string ZIP / postal code.
country string ISO country code (US).
latitude number Decimal degrees.
longitude number Decimal degrees.
phone string Public phone number.
email string Public email. Rarely exposed by either platform.
website string External website URL when distinct from the profile URL.
instagram string Instagram handle without the @. StyleSeat exposes this; Booksy doesn't.
facebook string Facebook URL or handle. Rarely exposed.
tiktok string TikTok handle. Rarely exposed.
booking_url string Direct booking URL when the pro accepts online bookings.
rating number Average star rating on a 5-point scale.
review_count number Total review count.
service_count number Number of services in the menu.
price_range string Formatted price range (e.g. "USD 20 - 100"). Booksy only.
services_offered array Service names with prices, formatted as "Name — $price".
profile_blurb string Self-described professional bio.
profile_photo string Profile or business photo URL.
num_appointments number Lifetime appointment count. StyleSeat only.
neighborhood string Neighborhood name. StyleSeat only.
timezone string IANA timezone. StyleSeat only.
scraped_at string ISO 8601 timestamp when the record was scraped.

FAQ

How do I scrape StyleSeat or Booksy?

The StyleSeat + Booksy Beauty Pro Scraper handles both. Configure the input, run it, and you get a flat JSON dataset with one row per professional. No Apify proxy and no browser are required — both platforms expose enough public data through their APIs and SSR HTML to scrape directly.

How much does the StyleSeat + Booksy Scraper cost to run?

Pay-per-event: $0.10 per actor start plus $0.001 per record. A 1,000-profile run costs roughly $1.10. Most users land in the $1–$10 range per session.

Can I filter by city or category?

Yes for Booksy — you supply specific search URLs like https://booksy.com/en-us/s/barber-shop/134655_los-angeles and the scraper only pulls businesses from those pages. StyleSeat sitemaps are not city-filtered, so you get a mixed national sample per shard. If you need strict geo filtering on StyleSeat, post-filter the output by state or zip.

Does the scraper need proxies?

No. StyleSeat and Booksy serve their public profile data without bot protection. The scraper rate-limits itself at 5 requests per second, which keeps both platforms happy and stops you from looking like a denial-of-service attack.

What's the difference between this and a single-platform Booksy scraper?

This actor covers both. You get one schema, one billing event, and a platform field that lets you split the output later. Useful when your prospect list isn't loyal to one booking platform — and most independent beauty professionals aren't.


Need More Features?

Need a different city, category, or extra fields like portfolio photo URLs? File an issue or get in touch.

Why Use This Scraper?

  • Two platforms, one schema — StyleSeat and Booksy data normalised to the same 28 fields. Saves a round of post-processing.
  • Service menu with pricing — most beauty scrapers stop at name and address. This one returns the full price list, which is what you actually need for B2B sales pitches.
  • No proxies, no browser — pure HTTP fetching. Runs in 256 MB. Cheaper to operate, faster to start, and no surprise CAPTCHA bills.