Google Maps is the world's most complete database of local businesses. If you need business data — names, addresses, phone numbers, hours, ratings, reviews — it's all there.
The problem is Google's Places API. At $17 per 1,000 requests for basic data and $32 per 1,000 for contact details, costs spiral fast when you're doing anything at scale. A list of 10,000 businesses can cost $170-$320 in API calls alone.
There's a better way.
API Link: Google Maps Scraper API on RapidAPI
What It Returns
Search for any business type in any location:
{
"success": true,
"query": "coffee shops Austin TX",
"count": 20,
"data": [
{
"placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"name": "Merit Coffee",
"address": "1900 Simond Ave, Austin, TX 78723",
"phone": "(512) 555-0123",
"website": "https://meritcoffee.com",
"rating": 4.6,
"reviewCount": 847,
"category": "Coffee shop",
"hours": {
"monday": "7:00 AM - 7:00 PM",
"tuesday": "7:00 AM - 7:00 PM"
},
"coordinates": {
"lat": 30.2849,
"lng": -97.6893
},
"googleMapsUrl": "https://maps.google.com/?cid=..."
}
]
}
Quick Start
const axios = require('axios');
async function searchGoogleMaps(query, options = {}) {
const response = await axios.get(
'https://google-maps-scraper-api-production.up.railway.app/search',
{
params: {
q: query,
limit: options.limit || 20,
language: options.language || 'en'
},
headers: {
'X-RapidAPI-Key': 'YOUR_RAPIDAPI_KEY',
'X-RapidAPI-Host': 'google-maps-scraper.p.rapidapi.com'
}
}
);
return response.data;
}
const businesses = await searchGoogleMaps('dentists Dallas TX', { limit: 50 });
Use Cases
1. Local Business Lead Generation
The most common use case — build a list of businesses in any niche, any city:
async function generateLocalLeads(businessType, cities) {
const allLeads = await Promise.all(
cities.map(city => searchGoogleMaps(`${businessType} ${city}`))
);
return allLeads
.flatMap(r => r.data)
.filter(b => b.website) // Only businesses with websites
.map(b => ({
name: b.name,
phone: b.phone,
website: b.website,
rating: b.rating,
reviews: b.reviewCount,
address: b.address
}));
}
// Generate leads for a web design agency targeting restaurants in DFW
const leads = await generateLocalLeads('restaurants', [
'Dallas TX', 'Fort Worth TX', 'Plano TX', 'Irving TX', 'Frisco TX'
]);
2. Competitor Mapping
Map all competitors in your service area:
async function mapCompetitors(yourNiche, serviceArea) {
const results = await searchGoogleMaps(`${yourNiche} ${serviceArea}`, { limit: 100 });
return results.data
.sort((a, b) => b.reviewCount - a.reviewCount) // Sort by review volume
.map(b => ({
name: b.name,
rating: b.rating,
reviews: b.reviewCount,
phone: b.phone,
website: b.website
}));
}
3. Review Monitoring
Track competitor ratings over time:
// Store results in your DB, check daily for rating changes
async function trackCompetitorRatings(businessNames, location) {
const results = await Promise.all(
businessNames.map(name => searchGoogleMaps(`${name} ${location}`, { limit: 3 }))
);
return results.map((r, i) => ({
business: businessNames[i],
currentRating: r.data[0]?.rating,
reviewCount: r.data[0]?.reviewCount,
checkedAt: new Date().toISOString()
}));
}
4. Directory / Listing Site
Build a local business directory for a specific niche:
async function buildDirectory(categories, city) {
const allData = await Promise.all(
categories.map(cat => searchGoogleMaps(`${cat} ${city}`, { limit: 50 }))
);
return categories.reduce((dir, cat, i) => {
dir[cat] = allData[i].data;
return dir;
}, {});
}
const dfwDirectory = await buildDirectory([
'plumbers', 'electricians', 'HVAC', 'landscaping', 'roofing'
], 'Dallas TX');
5. Enrich a Lead List
You have a list of business names — add phone, address, rating:
async function enrichWithGoogleMaps(businesses) {
return Promise.all(
businesses.map(async business => {
const result = await searchGoogleMaps(`${business.name} ${business.city}`, { limit: 1 });
const data = result.data[0];
return {
...business,
phone: data?.phone,
rating: data?.rating,
reviewCount: data?.reviewCount,
website: data?.website || business.website
};
})
);
}
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q |
string | Yes | Search query (business type + location) |
limit |
number | No | Results to return (1-50, default: 20) |
language |
string | No | Language code (default: en) |
Pricing
| Plan | Requests/mo | Price |
|---|---|---|
| BASIC | 500 | Free |
| PRO | 10,000 | $9.99/mo |
| ULTRA | 50,000 | $29.99/mo |
| MEGA | 200,000 | $79.99/mo |
vs Google Places API
| Google Places API | Google Maps Scraper API | |
|---|---|---|
| Basic data | $17/1,000 | $0.001/request on PRO |
| Contact details | $32/1,000 | Included |
| Setup | OAuth, billing setup | API key only |
| Rate limits | Strict | Flexible |
| Monthly min | None but costs add up | $0 on BASIC |
For a 10,000-request workload: Google Places costs $170-$320. PRO plan here: $9.99.
Get Started
Subscribe to Google Maps Scraper API on RapidAPI →
Free plan available — 500 requests/month at no cost.
Built by Donny Dev — full data API suite: Apollo Lead Scraper · Email Extractor · Website Tech Detector · DuckDuckGo Search
Top comments (0)