Extract B2B Business Leads with Verified Emails
Pricing
Pay per usage
Extract B2B Business Leads with Verified Emails
Find businesses by industry and location from Google Maps, then optionally enrich each lead by scraping their website for a verified email. Returns CRM-ready JSON with name, phone, address, rating, website, and email.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Khadin Akbar
Actor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Find businesses by industry and location on Google Maps, then optionally enrich each lead by crawling the company's own website to extract a verified contact email. No Apollo dependency. No stale database. Emails come straight from the source.
Built for sales teams, marketers, growth agencies, and AI pipelines (Claude, ChatGPT, LangChain).
Compatible with: Apify MCP Server · LangChain · Make.com · Zapier · n8n · REST API · Direct CSV/JSON download
What does this B2B lead finder do?
This actor runs in two phases:
Phase 1 — Discovery: Searches Google Maps for businesses matching your industry and location query. Extracts business name, phone number, website URL, address, category, star rating, and review count for each result.
Phase 2 — Email Enrichment (optional): For each business that has a website, the actor crawls the homepage and contact page directly and extracts any email addresses using pattern matching. This produces a verified email sourced from the business's own site — not from a third-party database that may be months or years out of date.
You control the cost: run Phase 1 only for cheap basic leads, or enable Phase 2 enrichment when you need emails for outreach.
What data can you extract?
| Field | Type | Example |
|---|---|---|
business_name | string | "Miami Dental Group" |
email | string | null | "hello@miamidentalgroup.com" |
phone | string | null | "(305) 555-0123" |
website | string | null | "https://miamidentalgroup.com" |
address | string | null | "123 Brickell Ave, Miami, FL 33131" |
category | string | null | "Dentist" |
star_rating | number | null | 4.8 |
review_count | integer | null | 312 |
linkedin_url | string | null | "https://linkedin.com/company/..." |
email_source | string | null | "https://miamidentalgroup.com/contact" |
email_verified | boolean | true |
source_url | string | Google Maps search URL |
scraped_at | ISO datetime | "2026-03-28T14:30:00.000Z" |
The email_source field tells you exactly which page each email was found on, so you can verify or re-check the source yourself.
How to scrape B2B business leads with emails
- Click "Try for free" to open the actor in Apify Console
- Enter your business type in the Search Query field — e.g.
"dentists","marketing agencies","SaaS startups" - Enter a location — e.g.
"Miami, FL","New York","London" - Set Maximum results — how many businesses to find (1–1000)
- Toggle Enable email enrichment to
trueif you want verified emails - Click Start and wait for results
- Download as JSON, CSV, or Excel — or connect directly to your CRM
That's it. No API keys required. No accounts needed on any third-party service.
Pricing: pay only for what you get
This actor uses pay-per-event pricing. You are only charged for actual results returned — never for empty runs or failed requests.
| Event | Price | When it fires |
|---|---|---|
lead-basic | $0.003 per lead | Business discovered from Google Maps (no email) |
lead-enriched | $0.008 per lead | Business found + email successfully extracted from website |
Example costs:
- 100 basic leads (no enrichment): $0.30
- 100 leads with email enrichment (all emails found): $0.80
- 500 enriched leads: $4.00
Enable enrichment only when you need emails. Run discovery-only first to validate your query, then re-run with enrichment on the full set.
Using with AI agents (Claude, ChatGPT, Cursor)
Connect via the Apify MCP Server and prompt naturally:
"Find me 100 dentists in Miami with their contact emails"
"Build a list of marketing agencies in London — I need names, phones, and websites"
"Scrape 50 plumbing companies in Texas and enrich with emails"
The AI agent will automatically select this actor, map your natural language to the right input fields, run it, and return the structured results ready for your CRM or outreach tool.
Why this beats Apollo-dependent scrapers
Most B2B lead scrapers rely on Apollo.io or similar contact databases under the hood. That means:
- Stale data: Apollo's database is updated periodically, not in real-time. Emails bounce.
- Generic contacts: You often get a marketing@ or info@ from the database, not the real decision-maker contact.
- Rate limits & API dependency: If Apollo changes their API or pricing, the scraper breaks.
This actor crawls business websites directly. The email it returns is the one the business publishes on their own contact page today — which means it's current, it's intentional, and it's the address they actually want people to use.
Use cases
Cold outreach campaigns: Build targeted prospect lists with verified emails and send personalized outreach at scale using tools like Instantly, Lemlist, or Apollo (for sequences, not data).
Market research: Analyze ratings, review counts, and categories across a geographic market to identify density, competitive saturation, and whitespace opportunities.
Sales prospecting: Filter by star rating and review count to focus on established businesses most likely to need your service. High review count = active, engaged business.
CRM enrichment: Upload your existing list of business names. Run them through this actor to add phone numbers, websites, ratings, and emails. Export back to HubSpot, Salesforce, or Pipedrive via CSV.
AI pipeline data: Feed structured lead data into Claude or ChatGPT to generate personalized outreach copy for each business based on their category, location, and rating.
Agency lead gen: Run on behalf of clients to generate niche lead lists — dentists in specific zip codes, law firms in specific practice areas, contractors in specific states.
API & integration
REST API
curl -X POST "https://api.apify.com/v2/acts/USERNAME~b2b-lead-finder-enrichment/runs" \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQuery": "dentists","location": "Miami, FL","maxResults": 100,"enableEnrichment": true}'
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('USERNAME/b2b-lead-finder-enrichment').call({searchQuery: 'marketing agencies',location: 'New York',maxResults: 200,enableEnrichment: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Found ${items.length} leads`);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('USERNAME/b2b-lead-finder-enrichment').call(run_input={'searchQuery': 'law firms','location': 'Chicago, IL','maxResults': 100,'enableEnrichment': True,})leads = list(client.dataset(run['defaultDatasetId']).iterate_items())emails_found = [l for l in leads if l['email_verified']]print(f'Total leads: {len(leads)} | With email: {len(emails_found)}')
Integrations: Apify MCP Server · LangChain · Make.com · Zapier · n8n · Google Sheets · HubSpot · Salesforce · Airtable
FAQ
Q: Is this legal? A: This actor only extracts publicly available data that any person can access through a web browser — the same data visible on Google Maps and business websites. For guidance, see Apify's guide on web scraping legality. Always comply with your local laws and the terms of service of any platforms you interact with.
Q: What email hit rate can I expect? A: Approximately 40–65% of businesses with a website will have an email address publicly visible on their homepage or contact page. Businesses in professional services (legal, dental, accounting) tend to have higher rates than retail or restaurants.
Q: What if a business doesn't have a website?
A: The actor still returns the lead with all available Google Maps data. The email field will be null and email_verified will be false. You are charged the lead-basic rate in this case.
Q: How many results can I get per query? A: Google Maps typically returns up to 120 results per search query in a given location. For broader coverage, break your search into multiple location-specific queries (e.g., by city or zip code) and merge the results.
Q: Can I schedule this to run automatically? A: Yes. Use Apify's built-in scheduler to run daily, weekly, or at any custom interval. Combine with a webhook to push results directly to your CRM or Slack channel as they arrive.
Q: Can I use this with Claude or ChatGPT? A: Yes — connect via the Apify MCP Server. Once connected, Claude and ChatGPT can run this actor automatically in response to natural language prompts like "find me 50 plumbers in Dallas with emails."
Q: What if the actor fails on a specific business? A: Failed enrichment requests fall back gracefully to pushing the basic lead record. You always get the data that was successfully scraped. Run statistics are visible in the Apify Console.