Build a Local Services Lead Pipeline From Maps and Business Websites
Combine Google Maps discovery, website contact enrichment, deduplication, and CRM routing into a repeatable local-services lead workflow.

A local-services pipeline has four distinct jobs: discover businesses, qualify the location, find public contacts, and route the record. Combining everything in one script makes failures hard to diagnose. Keep the stages separate and record counts between them.
Stage 1: discover a narrow market
Run a Maps search with a service and location, such as commercial cleaners in Leeds or HVAC contractors in Phoenix. Save the place ID, category, address, rating, review count, website, and Maps URL. A narrow query makes later outreach easier to justify.
Stage 2: enrich the websites
Send the Maps objects to the Google Maps Contact Enricher. It passes the business fields through and adds public emails, phones, social profiles, and the contact pages it fetched.
run = client.actor("thirdwatch/google-maps-contact-enricher").call(
run_input={
"businesses": qualified_maps_rows,
"maxPagesPerSite": 3,
"concurrency": 5,
"onlyWithContact": False,
}
)Stage 3: deduplicate accounts and branches
Create one account per normalized domain and one location per place ID. A franchise can share a domain while each branch has its own phone, rating, and address. Do not discard the branch layer.
Score records using observable criteria: target category, service area, review count, website available, public email available, and recent website response. Keep the score formula in code or a warehouse model so it can be reviewed.
Stage 4: route with context
Send high-fit accounts to the CRM with the original search query and source URLs. Put no-contact websites in a refresh queue instead of deleting them. Websites change, and a later run may find a newly published contact page.
Track discovery volume, website coverage, enrichment coverage, dedup rate, and accepted CRM records. Those metrics show where to improve the pipeline without blaming the final outreach sequence for weak source data.
Frequently asked questions
How should duplicate branches be handled?
Keep one account keyed by domain and separate location records keyed by Maps place ID. This preserves branch-level details without duplicating the company.
What is a reasonable enrichment batch size?
Start with 50 to 200 domains and concurrency around five. Increase only after measuring target-site errors and CRM update limits.
Related
100 free credits, no credit card.
About 30 real searches. Add the MCP to Claude or Cursor in two minutes.