← Health board

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.

100%golden-diff pass
Run it on Apify → verified nightly

Verification

100%golden-diff success
4canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
namestring|null
phonestring|null
emailstring|null
emailsarray|null
websitestring|null
addressstring|null
streetstring|null
citystring|null
countystring|null
statestring|null
zip_codestring|null
ratingnumber|null
review_countinteger|null
categoriesarray|null
latitudenumber|null
longitudenumber|null
place_idstring|null
google_maps_urlstring|null
source_urlstring|null
noticestring|null
notice_typestring|null

Sample row

{
  "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

FieldTypeReqDefaultDescription
state string no "CA" The US state to search. On its own it searches the whole state; add counties, cities or ZIP codes below to narrow it.
counties array no [] 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.
cities array no ["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.
zipCodes array no [] Only these 5-digit ZIP codes. Combined with counties and cities if you fill more than one.
includeEmails boolean no true On 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.
maxResults integer no 1000 Cap 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.
maxPagesPerSite integer no 6 How many pages of each shop's website the email lookup reads: the homepage plus its contact and about pages.
proxyConfiguration object no {"useApifyProxy":true} Apify's datacenter proxy by default, which is what this actor was tested with.

Pricing

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

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

Guides & use cases

Related actors