Nail Salon & Spa Scraper: Email, Phone & Address avatar

Nail Salon & Spa Scraper: Email, Phone & Address

Pricing

from $0.003 / nail shop

Go to Apify Store
Nail Salon & Spa Scraper: Email, Phone & Address

Nail Salon & Spa Scraper: Email, Phone & Address

Every nail salon, nail spa and nail studio in a US state, county, city or ZIP code: name, phone, website, address, county, rating and reviews from Google Maps, plus each shop's email from its own website.

Pricing

from $0.003 / nail shop

Rating

0.0

(0)

Developer

ScrapeBench

ScrapeBench

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

3

Monthly active users

4 days ago

Last modified

Categories

Security

Limited permissions

Share

Pain points

  • A Google Maps search for "nail salon in Houston" stops at about 150 shops, so a city-wide list is never complete.
  • Generic Google Maps scrapers make you build the search terms, merge the duplicates and filter out hair salons and supply stores yourself.
  • Most nail shops' email is a Gmail or Yahoo address on their own website, and generic email finders either flag it as "not the business's domain" or mix in the booking platform's and the franchise's addresses.
  • Copying shops one by one out of Google Maps into a spreadsheet takes hours for a single county.

What we solve

  • One input for the whole job: a state, plus optional counties, cities or ZIP codes. The actor works out the ZIP codes and the searches.
  • Searches ZIP code by ZIP code, so a big city comes back complete instead of stopping at Google's limit for one search.
  • Keeps only nail shops, inside your area, once each (deduplicated by Google's place ID).
  • An email lookup on each shop's own website (on by default, can be switched off) that keeps the shop's inbox and drops platform and franchise addresses, charged only when an email is found.

Summary

Pick a state, and optionally counties, cities or ZIP codes, and get every nail salon, nail spa and nail studio Google Maps lists there: one row per shop with its name, phone number, website, street address, city, county, ZIP code, Google rating, review count, categories, coordinates and a Google Maps link. One Google Maps search stops at about 150 places, which undercounts any big city, so the actor splits your area into its ZIP codes, searches each one, keeps only shops whose address falls inside your area, and removes duplicates by Google's own place ID. By default it also visits each shop's own website and returns the email published there, keeping the shop's own inbox (including the Gmail and Yahoo addresses most nail shops use) and dropping booking-platform, franchise-headquarters and template addresses.

Who it's for

  • Nail-supply and beauty-product distributors building a sales territory
  • Sales teams selling salon software (booking, POS, payroll) to independent nail shops
  • Marketing agencies running local campaigns for beauty businesses
  • Insurance, payment-processing and equipment-leasing reps prospecting small salons

How to use

Set the input, run the actor, and collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API). Example input:

{
"state": "CA",
"cities": [
"Lafayette"
],
"includeEmails": true
}

See Inputs below for every available field.

What you get

One row per record:

FieldDescription
nameThe shop's name on Google Maps
phonePhone number as Google Maps lists it
emailThe shop's email from its own website (null when none was found or the lookup is switched off)
emailsEvery address of the shop's own found on its website
websiteThe website the shop lists on Google Maps
addressFull street address
streetStreet line(s)
cityCity
countyCounty of the shop's ZIP code
stateTwo-letter state code
zip_code5-digit ZIP code
ratingGoogle rating, 1 to 5
review_countNumber of Google reviews
categoriesGoogle Maps categories, primary first
latitudeLatitude
longitudeLongitude
place_idGoogle's own place ID, unique per row
google_maps_urlOpens the shop on Google Maps
source_urlWhere the row came from (its Google Maps link)

Sample:

{
"name": "Chloe Nails Lounge",
"phone": "(925) 299-6779",
"email": "chloetran112@gmail.com",
"emails": [
"chloetran112@gmail.com"
],
"website": "https://chloenailslounge.com/",
"address": "3570 Mount Diablo Blvd, Lafayette, CA 94549",
"street": "3570 Mount Diablo Blvd",
"city": "Lafayette",
"county": "Contra Costa",
"state": "CA",
"zip_code": "94549",
"rating": 4.6,
"review_count": 117,
"categories": [
"Nail salon"
],
"latitude": 37.8920232,
"longitude": -122.1210429,
"place_id": "ChIJTaBKdlpihYARTMjamFFwOwY",
"google_maps_url": "https://www.google.com/maps/search/?api=1&query=Chloe%20Nails%20Lounge&query_place_id=ChIJTaBKdlpihYARTMjamFFwOwY",
"source_url": "https://www.google.com/maps/search/?api=1&query=Chloe%20Nails%20Lounge&query_place_id=ChIJTaBKdlpihYARTMjamFFwOwY"
}

Inputs

FieldRequiredTypeDefaultDescription
statenostring"CA"The US state to search. On its own it searches the whole state; add counties, cities or ZIP codes below to narrow it.
countiesnoarray[]Only these counties of the state, e.g. Contra Costa or Harris. "County" is optional and spelling is forgiving. A name that is not in the state is skipped and a free row lists the real names.
citiesnoarray["Lafayette"]Only these cities, by their postal name, e.g. Lafayette or Houston. A big city is searched ZIP code by ZIP code, so nothing is lost to Google's limit on one search.
zipCodesnoarray[]Only these 5-digit ZIP codes. Combined with counties and cities if you fill more than one.
includeEmailsnobooleantrueOn by default: visit each shop's own website and return the email published there. Charged separately, only for shops where an email is found. Adds a few seconds per website; turn it off for phone and address only.
maxResultsnointeger1000Cap on the number of shops returned for the WHOLE run (not per city or county). A spend cap: the run stops once it has this many.
maxPagesPerSitenointeger6How many pages of each shop's website the email lookup reads: the homepage plus its contact and about pages.
proxyConfigurationnoobject{"useApifyProxy": true}Apify's datacenter proxy by default, which is what this actor was tested with.

Pricing (Pay Per Event)

You pay per result (salon) — no charge for empty runs. Example: 1000 nail shops at $0.003/result ≈ $3.00.

The email lookup is on by default and charged separately (switch it off with "Look up each shop's email"): $0.002 per shop where an email is found on its website (event "Email found"); a shop with no email found costs nothing extra. Searches go through Apify Proxy, billed by Apify as platform usage on your plan, like compute.

Use cases

  • Build a territory list: every nail shop in the counties a sales rep covers, with phone numbers, in one run.
  • Email outreach: the shop's own inbox, found on its website, for a cold-email campaign.
  • Market sizing: count nail shops per county or ZIP code, with ratings and review counts, before opening a location or launching a product.
  • Keep a CRM current: re-run a county each month and compare place IDs to spot new and closed shops.

Why this actor

  • Complete big cities: searched ZIP code by ZIP code, never one capped city search.
  • Only nail shops, only in your area, once each, keyed on Google's place ID.
  • A salon-aware email lookup: keeps the shop's own Gmail or Yahoo inbox, drops booking-platform and franchise-HQ addresses, and costs nothing when no email is found.

Limitations & updates

Covers the 50 US states and DC. Data is what Google Maps publishes about each shop at the time of the run: a shop with no phone or website on Google Maps has none here, and Google's categories decide most of what counts as a nail shop. The email lookup reads only the shop's own public website (homepage plus contact/about pages), does not guess or verify addresses, and skips Facebook and Instagram pages. Within each ZIP code the actor searches "nail salon" and adds "nail spa" and "nail studio" where that first search reaches Google's limit; in a 10-ZIP test this found 96% of what all three terms found everywhere. ZIP-to-county data is the GeoNames US postal-code file (CC BY 4.0).

FAQ

What area can I search?

Any US state (plus DC). On its own, the state searches the whole state; add counties, cities or 5-digit ZIP codes to narrow it, and they combine. County names are forgiving ("Contra Costa" or "Contra Costa County"); a name that is not in the state is skipped, and a free row lists the real names.

Why ZIP code by ZIP code?

One Google Maps search stops at about 150 places (we measured 163 for "nail salon in Houston, TX" and 150 for Lafayette, CA on 2026-10-30). The actor searches each ZIP code in your area near its own centre and keeps only shops whose address ZIP is in your area, so a big city is not cut off.

Which businesses count as nail shops?

Places Google Maps files under a nail category ("Nail salon" and similar), plus shops with "nail" in their own name that Google files under something broader, like "Beauty salon". Nail-supply stores are left out. You do not pick salon, spa or studio; all three are included.

How does the email lookup work?

Unless you switch "Look up each shop's email" off, the actor reads the homepage and contact/about pages of each shop's own website (up to 6 pages by default) and returns the emails published there. It keeps the shop's own address, including the Gmail, Yahoo and AOL inboxes most nail shops use, and drops booking-platform addresses (Vagaro, GlossGenius, Square), suite-chain and franchise headquarters inboxes, and template placeholders. Shops whose website is a Facebook or Instagram page are skipped.

How many shops have an email?

Fewer than have a phone. Across Contra Costa County, CA (2026-10-30), 33% of the shop websites we could reach published an email, which is 17% of all shops; 95% of shops had a phone number and 55% a website.

How am I charged?

$0.003 per nail shop returned. With the email lookup on (the default), another $0.002 per shop where an email was found; no email found, no extra charge. Free rows (a refused search, an unknown county, input to fix) are never charged. Set "Maximum shops" to cap a run's spend.

How long does a run take?

Measured on 2026-10-30: Contra Costa County, CA (52 ZIP codes, 452 shops) in about 13 seconds of searching, and the whole of Oregon (481 ZIP codes, 1,371 shops) in about 48 seconds. The email lookup adds a few seconds per website.

What if Google refuses a search?

Each search is retried on a fresh proxy address. If a ZIP code still fails, the shops found elsewhere are delivered and a free row lists the ZIP codes to run again, so a refusal never reads as "no salons here".

Which actor to choose

Works with:

  • Business Email, Phone & Contact Details Scraper — You already have a list of websites and want email, phone and social links for each.

Guides & use cases

Written up on scrapebench.dev — the bench that runs and verifies this actor against the live source every night:

More actors, coverage and nightly verification results: scrapebench.dev

Works with AI assistants (MCP)

Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the MCP tab on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.

Then just ask:

"Find every nail salon in Lafayette, California, with its phone number and email."

One city is a small, fast first call (about 20 shops). Widen it to a county, or the whole state, once the rows look right. Runs started this way bill exactly like any other run.

Data & lawful use

This actor collects publicly available information that Google (Google Maps) and the shops' own websites publishes for public lookup — licence records, business listings and the contact details professionals list there. Some of it identifies individuals (sole proprietors, licence holders, agents), so treat any names, phone numbers and emails in your results as personal data.

When you run this actor, you decide what is collected and what it is used for, so you are the controller of that data and we act only as your processor (Apify Standard Actor Contract). You need a lawful basis for your use, must honour opt-out and deletion requests, and must follow the marketing rules that apply to you (CAN-SPAM, TCPA, GDPR, CCPA and similar). Don't use the output for unsolicited bulk messaging, for screening covered by the FCRA, or for anything the source's own terms forbid.

Your results are stored in your own Apify account. We don't keep a copy of your results and don't sell or share them.

Disclaimer

This is an independent tool. It is not affiliated with, endorsed by or sponsored by Google (Google Maps) and the shops' own websites. Names and marks are used only to describe the data source. Records are provided as published by the source and may be out of date or incomplete. For anything consequential (hiring, a permit, a legal decision), confirm the record with the issuing agency. You are responsible for making sure your use complies with applicable law and the source's terms.

Need help?

Open an issue on this actor's Issues tab and we'll respond there. Bug reports, missing fields and feature requests are all welcome. Guides and examples: scrapebench.dev.

If you are a person named in this data and want your record removed from our copy, email apify-help@scrapebench.dev; the source agency remains the official record.

Your run may be used to improve our services. If something looks off, or you want this actor to fit your use better, please share your run data with us: Apify Console → Settings → Security → Share run data with developers. It lets us see exactly what went wrong and keep improving the actor.