Building a local lead list with AI:
100 dentists, verified emails, cost per lead
A real run: 100 Austin dental practices from Google Maps, their emails verified, and a personalised first line for each, for $0.19, under 1¢ per verified lead.
Local lead lists are a staple of B2B sales: every dentist, gym or law firm in a city, with a way to reach them and a reason to. Agencies charge per lead, and scraped lists are often half dead. We wanted the real numbers: how many local businesses you can actually reach, what it costs, and whether a model can write an opening line worth sending. Everything below is from one run on 26 October 2026, for a made-up seller of online booking software, in Austin, Texas. Total: $0.19.
We don't publish the practices' names, emails or staff names here. The point is the method and the numbers.
The question
How many dental practices in Austin can we reach by email, how good are those addresses, and what does each usable lead cost?
The data we collected
| Step | Tool | What we asked for | Results | Cost |
|---|---|---|---|---|
| Find practices | Google Maps leads | "dentist" within 15 km of Austin, TX, websites only, with contacts from each site | 100 practices | $0.075 |
| Check emails | Email verification | Every unique email found | 44 emails | $0.066 |
| Read reviews | Google Maps reviews | The 5 newest reviews of 5 practices (for the second round of openers) | 25 reviews | $0.017 |
The rest, about $0.03, was the model calls. The leads tool searches Google Maps and visits each practice's website for emails, phones and social links, so one call gives a list that is already enriched.
What we found
Phones are easy, emails aren't. 99 of the 100 practices have a phone number on Google Maps, and all of them link a social profile. Only 67 list an email on their website, and those 67 share 44 addresses: one oral-surgery group runs 14 locations from the same two inboxes. Counting places instead of inboxes would have overstated the list by half.
Half the emails are risky. Of the 44 addresses, 22 were deliverable, 19 risky and 3 bad. The risky ones were mostly catch-all domains (13), which accept any address so you can't tell if a person reads it, and mail servers that didn't answer (9). 22 of the 44 were role addresses such as info@ or office@, normal for a small practice.
21 practices are actually reachable. By practice: 31 have a deliverable email, 34 only a risky one, 2 only a bad one and 33 none. In unique businesses, that's 21 with a deliverable inbox: a clean, honest list size from a search of 100.
Cost per verified lead: under 1¢. $0.19 for the whole run, or $0.009 per business with a deliverable inbox, the personalised first lines included.
Writing the first line
We asked gpt-5.6-luna, a fast and inexpensive model, for one sentence per practice that uses one true detail from its data, and nothing else. With only the Maps listing to go on, it was accurate and flat:
"[Practice] is listed in [neighborhood] with a 4.9 rating across 258 reviews."
So for five practices we added their five newest Google reviews ($0.017) and asked again, preferring anything about booking, scheduling or the front desk, since that's what the seller cares about. The difference:
"A recent review says your staff accommodated a fast-track appointment for emergency treatment."
"A patient said booking a last-minute appointment online was very easy."
"A patient praised your entire front office and clinical team for creating an atmosphere of ease and assurance."
We checked each line against its review: all of them are true to what the reviewer wrote.
What we'd watch next time
The review behind the online-booking line was written years ago and edited since; it says so itself. "Recent review" was the model's word, not the data's. Send the review date with the text and ask the model to mention only reviews from the past year.
Group by email domain or inbox before you count or contact anyone, or one business gets fourteen emails.
A catch-all domain may well reach a real person. Keep risky addresses for a slower, separate sequence instead of dropping them, and send only to deliverable ones first.
Run it yourself
With an API key in LOVELY_API_KEY and the run_tool and ask helpers from the market research case study:
places = run_tool("google-maps-leads", {"searchTerms": ["dentist"], "location": "Austin, TX, USA", "radius": 15, "maxResults": 100, "websiteFilter": "withWebsite"}, 100)
emails = sorted({e.strip().lower() for p in places for e in (p.get("emails") or [])})
checked = {r["email"]: r["status"] for r in run_tool("email-verify", {"emails": emails}, len(emails))}
leads, seen = [], set()
for p in places:
good = [e.strip().lower() for e in (p.get("emails") or []) if checked.get(e.strip().lower()) == "good"]
if good and good[0] not in seen:
seen.add(good[0])
leads.append({"id": len(leads), "name": p["title"], "email": good[0], "rating": p.get("rating"), "reviews": p.get("reviewCount"), "categories": p.get("categories")})
lines = ask("One sentence per practice using one true detail from its data. Return a JSON array of {id, line}.", leads, model="gpt-5.6-luna")Change the search term and the city for any local market. For a step-by-step version that saves a CSV, see export Google Maps leads to CSV; for the tools behind it, lead generation.
Frequently asked questions
How much does a lead list cost?+
This one: $0.19 for 100 practices searched, 44 emails checked and 21 verified leads with a written first line, under 1¢ each. Tools bill per result (per place, per email, per review) and models per token, from one prepaid balance.
How accurate are the emails?+
Of the 44 found, 22 were deliverable, 19 risky and 3 bad on the day we checked. Always verify before sending: lists decay, and bounces hurt your sending reputation.
Can the model write the whole email?+
It can, but the first line is where personalisation shows, and it is only as good as the facts you give it. Listing data gave accurate but generic lines; five reviews per practice gave specific ones for under half a cent each.
Is it legal to email businesses I find this way?+
Business contact details published on a company's own website are commonly used for B2B outreach, but the rules depend on where you and they are (for example CAN-SPAM in the US, GDPR in the EU). Identify yourself, give a way to opt out, and check the rules that apply to you.