Use case
Find Every Nail Salon in a Sales Territory, With Phone Numbers
Every nail salon, spa and studio in Contra Costa County, CA in one run: 452 shops, 430 with a phone number, sorted into a call list by city.
Say you rep a nail-polish and supply brand, and your territory is Contra Costa County in the East Bay. Your manager wants you calling every independent nail shop in the county by the end of the quarter, and the list you inherited is a two-year-old spreadsheet with half the numbers dead. You could rebuild it from Google Maps by hand: search each of the county’s 25-odd towns, scroll to the bottom, copy each shop, then strip the duplicates where Walnut Creek’s results spill into Pleasant Hill’s. Or you can ask the Nail Salon & Spa Scraper for the county once. (New to it? The step-by-step guide walks through every input field.)
The input
One state, one county. The email lookup is on by default; leave it on if you also want an email column for a follow-up campaign.
{
"state": "CA",
"counties": ["Contra Costa"],
"maxResults": 2000
}
The actor turns the county into its ZIP codes (52 of them) and searches each one, so busy towns are not cut off at Google’s limit of about 150 places per search. It keeps a shop only if its address is inside the county, and it keeps each shop once.
What came back
Our run on 2026-10-30 returned 452 nail shops across 25 cities. The biggest clusters were Concord and Walnut Creek with 57 each, then Antioch (44), Brentwood (39), San Ramon (32), Pleasant Hill (28), Richmond (25) and Lafayette (20).
| What you need for a call list | Shops with it |
|---|---|
| Phone number | 430 of 452 |
| Website | 247 of 452 |
| Google rating | 414 of 452 |
| 100+ Google reviews | 87 |
There were 420 distinct numbers among the 430 phones. A few shops share a line, usually suites in one building with a single front desk, so a dialler that de-duplicates on phone will merge them.
Turning it into a call plan
Export the dataset to CSV and sort by city, so a day of calls is one town. Two columns help you
order the calls:
review_countis a fair proxy for foot traffic. The 87 shops with 100+ reviews are the ones most likely to buy in volume; call them first.ratingtells you how a shop is doing. 204 of the 414 rated shops sit at 4.5 or above.
Keep place_id in your CRM. It is Google’s own ID for the shop, so next quarter’s run lines up
with this one: a new ID is a new shop to call, and a missing ID is a closure to strike off.
Adding email
With the lookup on, the actor reads each shop’s own website and returns the address published there. Expect fewer emails than phones: in this county about a third of the shop websites we could reach published one, about 17% of all shops. Most are Gmail or Yahoo inboxes, because that is the address the owner reads. The actor keeps those and drops the booking platform’s and franchise headquarters’ addresses that show up on the same pages.
What it cost
452 shops at $0.003 is $1.36. With the email lookup on, add $0.002 for each shop where an email was found; at 17% that is about 77 emails, so about $1.51 in total. Apify’s platform usage comes on top, per your plan.
When the manual way is enough
For a single small town, Google Maps itself is fine: Lafayette has 20 shops, and you can copy those in a few minutes. This actor earns its keep at county or state scale, where overlapping searches and Google’s per-search limit make the copy-paste unreliable as well as slow.
If your list of shops came from somewhere else (a trade-show badge scan, an old CRM export) and you only need contacts for the websites on it, the Business Email, Phone & Contact Details Scraper takes the URLs directly.
Last updated 2026-10-30