Planity Scraper - Beauty Salons, Contacts & Reviews
Pricing
from $1.60 / 1,000 salon results
Planity Scraper - Beauty Salons, Contacts & Reviews
Scrape Planity (planity.com) beauty salons across France, including hairdressers, barbers, nail salons and spas. Extract business names, addresses, phone numbers, opening hours, ratings, customer reviews, photos and booking availability signals for lead generation and market research.
Pricing
from $1.60 / 1,000 salon results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Features
Share
Planity Scraper
Collect salon and wellness venue listings from Planity (planity.com) across France: hairdressers, barbers, nail studios, beauty salons, spas, massage, tattoo, fitness and more. Search by city, district or postal code, or paste Planity links, and get one clean record per venue.
Why This Scraper?
- Rich records. Name, full address, coordinates, phone, opening hours (also by day), photos, ratings and review excerpts in every row.
- Services and team. With details on, each salon carries its full service menu with prices and durations, its team, an about text, sub-ratings (welcome, hygiene, ambiance, service) and access information.
- Two ways in, every link shape. Search by plain city name, arrondissement or postal code, or paste listing, page, district, service-page or salon links.
- Booking signals. Online booking availability, appointment and customer counters, and price display settings.
- Category coverage. Fourteen venue categories, from hairdressers to fitness.
- Change tracking. Schedule recurring runs and receive only new or updated venues.
- Safe caps. One clear item cap, with resume support for interrupted runs.
Use Cases
- Lead generation: build contact lists of venues by city and category.
- Market research: compare venue density, ratings and review volume across districts.
- Market monitoring: track new venues and profile changes over time.
- Location analytics: map venues using exact coordinates.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
name | Example Salon |
url | planity.com/example-salon-00000-paris |
main_type | hair_care |
street | 1, Rue Exemple |
city | Paris |
postal_code | 00000 |
phone | +33000000000 |
latitude | 48.85 |
longitude | 2.35 |
opening_hours | Mo 10:00-19:00;Tu 10:00-19:00 |
rating | 4.8 |
ratings_count | 100 |
reviews_detail | Review excerpts (author, date, text, rating) |
reviewsCount_pushed | 10 |
services | Service menu with price and duration |
team | Team members |
rating_details | Welcome, hygiene, ambiance, service ratings |
opening_hours_by_day | Hours per weekday |
photos | Photo URLs |
pictures | Photo list |
has_availabilities | 1 |
description | Venue presentation |
language | fr |
object_id | 0000--ExampleId |
How to Use
- Pick a mode: search by location, or paste links.
- Set the category, filters and the maximum number of items.
- Run the actor.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
Search by keyword:
{ "mode": "search", "locations": ["Lyon"], "category": "barbier", "maxItems": 50 }
Paste links:
{ "mode": "url", "urls": ["https://www.planity.com/coiffeur/paris-75", "https://www.planity.com/coiffeur/paris-75/page-2", "https://www.planity.com/coiffeur/paris-75/75011-paris-11eme", "https://www.planity.com/coiffeur/coupe-femme/paris-75", "https://www.planity.com/y-coiffure-75004-paris"], "maxItems": 100 }
Links that are not a listing or a salon (home page, a category page without a place, other Planity sites) are skipped with a warning.
Recurring monitoring:
{ "mode": "search", "locations": ["Paris"], "incrementalMode": true, "maxItems": 500 }
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("<ACTOR_ID>").call(run_input={"mode": "search", "locations": ["Paris"], "maxItems": 20})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item["city"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('<ACTOR_ID>').call({ mode: 'search', locations: ['Paris'], maxItems: 20 });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length);
Tips
- Use a district such as Lyon 6eme or a postal code to narrow a large city.
- Turn off Add salon details for the quickest runs when you only need the core fields.
- Set Max reviews per salon to 0 to skip review excerpts.
Send results into your apps (MCP connectors)
Optionally send a condensed summary of the results into Notion, Linear, Airtable or Apify through Model Context Protocol connectors. Authorize a connector once in your Apify integrations settings, then select it in the input. The full records always stay in the dataset.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | Search by location or paste links. |
locations | array | Paris | Plain names: cities, arrondissements (Paris 15) or postal codes. |
category | string | coiffeur | Venue category. |
searchText | string | empty | Optional name filter. |
minRating | number | empty | Minimum rating from 0 to 5. |
sortBy | string | relevance | Relevance, best rated, price low to high or high to low. |
urls | array | sample links | Planity listing or venue links. |
fetchDetails | boolean | true | Adds venue page details: services, team, photos, about, sub-ratings, review excerpts. |
maxReviews | integer | 20 | Review excerpts kept per salon; 0 skips them. |
maxPages | integer | empty | Pages per search; does not cap the run on its own. |
maxItems | integer | 20 | Maximum results; 0 means unlimited. |
resumeFromRunId | string | empty | Skip venues already collected by an earlier run. |
incrementalMode | boolean | false | Return only new or updated venues. |
stateKey | string | empty | Name a monitoring campaign. |
ignoreFieldsForChanges | array | empty | Extra fields that never mark a venue as updated. |
proxy | object | Apify Residential proxy | Connection settings. Residential is the default and recommended for the most reliable results. |
mcpConnectors | array | empty | Connectors to send results to. |
notionParentPageUrl | string | empty | Notion parent page. |
maxNotifyListings | integer | 50 | Items exported per connector. |
Connection and plans
Residential is the default and is recommended for the most reliable results; it is billed by traffic on your account. The run tries a cheaper connection first and keeps it while pages load. You can pick the datacenter group in the proxy settings.
If the default connection is refused, the run switches to Apify residential and then to a backup connection on its own, and says so in the log. Apify free plans do not include residential proxies: on a free plan the run continues on a backup connection, and the log shows a short notice. Some pages may still be unavailable there. For residential access, upgrade at https://apify.com/pricing or supply your own proxy URLs.
If you choose residential, the run first tries the cheaper default connection and keeps using it for as long as the site answers.
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"name": "Example Salon","url": "https://www.planity.com/example-salon-00000-paris","main_type": "hair_care","street": "1, Rue Exemple","city": "Paris","postal_code": "00000","phone": "+33000000000","latitude": 48.85,"longitude": 2.35,"opening_hours": "Mo 10:00-19:00;Tu 10:00-19:00","rating": 4.8,"ratings_count": 100,"has_availabilities": 1,"language": "fr"}
Plan Requirement
The actor runs on any Apify plan that can run actors. Billing follows the pricing shown on the Store page.
FAQ
How much does a run cost?
You pay per run start, per venue returned and, when details are on, per enriched venue. Review excerpts are counted in blocks of 10: every started block of 10 delivered reviews (Max reviews per salon, 20 by default) adds one more detail unit to that venue, and a venue with no details or no reviews adds none. Set Max items and Max reviews per salon to control the total.
Is it legal to scrape Planity?
The actor reads publicly visible venue information. You are responsible for using the data in line with applicable law and the site terms, including data protection rules.
Can I schedule runs?
Yes. Use Incremental mode on a schedule to receive only changes.
Why did a run return nothing?
The location may not match a known place (an entry that is not an exact city, district or postal-code match is skipped with a warning, never guessed), or the filters may be too strict. Try a larger city or relax the filters.
Can I use it with AI tools?
Yes, through the Apify MCP server or the connectors above.
🔗 More scrapers you might like
Pair this actor with these related scrapers from the same team:
| 🧩 Fresha Scraper Scrape Fresha salon and spa listings: salon profiles, service menus with prices and... | 🧩 Booksy Scraper Scrape Booksy beauty businesses across the US, UK and Poland by category, location or... |
| 🛒 Wolt Scraper Scrape Wolt restaurants and full menus by city or URL. Extract 60+ fields including... | 🧩 Fever Scraper Scrape Fever events by city, category, keyword or URL. Extract from-prices, venues, dates... |
| 📇 PagesJaunes Scraper Scrape PagesJaunes.fr (French Yellow Pages) directory listings across France. Extract... | 📇 Yellow Pages NZ Scrapes directory listings from Yellow.co.nz (New Zealand Yellow Pages). Extract... |
💬 Support
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.