Booksy Business Data Scraper avatar

Booksy Business Data Scraper

Pricing

from $0.75 / 1,000 business results

Go to Apify Store
Booksy Business Data Scraper

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

DataScraperES

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

  1. Open the Actor in Apify Console.
  2. Choose one or more country or regional profiles, then select listings or details mode.
  3. 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. Temporary source failures are retried. Available results are retained when a request remains unavailable, and interrupted runs can resume with the same input and storage.

{
"countryCodes": [
"us"
],
"mode": "listings",
"categories": [
"hair-salon"
],
"maxBusinessesPerCategory": 1,
"requestDelayMs": 100,
"regionSplitThreshold": 9000,
"maxPagesPerRegion": 1,
"datasetBatchSize": 1,
"includeErrors": true,
"resume": false
}

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 as they are confirmed, 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": 673578,
"recordKey": "us:1:673578",
"sourceUrl": "https://us.booksy.com/core/v2/customer_api/businesses",
"business": {
"id": 673578,
"name": "The Blade Runner",
"slug": "the-blade-runner",
"subdomain": "thebladerunner",
"regions": [
{
"id": 15755,
"name": "Riverview",
"full_name": "Riverview, FL",
"slug": "riverview",
"type": "city",
"latitude": 27.8333015,
"longitude": -82.2972526226914
},
{
"id": 7,
"name": "USA",
"full_name": "USA",
"slug": "usa",
"type": "country",
"latitude": 39.828127,
"longitude": -98.579404
},
{
"id": 135314,
"name": "Tampa",
"full_name": "Tampa",
"slug": "tampa",
"type": "metropolis",
"latitude": 27.9880528367347,
"longitude": -82.4810486938775
},
{
"id": 10344,
"name": "Hillsborough County",
"full_name": "Hillsborough County, FL",
"slug": "hillsborough-county",
"type": "county",
"latitude": 27.871954,
"longitude": -82.3113421927259
},
{
"id": 10009,
"name": "Florida",
"full_name": "Florida",
"slug": "florida",
"type": "state",
"latitude": 27.6969305,
"longitude": -81.5575040134
},
{
"id": 45018,
"name": "33578",
"full_name": "33578",
"slug": "33578",
"type": "zip",
"latitude": 27.8480345,
"longitude": -82.3369003577659
}
],
"location": {
"coordinate": {
"latitude": 27.89349,
"longitude": -82.28469
},
"city": "Brandon",
"address": "139 E Bloomingdale Ave, Brandon, 33578"
},
"distance": null,
"reviews_count": 207,
"reviews_stars": 5,
"reviews_rank": 4.975845410628019,
"images": {
"cover": [
{
"width": 1317,
"image_id": 30268288,
"tags": [],
"image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/biz_photo/49f6387af02a404ca0a0e288fb8a42-the-blade-runner-biz-photo-9995bfe2154a4c55a7e82ad97722f7-booksy.jpeg",
"visible": true,
"inspiration_categories": [],
"created": "2025-09-23T23:34:23",
"staffers": [],
"active": true,
"height": 740,
"order": 0,
"business_id": 673578,
"description": null,
"category": "biz_photo",
"is_cover_photo": true
}
],
"inspiration": [
{
"width": 2160,
"image_id": 28474068,
"tags": [],
"image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/inspiration/731ddd7d4eb5486092ee77b9bada53-the-blade-runner-inspiration-a594da27860b4c68bd1c53fcd22569-booksy.jpeg",
"visible": true,
"inspiration_categories": [
6,
1,
5
],
"created": "2024-12-04T01:51:17",
"staffers": [],
"active": true,
"height": 3840,
"order": 0,
"business_id": 673578,
"description": "",
"category": "inspiration",
"is_cover_photo": false
},
{
"width": 627,
"image_id": 28474059,
"tags": [],
"image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/inspiration/260c8f33eea74f6eb45ba1a89d6597-the-blade-runner-inspiration-f1da81571f094b3b8d7de342264080-booksy.jpeg",
"visible": true,
"inspiration_categories": [
6,
1,
5
],
"created": "2024-12-04T01:50:07",
"staffers": [],
"active": true,
"height": 468,
"order": 1,
"business_id": 673578,
"description": "Me and my brotha 🔥🔥🔥 Blendz & Bladez",
"category": "inspiration",
"is_cover_photo": false
},
{
"width": 1586,
"image_id": 28474039,
"tags": [],
"image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/inspiration/e814ff2aad634624ab8d052af23ad3-the-blade-runner-inspiration-664a55f5b47241cf8f8cb34d7aadfd-booksy.jpeg",
"visible": true,
"inspiration_categories": [
6,
1,
5
],
"created": "2024-12-04T01:47:57",
"staffers": [],
"active": true,
"height": 1982,
"order": 2,
"business_id": 673578,
"description": "Got my eye on the Target 🎯",
"category": "inspiration",
"is_cover_photo": false
},
{
"width": 671,
"image_id": 27550913,
"tags": [],
"image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/inspiration/622bb166f10148c398fbaa4e61ecf9-the-blade-runner-inspiration-1962e330f43b4c889444e0fd403731-booksy.jpeg",
"visible": true,
"inspiration_categories": [
6,
1,
5,
659
],
"created": "2024-06-28T11:35:21",
"staffers": [],
"active": true,
"height": 1200,
"order": 3,
"business_id": 673578,
"description": "",
"category": "inspiration",
"is_cover_photo": false
}
],
"logo": [
{
"width": 1546,
"image_id": 26015940,
"tags": [],
"image": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/logo/0e4faff7f7f24a8cbcc07ba0826ba1-thebladerunner-blendz-bladez-b-logo-42c67e5a2e8440f088a09df6d5bb80-booksy.jpeg",
"visible": true,
"inspiration_categories": [],
"created": "2023-10-22T21:37:26",
"staffers": [],
"active": true,
"height": 1546,
"order": 0,
"business_id": 673578,
"description": null,
"category": "logo",
"is_cover_photo": false
}
],
"biz_photo_count": null,
"biz_photo_per_page": 20
},
"primary_category": 1,
"service_categories": [
{
"id": null,
"name": "",
"order": 0,
"show_first": -1,
"services": [
{
"id": 4315093,
"name": "Hair Cut",
"active": true,
"order": 0,
"padding_type": null,
"description": "",
"description_type": "P",
"note": "",
"suggest_services": {
"input": [
"Hair Cut",
"Hair",
"Cut"
],
"contexts": {
"business_categories": [
"6",
"1",
"5",
"659",
"*"
],
"is_b_listing": false,
"location": "27.89349,-82.28469"
}
},
"staffer_id": [
599541
],
"variants": [
{
"id": 14909645,
"duration": 40,
"price": 40.0,
"type": "X",
"deposit": 0.0,
"deposit_tax": 0.0,
"prepayment": 0.0,
"prepayment_tax": 0.0,
"promotion": {
"rate": 10.0,
"discount_amount": 10.0,
"discount_type": "R",
"constant": false,
"price": {
"price": 36.0,
"formatted_price": "$36.00"
}
},
"label": "",
"combo_children": [],
"staffer_id": [
599541
],
"latest_prices": [
{
"created": 1724709582.338598,
"price": "40.00"
}
],
"service_price": "$40.00",
"omnibus_price": "$40.00"
}
],
"treatment": {
"id": 828,
"name": "Hair Care"
},
"treatment_id": 828,
"treatment_parent_id": 1,
"is_available_for_customer_booking": true,
"photos": [
{
"id": 464987,
"url": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/service_photos/d77f5b0c7e1b4efd94c6aede17d7f6ff.jpeg",
"order": 1
},
{
"id": 464988,
"url": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/service_photos/5093161a98534fd6af9fc1fbaf37615d.jpeg",
"order": 2
},
{
"id": 464991,
"url": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/service_photos/b7176d5ac7b24e54a4ac1888a1b3c416.jpeg",
"order": 3
}
],
"is_online_service": false,
"is_traveling_service": false,
"addons_available": false,
"combo_type": null,
"price": 40.0,
"type": "X",
"partner_app_data": {},
"note_text": null
},
{
"id": 4315094,
"name": "Hair Cut + Beard, Edge up",
"active": true,
"order": 1,
"padding_type": null,
"description": "This includes Front Line Up. Back Line Up, Beard Fade, Beard Wash",
"description_type": "P",
"note": "",
"suggest_services": {
"input": [
"Hair Cut + Beard, Edge up",
"Hair",
"Cut",
"+",
"Beard,",
"Edge",
"up"
],
"contexts": {
"business_categories": [
"6",
"1",
"5",
"659",
"*"
],
"is_b_listing": false,
"location": "27.89349,-82.28469"
}
},
"staffer_id": [
599541
],
"variants": [
{
"id": 10551334,
"duration": 40,
"price": 45.0,
"type": "X",
"deposit": 0.0,
"deposit_tax": 0.0,
"prepayment": 0.0,
"prepayment_tax": 0.0,
"promotion": {
"rate": 10.0,
"discount_amount": 10.0,
"discount_type": "R",
"constant": false,
"price": {
"price": 40.5,
"formatted_price": "$40.50"
}
},
"label": "",
"combo_children": [],
"staffer_id": [
599541
],
"latest_prices": [
{
"created": 1724709591.881626,
"price": "45.00"
}
],
"service_price": "$45.00",
"omnibus_price": "$45.00"
}
],
"treatment": {
"id": 739,
"name": "Haircut & Beard"
},
"treatment_id": 739,
"treatment_parent_id": 6,
"is_available_for_customer_booking": true,
"photos": [
{
"id": 50058,
"url": "https://d2zdpiztbgorvt.cloudfront.net/region1/us/673578/service_photos/318003701ba04b569b42af999344c4c5.jpeg",
"order": 1
}
],
"is_online_service": false,
"is_traveling_service": false,
"addons_available": false,
"combo_type": null,
"price": 45.0,
"type": "X",
"partner_app_data": {},
"note_text": null
},
{
"id": 6997383,
"name": "Hair Cut + Beard +Eye Brows",
"active": true,
"order": 2,
"padding_type": null,
"description": "",
"description_type": "M",
"note": "",
"suggest_services": {
"input": [
"Hair Cut + Beard +Eye Brows",
"Hair",
"Cut",
"+",
"Beard",
"+Eye",
"Brows"
],
"contexts": {
"business_categories": [
"6",
"1",
"5",
"659",
"*"
],
"is_b_listing": false,
"location": "27.89349,-82.28469"
}
},
"staffer_id": [
599541
],
"variants": [
{
"id": 15646571,
"duration": 40,
"price": 50.0,
"type": "X",
"deposit": 0.0,
"deposit_tax": 0.0,
"prepayment": 0.0,
"prepayment_tax": 0.0,
"promotion": {
"rate": 10.0,
"discount_amount": 10.0,
"discount_type": "R",
"constant": false,
"price": {
"price": 45.0,
"formatted_price": "$45.00"
}
},
"label": "",
"combo_children": [],
"staffer_id": [
599541
],
"latest_prices": [
{
"created": 1724709600.512504,
"price": "50.00"
}
],
"service_price": "$50.00",
"omnibus_price": "$50.00"
}
],
"treatment": {
"id": 363,
"name": "Male Haircut"
},
"treatment_id": 363,
"treatment_parent_id": 6,
"is_available_for_customer_booking": true,
"photos": [],
"is_online_service": false,
"is_traveling_service": false,
"addons_available": false,
"combo_type": null,
"price": 50.0,
"type": "X",
"partner_app_data": {},
"note_text": null
}
]
}
],
"treatment_service_categories": [],
"promoted": true,
"manual_boost_score": 0,
"is_recommended": true,
"max_discount_rate": 10,
"low_availability": false,
"is_renting_venue": false,
"umbrella_venue_name": "Blendz & Bladez Barbershop Brandon",
"contractor_description": "",
"url": "673578_the-blade-runner_hair-salon_15755_riverview",
"best_of_booksy_badge": null,
"accept_booksy_gift_cards": false,
"accept_booksy_pay": false,
"staff": [],
"reviews": [],
"meta": {
"score": 8697.304,
"id": "business:673578",
"item_no": 0
},
"bookmarked": false,
"score": 8697.304
},
"scrapedAt": "2026-10-20T10:46:31.852950+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 tierPrice per resultEquivalent 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.

ActorBest for
Google Maps Business Scraper | $1 per 1,000Discovering complementary local businesses and comparing Booksy coverage with Google Maps listings.
Google Maps Reviews Scraper | Ratings & RepliesAdding 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 a successful response does not guarantee that every business in a market is present. Temporary source restrictions or unavailable records can produce partial results. Confirmed data remains available, and the final summary distinguishes completed collection from incomplete work.

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 and retains progress for resuming the same collection. A stopped or partial run preserves confirmed results and is not reported as a completed collection. The Key-Value Store SUMMARY record reports saved businesses, incomplete requests, and whether collection completed. 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.