Local Business Lead Enricher & Website Contact Auditor
Pricing
from $8.00 / 1,000 results
Local Business Lead Enricher & Website Contact Auditor
Enrich Google Maps Scraper results and local business lists with emails, phones, social links, website checks, contact pages, and transparent CRM-ready lead scores.
Pricing
from $8.00 / 1,000 results
Rating
0.0
(0)
Developer
Mezhnun Orudzhaliev
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Turn Google Maps Scraper datasets, local business lists, CRM exports, or website URLs into cleaner CRM-ready leads.
This Apify Actor enriches existing local business records by visiting public business websites, extracting public contact information, auditing website quality, normalizing phone numbers, detecting conversion signals, and returning scored lead records that are ready for sales, outreach, research, or CRM import.
It works especially well as a second-step enrichment tool after Google Maps Scraper, Google Places Scraper, or any local business scraper that returns company names, websites, phone numbers, ratings, categories, and addresses.
This Actor is not a Google Maps scraper. It does not discover new businesses from Google Maps. It enriches business records and websites that you already provide.
What You Can Use It For
Use this Actor when you already have a list of local businesses and want to improve the data quality before sending it to sales, marketing, or a CRM.
Common use cases:
- Enrich Google Maps Scraper results with emails, phone numbers, social links, contact pages, booking links, and menu pages.
- Clean and normalize restaurant, salon, clinic, venue, shop, agency, and professional service leads.
- Find missing business contact data from public websites.
- Audit local business websites for CRM-readiness.
- Score leads before cold email, cold calling, agency outreach, or local sales campaigns.
- Convert messy scraped business data into structured output for HubSpot, Pipedrive, Salesforce, Airtable, Google Sheets, or internal data pipelines.
- Keep Google Maps records even when the business has no website.
- Identify unreachable, blocked, expired, or low-quality websites.
Best For
This Actor is useful for:
- Lead generation agencies
- Local SEO agencies
- Sales development teams
- Restaurant and hospitality data projects
- B2B enrichment workflows
- CRM data cleaning teams
- Growth marketers
- Market researchers
- Data teams building local business databases
- Developers building automation around Apify datasets
Typical industries:
- Restaurants
- Cafes
- Bars
- Salons
- Clinics
- Dentists
- Gyms
- Hotels
- Venues
- Retail stores
- Professional services
- Local service businesses
Main Features
- Reads from an Apify Dataset ID or direct website URLs.
- Works with Google Maps Scraper and Google Maps-like datasets.
- Supports fields such as
title,name,companyName,website,url,phone,address,street,city,state,countryCode,categoryName,categories,rating,reviewsCount, andplaceId. - Preserves Google Maps records without websites as source-only leads.
- Crawls the homepage and likely contact, about, location, legal, booking, reservation, and menu pages.
- Uses
CheerioCrawlerfor fast HTML crawling and low memory usage. - Extracts public emails from websites.
- Handles common public email obfuscation such as
name [at] domain [dot] com. - Filters fake, example, technical, and placeholder emails.
- Extracts and normalizes phone numbers from source records,
tel:links, and visible page text. - Supports international phone normalization with
defaultCountryCode. - Filters dates, IDs, tracking numbers, prices, coordinates, card-like numbers, demo numbers, and other phone false positives.
- Extracts social profile links from Instagram, Facebook, LinkedIn, YouTube, TikTok, WhatsApp, and Telegram.
- Filters noisy social URLs such as posts, reels, stories, watch pages, and vendor profile links.
- Detects contact pages, booking links, menu pages, contact forms, SSL, HTTP status, redirects, and schema.org local business data.
- Detects unreachable websites, 403/404 responses, and possible parked or expired domains.
- Deduplicates leads by normalized domain, phone number, and company/address signals.
- Keeps the richest duplicate record and merges useful contact fields.
- Returns a transparent 0-100 lead score, lead quality label, and sales reason.
- Produces clean JSON records suitable for CSV, Excel, Google Sheets, CRM import, or API workflows.
Why Use This Actor After Google Maps Scraper?
Google Maps Scraper is great for discovering businesses. But many local business datasets still need a second enrichment step.
Google Maps results often contain:
- Business name
- Google Maps URL
- Phone number
- Rating
- Review count
- Category
- Address
- Website URL, when available
This Actor adds website-level enrichment:
- Public email addresses
- Better website phone extraction
- Contact page URL
- Booking or reservation URL
- Menu URL
- Social media profiles
- Website status
- SSL status
- Contact form detection
- Website quality signals
- Lead score
- CRM-ready sales reason
If a Google Maps record has no website, the Actor still outputs the lead instead of dropping it.
Input Options
You can provide either:
- An Apify Dataset ID from Google Maps Scraper or another local business scraper.
- A direct list of business website URLs.
- Both. Dataset records are processed first, then direct URLs until
maxItemsis reached.
Input Example
{"apifyDatasetId": "YOUR_GOOGLE_MAPS_DATASET_ID","startUrls": ["https://example-restaurant.com","https://example-salon.com"],"maxItems": 100,"maxPhonesPerSite": 10,"defaultCountryCode": "US","maxPagesPerWebsite": 5,"maxConcurrency": 5,"requestTimeoutSecs": 30,"crawlContactPages": true,"extractEmails": true,"extractPhones": true,"extractSocials": true,"checkWebsiteProblems": true,"makeLeadScore": true,"allowedDomainsOnly": true,"debugMode": false}
Important Input Fields
| Field | Description |
|---|---|
apifyDatasetId | Dataset ID from Google Maps Scraper or another local business scraper. |
startUrls | Direct business website URLs to enrich. |
maxItems | Maximum number of input businesses to process. |
maxPagesPerWebsite | Maximum number of pages to crawl per business website. |
maxPhonesPerSite | Maximum normalized phone numbers to keep per website. |
defaultCountryCode | Optional ISO 3166-1 alpha-2 country code such as US, DE, GB, FR, IT, ES, or CA. Useful when .com websites contain local phone numbers. |
allowedDomainsOnly | Keeps crawling on the original business website domain. |
debugMode | Adds more diagnostic information and debug warnings. |
Google Maps Dataset Support
This Actor supports Google Maps-like records with fields such as:
{"title": "Example Restaurant","totalScore": 4.6,"reviewsCount": 120,"street": "1 Main Street","city": "New York","state": "New York","countryCode": "US","website": "https://example.com","phone": "(212) 555-1234","categories": ["Restaurant"],"url": "https://www.google.com/maps/...","categoryName": "Restaurant","placeId": "place123"}
Mapping behavior:
title,name, orcompanyNamebecomescompanyName.websitebecomessourceWebsite.- Google Maps
urlis preserved assource.googleMapsUrland is not crawled as a business website. totalScorebecomessource.rating.reviewsCountbecomessource.reviewsCount.phoneis normalized and stored inphoneswhen valid.countryCodeis used for local phone normalization.street,city,state, andcountryCodeare used to build the source address.
Output Example
{"companyName": "Example Restaurant","sourceWebsite": "https://example.com","finalUrl": "https://www.example.com/","domain": "example.com","emails": ["info@example.com"],"phones": ["+12125551234"],"socials": {"instagram": ["https://instagram.com/example"],"facebook": [],"linkedin": [],"youtube": [],"tiktok": [],"whatsapp": [],"telegram": []},"contactPage": "https://example.com/contact","bookingUrl": "https://example.com/reservations","menuUrl": "https://example.com/menu","audit": {"hasWebsite": true,"websiteStatusCode": 200,"finalUrl": "https://www.example.com/","hasSsl": true,"hasContactPage": true,"hasContactForm": true,"hasBookingLink": true,"hasMenuPage": true,"hasSocialLinks": true,"hasEmail": true,"hasPhone": true,"hasSchemaOrgLocalBusiness": true,"pageCountCrawled": 4},"source": {"apifyDatasetId": "abc123","googleMapsUrl": "https://www.google.com/maps/...","placeId": "place123","categoryName": "Restaurant","categories": ["Restaurant"],"rating": 4.6,"reviewsCount": 120,"address": "1 Main Street, New York, NY","street": "1 Main Street","city": "New York","state": "New York","countryCode": "US","originalPhone": "(212) 555-1234","phone": "+12125551234"},"leadScore": 82,"leadQuality": "high","salesReason": "Has website, email, phone, social links, and contact form. Good CRM-ready lead.","warnings": [],"errors": []}
Output Fields
| Field | Description |
|---|---|
companyName | Business name from the input dataset or URL. |
sourceWebsite | Website URL from the source dataset or direct input. |
finalUrl | Final crawled URL after redirects. |
domain | Normalized final domain. |
emails | Public business email addresses found on the website. |
phones | Normalized phone numbers in international E.164 format when possible. |
socials | Social profile links grouped by platform. |
contactPage | Best detected contact, location, about, legal, or similar business page. |
bookingUrl | Booking, reservation, appointment, or private party page. |
menuUrl | Menu page for restaurants, cafes, bars, and similar businesses. |
audit | Website quality and enrichment signals. |
source | Original source metadata from Google Maps or another dataset. |
leadScore | Transparent score from 0 to 100. |
leadQuality | high, medium, or low. |
salesReason | Human-readable explanation of the score. |
warnings | Non-fatal data quality or website warnings. |
errors | Per-record errors, if any. |
Lead Scoring
The Actor assigns a transparent 0-100 lead score.
Positive signals include:
- Valid website
- HTTPS
- Email found
- Phone found
- Contact page found
- Contact form found
- Social links found
- Booking, reservation, or menu link found
- schema.org local business data found
Negative signals include:
- Website unreachable
- HTTP errors such as 403 or 404
- No contact data found
- Possible noisy phone extraction
- Parked or expired domain signals
- Weak or incomplete website enrichment
Quality buckets:
high: strong CRM-ready leadmedium: usable lead with missing enrichment signalslow: weak, source-only, unreachable, or low-confidence lead
Records Without Websites
If a Google Maps or source record has no website, the Actor still returns a lead.
For source-only leads, it preserves:
- Company name
- Phone number, when available
- Address
- Category
- Rating
- Reviews count
- Google Maps URL
- Place ID
This is useful because many local businesses have no website but still have a valid phone number and Google Maps profile.
Failed, Blocked, Or Unreachable Websites
If a website returns a 403, 404, timeout, DNS error, or similar failure, the Actor does not crash.
It returns a partial lead with:
- Source data
- Normalized source phone, when available
- Website status code, when known
- Warning message
- Lower lead score
This makes large local business audits more reliable because one blocked website does not break the whole run.
Email Extraction
The Actor extracts public emails from website HTML and visible text. It also handles common public obfuscation patterns.
It filters common false positives such as:
example.comtest.comlocalhostnoreplyno-replydonotreply- technical monitoring endpoints
- fake template emails such as
info@yoursite.com
Phone Extraction And Normalization
Phones are collected from:
- Source dataset records
tel:links- Visible website text
The Actor normalizes valid numbers to international format when possible.
To improve phone normalization for local numbers, set:
{"defaultCountryCode": "US"}
Examples:
(212) 555-1234withUSbecomes+12125551234.030 2391 0482withDEbecomes+493023910482.
The Actor aggressively rejects phone-like false positives such as dates, prices, IDs, coordinates, tracking codes, card-like numbers, versions, and demo numbers.
Social Link Extraction
The Actor extracts likely business profile links for:
- YouTube
- TikTok
- Telegram
It filters noisy URLs such as:
- Instagram posts and reels
- Instagram stories
- Facebook events and photo URLs
- YouTube watch URLs
- Vendor or platform social profiles when they are unlikely to belong to the business
How To Use With Google Maps Scraper
- Run Google Maps Scraper or another local business scraper.
- Open the scraper run.
- Go to the default dataset.
- Copy the Dataset ID.
- Open this Actor.
- Paste the Dataset ID into
apifyDatasetId. - Set
defaultCountryCode, for exampleUS,DE,GB, orFR. - Start with
maxItems: 25for a test run. - Increase
maxItemsfor production. - Export results as JSON, CSV, Excel, or connect the dataset to your CRM workflow.
Common Workflows
Google Maps Scraper To CRM
- Scrape local businesses with Google Maps Scraper.
- Pass the dataset ID into this Actor.
- Export enriched leads.
- Filter leads by
leadQuality,leadScore,emails,phones, orwarnings. - Import into HubSpot, Pipedrive, Salesforce, Airtable, Google Sheets, or a custom CRM.
Local SEO Agency Audit
- Provide a list of business websites.
- Find missing contact pages, missing forms, missing emails, weak websites, or expired domains.
- Prioritize outreach based on
leadScoreandsalesReason.
Restaurant Lead Enrichment
- Use Google Maps Scraper to collect restaurants in a city.
- Run this Actor to find emails, phone numbers, menus, booking pages, and social profiles.
- Export CRM-ready restaurant leads.
Recommended Settings
Small test run
{"maxItems": 25,"maxPagesPerWebsite": 5,"maxConcurrency": 2,"debugMode": false}
Production run
{"maxItems": 500,"maxPagesPerWebsite": 5,"maxConcurrency": 5,"debugMode": false}
More careful audit
{"maxItems": 100,"maxPagesPerWebsite": 10,"maxConcurrency": 2,"debugMode": true}
Limitations
- This Actor does not discover businesses. It enriches business records and websites you provide.
- It does not scrape Google Maps directly.
- It does not use paid email verification, phone verification, WHOIS, Google APIs, or proprietary databases.
- It cannot extract data hidden behind logins, CAPTCHAs, paywalls, blocked pages, or heavy client-side rendering.
- It uses HTML crawling by default. JavaScript-rendered contact data may be missed.
- Phone normalization depends on country inference and
defaultCountryCodefor local numbers. - Some third-party platform emails or social links may still require manual review.
- Website terms, privacy laws, and outreach regulations vary by jurisdiction.
FAQ
Is this a Google Maps scraper?
No. This Actor does not scrape Google Maps. It enriches datasets created by Google Maps Scraper or similar local business scrapers.
Can I use it with Google Maps Scraper?
Yes. Copy the default Dataset ID from your Google Maps Scraper run and paste it into apifyDatasetId.
Can I use it without Google Maps Scraper?
Yes. You can provide direct business website URLs in startUrls.
Does it find emails?
Yes. It extracts public business emails from source websites and filters common fake, example, technical, and placeholder emails.
Does it normalize phone numbers?
Yes. It normalizes valid phone numbers to international format when possible. Use defaultCountryCode for local numbers on generic domains.
Does it crawl social media pages?
No. It extracts social profile links but does not crawl social media platforms.
Does it use Playwright?
No. It uses CheerioCrawler by default for speed and lower memory usage.
Can it handle websites without contact pages?
Yes. It still returns whatever contact, website, source, and audit data is available.
What happens if a website is blocked or returns 403?
The Actor outputs a partial lead with source data, website status, warning, and a lower lead score.
Can I export to CSV or Excel?
Yes. Apify datasets can be exported as JSON, CSV, Excel, XML, RSS, or JSONL.
Privacy And Legal Note
This Actor only extracts publicly available business contact data from user-provided websites and user-provided datasets.
You are responsible for using the results lawfully, respecting website terms, privacy laws, data protection rules, anti-spam laws, and outreach regulations in your jurisdiction.
Local Development
npm installnpm run lintnpm run typechecknpm testnpm run buildapify run
The sample local input is stored in:
storage/key_value_stores/default/INPUT.json
Related Keywords
Google Maps lead enrichment, Google Maps Scraper enrichment, local business lead enrichment, business contact finder, email extractor, phone number extractor, local business email finder, website contact scraper, restaurant lead scraper, CRM lead enrichment, Apify lead generation, local SEO audit, business website auditor, Google Places enrichment, contact data extraction, sales lead enrichment, B2B lead enrichment, restaurant email finder, local business database cleaner, website audit scraper.