Austin dentists — Google Maps local pull
Sample deliverable
What was asked
Show what the system produces when an agency wants a local-services lead list — dentists, law firms, HVAC contractors, chiropractors — sourced without paying for a data vendor.
What the system did
The pipeline drives the public Google Maps UI with a headless browser (Playwright). Given a search term ("dentist") and a city ("Austin, TX"), it:
- Loads
maps.google.com/maps/search/dentist+Austin,+TX - Scrolls the results panel to surface up to N unique listings
- For each listing, opens the detail card and pulls: business name, website, phone
- Normalizes each row to the 13-column
scraped_leadsschema and writes them to Postgres
No API key, no paid credits, no vendor dependency — and importantly, no “fake-looking” contact info: every row here is a real Austin dental practice you can verify in Google Maps right now.
Headline numbers
- 25 practices returned
- 24 of 25 have a resolved website domain (96%)
- 24 of 25 have a company name matching the business card
- Sample includes ATX Family Dental, North Austin Dentistry, Austin Dental Works, Tech Ridge Dental, and 21 others
What a pilot engagement gets on top of this
This sample stops at the raw scrape. A real outbound retainer plugs this CSV into:
- Email verification — run each domain through MX/SMTP/catch-all checks so you don’t send to dead mailboxes.
- Opener generation — Claude writes a 2-sentence personalized cold email opener per lead, using the practice name, city, and dentistry-specific hooks.
- Warmed-inbox outbound — send from a pre-warmed Gmail/Google-Workspace inbox, track opens + replies, and classify positive vs negative replies automatically.
- Meeting booking — positive replies route to a calendar link; the system updates the
outreach_contactsrow with the booking.
All of the above is wired into the same database the scraper writes to — the lead list is just the front door.
Caveats
- Volume is rate-limited by design: the scraper respects ≤ 2 searches/min, ≤ 200 results/search to stay far under Google’s bot-detection thresholds. For bigger runs we either split across inputs or add IP rotation.
- Occasional profile pages are slow to load, so ~4% of rows skip enrichment (company/domain/phone may be missing). In this sample, one of 25 landed without a company/domain.
- The Maps UI is public-facing HTML, so structural changes on Google’s side can require a selector update. We treat the scraper as monitored maintenance, not a fire-and-forget tool.
- Phone numbers aren’t included in this particular export because the UI only surfaces them after a second click-through we didn’t run for the demo. A real pilot enables that step.
| id | full_name | company | domain | phone | country | first_name | last_name | title | linkedin_url | industry | seniority | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ATX Family Dental | ATX Family Dental | www.atxfamilydental.com | +1 512-717-3147 | Austin, TX | |||||||
| 2 | Austin Lifetime Dental | Austin, TX | ||||||||||
| 3 | North Austin Dentistry | North Austin Dentistry | northaustindentist.com | +1 512-489-9933 | Austin, TX | |||||||
| 4 | Austin Dental Company | Austin Dental Company | www.austindentalco.com | +1 512-710-4783 | Austin, TX | |||||||
| 5 | Austin Dental Works | Austin Dental Works | www.austindentalworks.com | +1 512-877-9822 | Austin, TX | |||||||
| 6 | 38th Street Dental | 38th Street Dental | www.myaustindds.com | +1 737-260-5523 | Austin, TX | |||||||
| 7 | Austin City Dental | Austin City Dental | www.austincitydental.com | +1 512-451-8256 | Austin, TX | |||||||
| 8 | Tech Ridge Dental | Tech Ridge Dental | www.techridgedental.com | +1 512-821-2394 | Austin, TX | |||||||
| 9 | Forest Family Dentistry | Forest Family Dentistry | forestfamily.com | +1 512-334-9894 | Austin, TX | |||||||
| 10 | Austin Family Dentist | Austin Family Dentist | austinfamilydentist.com | +1 512-346-5738 | Austin, TX | |||||||
| 11 | Swish Dental Downtown | Swish Dental Downtown | www.swishsmiles.com | +1 512-713-1099 | Austin, TX | |||||||
| 12 | Austin Artistic Dental | Austin Artistic Dental | www.austinartisticdental.com | +1 512-292-9209 | Austin, TX | |||||||
| 13 | Smile Haus Austin | Smile Haus Austin | smilehausdental.com | +1 512-454-5153 | Austin, TX | |||||||
| 14 | High Point Dentistry | High Point Dentistry | highpointsmilestx.com | +1 512-473-8444 | Austin, TX | |||||||
| 15 | Walden Dental | Walden Dental | www.waldendentaltx.com | +1 512-337-8560 | Austin, TX | |||||||
| 16 | Austin Advanced Dentistry | Austin Advanced Dentistry | austinadvanceddentistry.com | +1 512-331-6677 | Austin, TX | |||||||
| 17 | TRU Dentistry Austin | TRU Dentistry Austin | www.trudentistryaustin.com | +1 737-250-8538 | Austin, TX | |||||||
| 18 | Swish Dental - Domain | Swish Dental - Domain | www.swishsmiles.com | +1 512-617-0110 | Austin, TX | |||||||
| 19 | Daylight Dental South Austin | Daylight Dental South Austin | www.daylightdental.com | +1 512-548-8584 | Austin, TX | |||||||
| 20 | Breeze Dental | Breeze Dental | www.breezeoralcare.com | +1 512-745-8825 | Austin, TX |
- REPORT.md 1.8 KB
- leads_dentist.csv 2.7 KB
- summary.json 444 B
Full write-up: https://pub-4cc0fb90bf0345f9a637159679086a33.r2.dev/samples/2026-04-20/dentist-austin/REPORT.md