Extract business leads from Google Maps for free. Get phone numbers, websites, addresses, ratings, and more. No API key required.
Generate hundreds of B2B leads in minutes using the free LeadFinder API. Perfect for sales prospecting, cold outreach, CRM enrichment, and local business research.
leadscraper-coral.vercel.app — Free web app with export to CSV
Each lead returned by the API includes:
| Field | Description | Example |
|---|---|---|
businessName |
Company name | "Joe's Plumbing" |
phone |
Phone number | "(555) 123-4567" |
website |
Business website | "https://joesplumbing.com" |
address |
Full street address | "123 Main St, Austin, TX" |
rating |
Google Maps rating | 4.8 |
reviewCount |
Number of reviews | 142 |
Go to leadscraper-coral.vercel.app and start searching immediately. Export results to CSV with one click.
curl "https://leadscraper-coral.vercel.app/api/v1/leads?niche=plumber&city=Austin"npm install leadfinder-apiconst { findLeads } = require('leadfinder-api');
const results = await findLeads({ niche: 'plumber', city: 'Austin' });
console.log(results.leads);git clone https://github.com/Perufitlife/google-maps-lead-generator.git
cd google-maps-lead-generator
pip install requests
python scripts/get_leads.py --niche "plumber" --city "Austin" --output leads.csvgit clone https://github.com/Perufitlife/google-maps-lead-generator.git
cd google-maps-lead-generator
npm install node-fetch
node scripts/get_leads.js --niche "plumber" --city "Austin" --output leads.csvBase URL:
https://leadscraper-coral.vercel.app/api/v1/leads
Parameters:
| Parameter | Required | Description |
|---|---|---|
niche |
Yes | Business type / keyword (e.g., "dentist", "plumber", "restaurant") |
city |
Yes | City name (e.g., "Austin", "New York", "London") |
Example Request:
curl "https://leadscraper-coral.vercel.app/api/v1/leads?niche=dentist&city=Miami"Example Response:
{
"leads": [
{
"businessName": "Bright Smile Dental",
"phone": "(305) 555-0123",
"website": "https://brightsmile.com",
"address": "456 Ocean Drive, Miami, FL 33139",
"rating": 4.9,
"reviewCount": 312
}
],
"total": 20,
"query": {
"niche": "dentist",
"city": "Miami"
}
}import requests
response = requests.get(
"https://leadscraper-coral.vercel.app/api/v1/leads",
params={"niche": "plumber", "city": "Austin"}
)
data = response.json()
print(f"Found {data['total']} leads")
for lead in data["leads"]:
print(f"{lead['businessName']} - {lead['phone']} - {lead['website']}")const fetch = require('node-fetch');
async function getLeads(niche, city) {
const url = `https://leadscraper-coral.vercel.app/api/v1/leads?niche=${encodeURIComponent(niche)}&city=${encodeURIComponent(city)}`;
const response = await fetch(url);
const data = await response.json();
console.log(`Found ${data.total} leads`);
data.leads.forEach(lead => {
console.log(`${lead.businessName} - ${lead.phone} - ${lead.website}`);
});
return data;
}
getLeads('plumber', 'Austin');# Get leads and pretty-print
curl -s "https://leadscraper-coral.vercel.app/api/v1/leads?niche=plumber&city=Austin" | jq '.leads[] | {name: .businessName, phone: .phone, website: .website}'
# Save directly to CSV
curl -s "https://leadscraper-coral.vercel.app/api/v1/leads?niche=plumber&city=Austin" | jq -r '.leads[] | [.businessName, .phone, .website, .address, .rating, .reviewCount] | @csv' > leads.csvnpm install leadfinder-apiconst { findLeads } = require('leadfinder-api');
(async () => {
// Simple search
const results = await findLeads({ niche: 'dentist', city: 'Los Angeles' });
console.log(`Found ${results.total} leads`);
results.leads.forEach(lead => {
console.log(`${lead.businessName} | ${lead.phone} | ${lead.website}`);
});
})();| Script | Description |
|---|---|
scripts/get_leads.py |
Python: Fetch leads for a niche + city, export to CSV |
scripts/get_leads.js |
Node.js: Fetch leads for a niche + city, export to CSV |
scripts/bulk_search.py |
Python: Bulk search from a CSV of niche + city combinations |
scripts/enrich_leads.py |
Python: Visit lead websites and extract email addresses |
Search dozens of niche+city combinations at once using a CSV file:
python scripts/bulk_search.py --input sample-input.csv --output all_leads.csvThe input CSV should have two columns: niche and city. See sample-input.csv for an example.
After collecting leads, find email addresses by visiting each website:
python scripts/enrich_leads.py --input leads.csv --output enriched_leads.csvThis script visits each lead's website and extracts email addresses found on the page.
- Sales Prospecting - Build targeted lead lists for cold outreach campaigns
- B2B Lead Generation - Find local businesses in any niche and any city
- CRM Enrichment - Bulk import business data into your CRM (HubSpot, Salesforce, etc.)
- Market Research - Analyze local business landscapes and competition
- Real Estate - Find property management companies, agents, and contractors
- Agency Outreach - Find potential clients for your marketing or web design agency
- Local SEO - Research local businesses for SEO audits and proposals
Yes. The API and web app at leadscraper-coral.vercel.app are free to use.
No. The API requires no authentication and no API key.
Business name, phone number, website URL, full address, Google rating (1-5 stars), and review count.
Yes. The data is sourced from publicly available Google Maps listings. This project is MIT licensed.
Each API call returns up to 20 leads. Use the bulk search script to search many niches and cities.
Contributions are welcome! Feel free to:
- Add scripts in other languages (Go, Ruby, PHP, etc.)
- Improve the email enrichment script
- Add integrations with CRMs
- Report bugs or suggest features
- LeadFinder Web App - Free web-based lead generation tool
leadfinder-api- Official npm package
MIT License - see LICENSE for details.
Built with the free LeadFinder API