Booksy Business Data Scraper
Pricing
from $0.75 / 1,000 business results
Booksy Business Data Scraper
Extract Booksy business listings and detailed profiles across 16 countries plus New York. Discover active categories, paginate large result sets by regional facets, and export structured data such as ratings, reviews, services, prices, opening hours, locations and photos when available.
Pricing
from $0.75 / 1,000 business results
Rating
0.0
(0)
Developer
DataScraperES
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Booksy Business Data Scraper collects Booksy business listings or complete business profiles across all 16 supported countries, with an optional New York regional profile. Select one or more profiles, optionally restrict categories, and receive one structured Dataset item per discovered business.
What this Actor does
The Actor queries Booksy's public customer-facing listing and business-detail endpoints using the country-specific domain, language, category IDs, and current regional facets. It supports Argentina (ar), Australia (au), Brazil (br), Canada (ca), Chile (cl), Colombia (co), France (fr), Ireland (ie), Mexico (mx), the Netherlands (nl), Poland (pl), Portugal (pt), South Africa (za), Spain (es), the United Kingdom (gb), the United States (us), and the optional New York State regional profile (ny). For an uncapped high-volume category, the Actor reads the current country root from Booksy's listing metadata and fans out through live regional facets before paginating, avoiding the API's 10,000-result response cap where Booksy exposes usable regions.
In listings mode, each Dataset item contains the category context and the business object returned by Booksy's search endpoint. In details mode, the Actor first discovers businesses and then retrieves the corresponding profile records, which can include services, prices, opening hours, location data, reviews, and photos when Booksy returns them.
Use cases
- Build a country- or category-specific directory of Booksy businesses.
- Export business profile data for market research and enrichment.
- Compare the availability of beauty, wellness, health, home, and professional services across supported Booksy markets.
How to use
- Open the Actor in Apify Console.
- Choose one or more country or regional profiles, then select
listingsordetailsmode. - Click Start and open the Dataset when the run finishes.
Input
countryCodes defaults to the 16 countries. Add ny explicitly when the New York regional profile is required. Use categories to pass exact current category slugs; an empty list discovers the current active category catalog from Booksy for every selected profile. maxBusinessesPerCategory is an optional safety limit applied after deduplication; bounded runs may use the first national page, while uncapped high-volume categories use regional fan-out. The input form is prefilled with one US hair-salon result for a quick first test; this does not change the broader API defaults. The default request spacing is 100 ms; raise requestDelayMs only when a more conservative crawl is required. The Actor uses a fixed, internally tuned concurrency and retry policy, writes partial error items when enabled, and automatically persists compact progress checkpoints so interrupted runs can resume.
{"countryCodes": ["es", "fr", "br"],"mode": "listings","categories": ["barberia", "barbier"],"maxBusinessesPerCategory": 1000,"requestDelayMs": 100,"resume": true}
Category names are profile-specific, so a name that exists in one country may not exist in another. The Actor refreshes category IDs at run time because historical IDs can change. It deduplicates businesses by Booksy business ID across every region in each profile and category collection.
Output
Results are written to the Actor Dataset in small batches, and the run's Output tab links directly to those results. Successful items include status, recordKey, profile, country, categoryId, category, mode, businessId, sourceUrl, scrapedAt, and business. Failed pages or detail requests can be represented by status: "error" items containing error, allowing downstream users to distinguish an empty result from a failed request. The business value is the complete object returned for that listing or detail request; its nested fields can vary by country and by Booksy record.
{"status": "success","profile": "us","country": "USA","categoryId": 1,"category": "hair-salon","mode": "listing","businessId": 672779,"recordKey": "us:1:672779","sourceUrl": "https://us.booksy.com/core/v2/customer_api/businesses","business": {"id": 672779,"name": "Xtreme Beauty Salon","slug": "xtreme-beauty-salon","subdomain": "xtremebeautysalon","regions": [{"id": 11339,"name": "Hennepin County","full_name": "Hennepin County, MN","slug": "hennepin-county","type": "county","latitude": 45.014924,"longitude": -93.4872895291357},{"id": 10022,"name": "Minnesota","full_name": "Minnesota","slug": "minnesota","type": "state","latitude": 46.4418575,"longitude": -94.5024953923838},{"id": 134619,"name": "Minneapolis","full_name": "Minneapolis, MN","slug": "minneapolis","type": "city","latitude": 44.9707515,"longitude": -93.2681934955438},{"id": 7,"name": "USA","full_name": "USA","slug": "usa","type": "country","latitude": 39.828127,"longitude": -98.579404},{"id": 55749,"name": "55408","full_name": "55408","slug": "55408","type": "zip","latitude": 44.9365835,"longitude": -93.2991686445531}],"location": {"coordinate": {"latitude": 44.94292,"longitude": -93.28272},"city": "Minneapolis","address": "2815 Hennepin Ave, Minneapolis, 55408"},"distance": null,"reviews_count": 534,"reviews_stars": 5,"reviews_rank": 4.908239700374532,"images": {"cover": [{"image_id": 28552715,"business_id": 672779,"tags": [],"staffers": [],"description": null,"image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/672779/biz_photo/53d4a84aeb3f4b07b5260bd62bffaa-xtreme-beauty-salon-biz-photo-c889e546c62b4beba1656806f46c05-booksy.jpeg","height": 334,"width": 594,"category": "biz_photo","is_cover_photo": true,"inspiration_categories": [],"order": 1,"visible": true,"active": true,"created": "2024-12-18T14:53:48"}],"inspiration": [{"image_id": 33361844,"business_id": 672779,"tags": [],"staffers": [],"description": "","image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/672779/inspiration/b2a933e366ec4e1ea86af7e949b0e1-xtreme-beauty-salon-inspiration-b9e72ce7bac044c5b47264d03f3ab9-booksy.jpeg","height": 3520,"width": 1980,"category": "inspiration","is_cover_photo": false,"inspiration_categories": [1],"order": 0,"visible": true,"active": true,"created": "2026-07-19T14:24:04"},{"image_id": 33361843,"business_id": 672779,"tags": [],"staffers": [],"description": "","image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/672779/inspiration/af8e36bd666048ccbe7e9455d74578-xtreme-beauty-salon-inspiration-77e3db60ae2d4848b7355e57f08c5b-booksy.jpeg","height": 2340,"width": 1755,"category": "inspiration","is_cover_photo": false,"inspiration_categories": [1],"order": 1,"visible": true,"active": true,"created": "2026-07-19T14:24:03"},{"image_id": 33361842,"business_id": 672779,"tags": [],"staffers": [],"description": "","image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/672779/inspiration/495a9f73fb8743899c6dc63c095ce3-xtreme-beauty-salon-inspiration-1c7c1788268240779cd7dd12c28086-booksy.jpeg","height": 3520,"width": 1980,"category": "inspiration","is_cover_photo": false,"inspiration_categories": [1],"order": 2,"visible": true,"active": true,"created": "2026-07-19T14:23:59"},{"image_id": 33361841,"business_id": 672779,"tags": [],"staffers": [],"description": "","image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/672779/inspiration/bd27cacee312464796c1035c6b1f79-xtreme-beauty-salon-inspiration-d72ceeea2e5f483c9af7a257bc1f30-booksy.jpeg","height": 3520,"width": 1980,"category": "inspiration","is_cover_photo": false,"inspiration_categories": [1],"order": 3,"visible": true,"active": true,"created": "2026-07-19T14:23:57"}],"logo": [{"image_id": 22208362,"business_id": 672779,"tags": [],"staffers": [],"description": null,"image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/672779/logo/3026cd1b269b4ae5bfeee9ebd5b264-xtreme-beauty-salon-logo-02bc1d333df84f87a98db5d7429430-booksy.jpeg","height": 156,"width": 424,"category": "logo","is_cover_photo": false,"inspiration_categories": [],"order": 0,"visible": true,"active": true,"created": "2022-02-01T02:08:29"}],"biz_photo_count": null,"biz_photo_per_page": 20},"primary_category": 1,"service_categories": [{"id": null,"name": "","order": 0,"show_first": -1,"services": [{"id": 4309981,"name": "Quick weave","active": true,"order": 0,"padding_type": null,"description": "","description_type": "P","note": "","suggest_services": {"input": ["Quick weave","Quick","weave"],"contexts": {"business_categories": ["6","1","657","*"],"is_b_listing": false,"location": "44.94292,-93.28272"}},"staffer_id": [598641],"variants": [{"id": 12593318,"duration": 120,"price": 100.0,"type": "X","deposit": 0.0,"deposit_tax": 0.0,"prepayment": 20.0,"prepayment_tax": 0.0,"promotion": null,"label": "","combo_children": [],"staffer_id": [598641],"service_price": "$100.00","omnibus_price": null}],"treatment": {"id": 760,"name": "Quick Weave"},"treatment_id": 760,"treatment_parent_id": 657,"is_available_for_customer_booking": true,"photos": [],"is_online_service": false,"is_traveling_service": false,"addons_available": false,"combo_type": null,"price": 100.0,"type": "X","partner_app_data": {},"note_text": ""},{"id": 4309976,"name": "Wash and Set","active": true,"order": 1,"padding_type": null,"description": "","description_type": "P","note": "","suggest_services": {"input": ["Wash and Set","Wash","and","Set"],"contexts": {"business_categories": ["6","1","657","*"],"is_b_listing": false,"location": "44.94292,-93.28272"}},"staffer_id": [598641],"variants": [{"id": 12593317,"duration": 90,"price": 80.0,"type": "X","deposit": 0.0,"deposit_tax": 0.0,"prepayment": 20.0,"prepayment_tax": 0.0,"promotion": null,"label": "","combo_children": [],"staffer_id": [598641],"service_price": "$80.00","omnibus_price": null}],"treatment": {"id": 833,"name": "Hair Wash"},"treatment_id": 833,"treatment_parent_id": 1,"is_available_for_customer_booking": true,"photos": [],"is_online_service": false,"is_traveling_service": false,"addons_available": false,"combo_type": null,"price": 80.0,"type": "X","partner_app_data": {},"note_text": ""},{"id": 4309974,"name": "Silk press","active": true,"order": 2,"padding_type": null,"description": "","description_type": "P","note": "","suggest_services": {"input": ["Silk press","Silk","press"],"contexts": {"business_categories": ["6","1","657","*"],"is_b_listing": false,"location": "44.94292,-93.28272"}},"staffer_id": [598641],"variants": [{"id": 12593316,"duration": 150,"price": 95.0,"type": "X","deposit": 0.0,"deposit_tax": 0.0,"prepayment": 20.0,"prepayment_tax": 0.0,"promotion": null,"label": "","combo_children": [],"staffer_id": [598641],"service_price": "$95.00","omnibus_price": null}],"treatment": {"id": 619,"name": "Silk Press"},"treatment_id": 619,"treatment_parent_id": 1,"is_available_for_customer_booking": true,"photos": [],"is_online_service": false,"is_traveling_service": false,"addons_available": false,"combo_type": null,"price": 95.0,"type": "X","partner_app_data": {},"note_text": ""}]}],"treatment_service_categories": [],"promoted": true,"manual_boost_score": 0,"is_recommended": true,"max_discount_rate": 0,"low_availability": false,"is_renting_venue": false,"umbrella_venue_name": "luxe","contractor_description": "","url": "672779_xtreme-beauty-salon_hair-salon_134619_minneapolis","best_of_booksy_badge": null,"accept_booksy_gift_cards": false,"accept_booksy_pay": false,"staff": [],"reviews": [],"meta": {"score": 7116.694,"id": "business:672779","item_no": 0},"bookmarked": false,"score": 7116.694},"scrapedAt": "2026-09-06T18:51:44.093552+00:00"}
This is the complete Dataset item from a real successful run.
Pricing
The Actor charges one business-result event for each successfully delivered business row. Error records, empty responses, and failed detail requests are not charged. The price is applied per result; the 1,000-result equivalent is shown only for comparison.
| Apify tier | Price per result | Equivalent per 1,000 results |
|---|---|---|
| FREE | $0.001000 | $1.00 |
| BRONZE | $0.000900 | $0.90 |
| SILVER | $0.000800 | $0.80 |
| GOLD | $0.000750 | $0.75 |
| PLATINUM | $0.000750 | $0.75 |
| DIAMOND | $0.000750 | $0.75 |
The final amount depends on the number of successful business rows delivered in the Dataset and the Apify account tier used for the run. Review the Actor's Pricing tab for the currently effective configuration.
Related Actors
| Actor | Best for |
|---|---|
| Google Maps Business Scraper | $1 per 1,000 | Discovering complementary local businesses and comparing Booksy coverage with Google Maps listings. |
| Google Maps Reviews Scraper | Ratings & Replies | Adding public review text, ratings, dates, and owner replies to selected businesses discovered in Booksy. |
Limits and data quality
Coverage follows the active country/category catalog returned by Booksy at run time. The Actor requests available listing and profile data, including treatment services, SEO metadata, venues, and business details when Booksy returns them. Booksy can change category IDs, pagination, response fields, availability, or access behavior, so an HTTP success response does not guarantee that every business in a market is present. Rate limits and transient failures are retried automatically under a fixed internal policy; a failed page or detail request may therefore produce partial results rather than stopping the whole run.
Large all-country detail runs can be substantial because each business requires an additional request. Use countryCodes, categories, and maxBusinessesPerCategory to bound a run, and use listings mode when full profile data is not needed. Uncapped categories at or above Booksy's national 10,000-result boundary are split using current roots and regional facets discovered from live listing data; if Booksy does not expose usable roots, the Actor writes a category error instead of silently claiming complete coverage. The Actor deduplicates across regions, stores compact progress checkpoints in Apify's Key-Value Store, automatically persists them during execution and shutdown, and reports emitted items, errors, region progress, and throughput in the run status. Results reflect the source response at run time and are not a permanent snapshot of Booksy.
Frequently asked questions
Which countries are supported?
Argentina, Australia, Brazil, Canada, Chile, Colombia, France, Ireland, Mexico, the Netherlands, Poland, Portugal, South Africa, Spain, the United Kingdom, and the United States are included by default. The optional ny profile uses the United States domain and is scoped to the live New York regional root.
What is the difference between listings and details mode?
Listings mode emits the search records returned by each category. Details mode performs an additional profile request for every discovered business and emits the returned business object when that request succeeds.
Can I run all countries at once?
Yes. Omitting countryCodes uses all 16 countries; add ny explicitly when needed. A full details run may be very large. Apply a category or per-category limit when testing or estimating volume.
Responsible use
Use the Actor only where your collection and downstream use comply with applicable law, privacy requirements, and Booksy's terms and policies. You are responsible for respecting access limits and for handling any personal or business data obtained through the source.
Support
For a problem, open the Actor's Issues tab and include a reproducible input, the affected profile/category, and the Apify run ID. Do not include credentials or other secrets in an issue.
For public integration examples and sanitized sample data, see the Booksy scraper examples and sample data repository.