Planity Scraper - Beauty Salons, Contacts & Reviews avatar

Planity Scraper - Beauty Salons, Contacts & Reviews

Pricing

from $1.60 / 1,000 salon results

Go to Apify Store
Planity Scraper - Beauty Salons, Contacts & Reviews

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

Abot API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Categories

Features

Limited permissions

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.

FieldExample
nameExample Salon
urlplanity.com/example-salon-00000-paris
main_typehair_care
street1, Rue Exemple
cityParis
postal_code00000
phone+33000000000
latitude48.85
longitude2.35
opening_hoursMo 10:00-19:00;Tu 10:00-19:00
rating4.8
ratings_count100
reviews_detailReview excerpts (author, date, text, rating)
reviewsCount_pushed10
servicesService menu with price and duration
teamTeam members
rating_detailsWelcome, hygiene, ambiance, service ratings
opening_hours_by_dayHours per weekday
photosPhoto URLs
picturesPhoto list
has_availabilities1
descriptionVenue presentation
languagefr
object_id0000--ExampleId

How to Use

  1. Pick a mode: search by location, or paste links.
  2. Set the category, filters and the maximum number of items.
  3. Run the actor.
  4. 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 ApifyClient
client = 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

ParameterTypeDefaultDescription
modestringsearchSearch by location or paste links.
locationsarrayParisPlain names: cities, arrondissements (Paris 15) or postal codes.
categorystringcoiffeurVenue category.
searchTextstringemptyOptional name filter.
minRatingnumberemptyMinimum rating from 0 to 5.
sortBystringrelevanceRelevance, best rated, price low to high or high to low.
urlsarraysample linksPlanity listing or venue links.
fetchDetailsbooleantrueAdds venue page details: services, team, photos, about, sub-ratings, review excerpts.
maxReviewsinteger20Review excerpts kept per salon; 0 skips them.
maxPagesintegeremptyPages per search; does not cap the run on its own.
maxItemsinteger20Maximum results; 0 means unlimited.
resumeFromRunIdstringemptySkip venues already collected by an earlier run.
incrementalModebooleanfalseReturn only new or updated venues.
stateKeystringemptyName a monitoring campaign.
ignoreFieldsForChangesarrayemptyExtra fields that never mark a venue as updated.
proxyobjectApify Residential proxyConnection settings. Residential is the default and recommended for the most reliable results.
mcpConnectorsarrayemptyConnectors to send results to.
notionParentPageUrlstringemptyNotion parent page.
maxNotifyListingsinteger50Items 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.

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...

👉 Browse all abotapi scrapers

💬 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.