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.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
name | string|null |
phone | string|null |
email | string|null |
emails | array|null |
website | string|null |
address | string|null |
street | string|null |
city | string|null |
county | string|null |
state | string|null |
zip_code | string|null |
rating | number|null |
review_count | integer|null |
categories | array|null |
latitude | number|null |
longitude | number|null |
place_id | string|null |
google_maps_url | string|null |
source_url | string|null |
notice | string|null |
notice_type | string|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
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
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