Local Business Lead Enrichment Engine
Pricing
Pay per usage
Local Business Lead Enrichment Engine
Find and enrich local business leads from Google Places, Yelp, and BBB. Extracts emails, social media, ratings, and contact info in one run.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
CQ
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Find local businesses via Google Places and enrich each lead with ratings, emails, social media, and Better Business Bureau data in a single run.
What it does
This actor turns a simple query like "dentists in Austin TX" into a fully enriched sales-ready lead list. Each business comes back with:
- Core info (from Google Places): name, address, phone, website, hours, categories, GPS coordinates
- Ratings: Google rating + review count, Yelp rating + review count, BBB letter grade + accreditation status
- Contact extraction: email addresses scraped from the business website (homepage + contact/about pages)
- Social media: Facebook, Instagram, Twitter/X, LinkedIn, YouTube profile URLs found on the website
When to use it
- Sales teams building prospect lists for outbound
- Marketing agencies researching clients in a new territory
- Lead generation services building B2B databases
- Local SEO consultants identifying businesses needing online presence help
- Real estate, insurance, and financial professionals finding local leads
Required setup
Google Places API key (required)
The actor uses Google Places Text Search and Place Details APIs. You must provide your own key:
- Go to Google Cloud Console
- Create a project (or use existing)
- Enable the Places API
- Create an API key (APIs & Services → Credentials → Create → API Key)
- (Recommended) Restrict the key to Places API only
Cost: Google charges ~$0.017 per Text Search and ~$0.017 per Place Details request (as of 2026). A 50-lead search costs ~$1.70 in Google fees on top of Apify usage. Google provides $200/month free credit.
Yelp Fusion API key (optional, free)
For Yelp rating enrichment:
- Go to Yelp Developers
- Create an app, copy the API key
- Free tier: 5,000 API calls/day
If you don't provide a Yelp key, Yelp enrichment is silently skipped.
Input parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | yes | dentists | Business type (e.g., "plumbers", "coffee shops") |
location | string | yes | Austin, TX | City, state, or address to search |
googleApiKey | secret | yes | — | Google Places API key |
maxResults | integer | no | 50 | Max businesses to return (1-200) |
enrichEmail | boolean | no | true | Crawl websites to extract emails + socials |
enrichYelp | boolean | no | true | Cross-reference with Yelp Fusion API |
yelpApiKey | secret | conditional | — | Required if enrichYelp=true |
enrichBBB | boolean | no | false | Cross-reference with BBB (HTML scrape, slower) |
proxyConfiguration | object | no | Apify proxy | Used for BBB and website crawling |
Output format
Each lead:
{"name": "Smith Family Dentistry","address": "123 Main St, Austin, TX 78701, USA","city": "Austin","state": "TX","zip": "78701","phone": "(512) 555-1234","website": "https://smithfamilydental.com","googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4","googleRating": 4.7,"googleReviewCount": 234,"googleCategories": ["dentist", "health"],"hours": {"monday": "8:00 AM – 5:00 PM","tuesday": "8:00 AM – 5:00 PM"},"yelpRating": 4.5,"yelpReviewCount": 89,"yelpUrl": "https://www.yelp.com/biz/smith-family-dentistry","bbbRating": "A+","bbbAccredited": true,"emails": ["info@smithfamilydental.com", "appointments@smithfamilydental.com"],"socialMedia": {"facebook": "https://facebook.com/smithdentistry","instagram": "https://instagram.com/smithdentistry"},"enrichedAt": "2026-04-14T12:30:00.000Z"}
Fields that couldn't be enriched are null (ratings) or empty (arrays/objects).
How enrichment works
- Google Places Text Search — finds up to
maxResultsbusinesses matchingquery+location - Google Places Details — fetches phone, website, hours, categories for each place
- Yelp match (if enabled) — phone match first, then name+location fallback
- BBB scrape (if enabled) — searches bbb.org for the business, extracts letter grade + accreditation
- Website crawl (if enabled) — visits homepage +
/contact,/contact-us,/about,/about-us- Extracts emails from
mailto:links, plain text, and HTML attributes - Extracts social media URLs (Facebook, Instagram, Twitter/X, LinkedIn, YouTube)
- Filters out junk emails (example.com, sentry.io, etc.)
- Extracts emails from
Pricing model
Pay-per-result. Each enriched lead pushed to the dataset = 1 billable result.
Example inputs
Basic: dentists in Austin
{"query": "dentists","location": "Austin, TX","maxResults": 50,"googleApiKey": "YOUR_GOOGLE_KEY","enrichEmail": true,"enrichYelp": false}
Full enrichment with Yelp + BBB
{"query": "plumbers","location": "Dallas, TX","maxResults": 30,"googleApiKey": "YOUR_GOOGLE_KEY","yelpApiKey": "YOUR_YELP_KEY","enrichEmail": true,"enrichYelp": true,"enrichBBB": true}
Fast mode (Google only)
{"query": "coffee shops","location": "Seattle, WA","maxResults": 100,"googleApiKey": "YOUR_GOOGLE_KEY","enrichEmail": false,"enrichYelp": false,"enrichBBB": false}
Notes and caveats
- Google Places returns max 60 results per search (20 per page, 3 pages). If you set
maxResults > 60, you'll get 60. - Email extraction only works when the business has a website in their Google listing. ~30-50% of local businesses have websites.
- Some websites block scraping — those leads will have empty
emailsandsocialMediafields. - BBB scraping is US-only and slower than other enrichment (~3s per business).
- Yelp phone match is very reliable when the business has a registered phone; name+location match is best-effort.
- Obfuscated emails (JavaScript-rendered, image-based) are not extracted in this version.
Version history
- v1.2 — Added output schema + dataset views for clickable results
- v1.1 — Logo + metadata
- v1.0 — Initial release with Google Places, Yelp, BBB, email/social enrichment