Google Maps Places Extractor avatar
Google Maps Places Extractor

Pricing

Pay per event

Go to Apify Store
Google Maps Places Extractor

Google Maps Places Extractor

Extract Places and businesses from Google Maps. Scrap phone numbers, emails, website, business hours, address and gps, Google Place ID. Use filters to include or exclude irrelevant leads.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Enckay Data

Enckay Data

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

13

Monthly active users

2.5 hours

Issues response

6 days ago

Last modified

Share

Google Maps Lead Extractor

Advanced lead extraction from Google Maps with comprehensive business data, contact information, reviews, and 80+ additional data fields.

Features

Core Extraction

  • Multi-cell area coverage - Systematic grid-based or polygon-based scraping for complete area coverage
  • Contact information - Phone numbers (70-85% success) and emails (20-40% from Google, 60-80% from websites)
  • Business reviews - Extract customer reviews with ratings, text, dates, and reviewer info using browser automation
  • Multiple photos - Extract up to 50 photo URLs per business

Advanced Data Fields (82+ Fields)

  • Amenities (82 fields) - Seating, accessibility, parking, payments, food/beverage options
  • Hourly busyness (168 datapoints) - 7-day hourly traffic patterns with smart contact timing recommendations
  • Price distribution - Customer spending patterns by price range with percentages
  • Atmosphere - Vibe descriptors (casual, cozy, hip, upscale, etc.)
  • Social media - Extract from Google profile and scrape business websites for additional links
  • Lead quality scoring - Automatic scoring (0-100) and priority classification (PREMIUM/HIGH/MEDIUM/LOW)

Filtering & Export

  • Filter by rating, reviews, price level, and price range
  • Export to CSV or JSON
  • Deduplication across search cells

Quick Start

{
"keyword": "coffee shops",
"location": "Brooklyn, NY",
"maxResults": 50,
"exportToCsv": true
}

Full Feature Extraction

{
"keyword": "restaurants",
"location": "Austin, TX",
"maxResults": 100,
"minRating": 4.0,
"minReviews": 10,
"extractContactDetails": true,
"extractAmenities": true,
"extractBusyness": true,
"extractPhotos": true,
"maxPhotos": 10,
"extractSocialMedia": true,
"extractWebsiteEmails": true,
"extractReviews": true,
"maxReviewsPerBusiness": 50,
"calculateLeadScore": true,
"exportToCsv": true
}

Input Parameters

ParameterRequiredDefaultDescription
keywordYes-Business type to search (e.g., "dentists", "coffee shops")
locationYes-City, address, or ZIP code (e.g., "Seattle, WA", "90210")
maxResultsNo100Maximum number of unique businesses to extract (1-10,000)

Filters

ParameterDefaultDescription
minRating0Minimum rating (0-5.0)
minReviews0Minimum number of reviews
filterByPriceLevel-Filter by price symbols (["$", "$$", "$$$", "$$$$"])
minPrice0Minimum price in dollars
maxPrice0Maximum price in dollars

Extraction Features (All Optional)

ParameterDefaultDescription
extractContactDetailsfalseExtract phone and email from Google profile
extractAmenitiesfalseExtract 82 amenity fields
extractBusynessfalseExtract 168 hourly busyness datapoints
extractPriceDistributionfalseExtract customer spending patterns
extractAtmospherefalseExtract atmosphere descriptors
extractPhotosfalseExtract multiple photo URLs
maxPhotos10Maximum photos per business (1-50)
extractSocialMediafalseExtract social media from Google profile
extractSocialMediaFromWebsitefalseScrape website for social media links
socialMediaPlatformsAllPlatforms to extract (facebook, instagram, twitter, linkedin, tiktok, youtube)
extractWebsiteEmailsfalseScrape business websites for email addresses
websiteTimeout5000Website scraping timeout in ms (1000-30000)
websiteMaxPages3Max pages to scrape per website (1-10)
maxEmails5Max emails to extract from website (1-20)
calculateLeadScorefalseCalculate lead quality score (0-100) and priority
extractReviewsfalseExtract customer reviews using browser automation
maxReviewsPerBusiness100Max reviews per business (10-500)

Performance Settings

ParameterDefaultDescription
concurrency2Search cells to process in parallel (1-10)
detailsConcurrency10Concurrent business detail extractions (1-50)

Advanced Options

ParameterDescription
customPolygonGeoJSON Polygon/MultiPolygon for exact search boundaries
exportToCsvExport results as CSV (saved in key-value store as 'OUTPUT')

Output Format

Complete Dataset Structure

{
"businessName": "Acme Coffee Roasters",
"placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"address": "123 Main St, Brooklyn, NY 11201, United States",
"street": "123 Main St",
"city": "Brooklyn",
"state": "NY",
"zip": "11201",
"country": "United States",
"latitude": 40.6892,
"longitude": -73.9915,
"phone": "+17185551234",
"website": "https://acmecoffee.com",
"email": "info@acmecoffee.com",
"emailSource": "google",
"rating": 4.8,
"reviewCount": 542,
"category": "Coffee shop",
"priceLevel": "$$",
"priceRange": "$10–20",
"googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJN1t_tDeuEmsRUsoyG83frY4",
"mainPhoto": "https://lh3.googleusercontent.com/...",
"businessHours": {
"Monday": "7:00 AM – 7:00 PM",
"Tuesday": "7:00 AM – 7:00 PM",
"Wednesday": "7:00 AM – 7:00 PM",
"Thursday": "7:00 AM – 7:00 PM",
"Friday": "7:00 AM – 8:00 PM",
"Saturday": "8:00 AM – 8:00 PM",
"Sunday": "8:00 AM – 6:00 PM"
},
"temporarilyClosed": false,
"permanentlyClosed": false,
"photos": [
"https://lh3.googleusercontent.com/photo1...",
"https://lh3.googleusercontent.com/photo2...",
"https://lh3.googleusercontent.com/photo3..."
],
"amenities": {
"dineIn": true,
"takeout": true,
"delivery": false,
"outdoorSeating": true,
"wheelchairAccessible": true,
"parking": true,
"wifi": true,
"creditCards": true,
"reservations": false,
"goodForGroups": true,
"goodForKids": true,
"restroom": true,
"petFriendly": true,
"liveMusic": false,
"breakfast": true,
"lunch": true,
"dinner": false,
"coffee": true,
"dessert": true,
"alcohol": false
},
"amenitiesSummary": {
"total": 82,
"available": 15,
"categories": {
"dining": 8,
"accessibility": 3,
"amenities": 4
}
},
"busyness": {
"Monday": [0, 0, 0, 0, 0, 0, 15, 35, 60, 75, 80, 70, 65, 55, 50, 60, 70, 50, 30, 20, 10, 0, 0, 0],
"Tuesday": [0, 0, 0, 0, 0, 0, 20, 40, 65, 80, 85, 75, 70, 60, 55, 65, 75, 55, 35, 25, 15, 0, 0, 0],
"Wednesday": [0, 0, 0, 0, 0, 0, 20, 40, 65, 80, 85, 75, 70, 60, 55, 65, 75, 55, 35, 25, 15, 0, 0, 0],
"Thursday": [0, 0, 0, 0, 0, 0, 25, 45, 70, 85, 90, 80, 75, 65, 60, 70, 80, 60, 40, 30, 20, 0, 0, 0],
"Friday": [0, 0, 0, 0, 0, 0, 25, 45, 70, 85, 90, 85, 80, 70, 65, 75, 90, 80, 60, 45, 30, 0, 0, 0],
"Saturday": [0, 0, 0, 0, 0, 0, 0, 30, 60, 85, 95, 90, 85, 75, 70, 80, 90, 75, 50, 35, 20, 0, 0, 0],
"Sunday": [0, 0, 0, 0, 0, 0, 0, 25, 55, 80, 90, 85, 80, 70, 65, 75, 70, 50, 30, 20, 10, 0, 0, 0]
},
"bestContactTimes": {
"leastBusy": ["Monday 6 AM", "Tuesday 6 AM", "Sunday 6 PM"],
"moderatelyBusy": ["Monday 10 AM", "Tuesday 3 PM"],
"recommendation": "Best times to contact: Monday 6 AM, Tuesday 6 AM, or Sunday 6 PM (least busy)"
},
"priceDistribution": {
"under10": 15,
"10to20": 65,
"20to30": 15,
"over30": 5
},
"averagePrice": "$12–18",
"atmosphere": ["casual", "cozy", "trendy", "hip"],
"socialMedia": {
"facebook": "https://facebook.com/acmecoffee",
"instagram": "https://instagram.com/acmecoffee",
"twitter": "https://twitter.com/acmecoffee"
},
"socialMediaSources": {
"facebook": "google",
"instagram": "website",
"twitter": "website"
},
"websiteEmails": ["contact@acmecoffee.com", "info@acmecoffee.com"],
"allEmails": ["info@acmecoffee.com", "contact@acmecoffee.com"],
"emailsSource": "website",
"reviews": [
{
"reviewId": "ChZDSUhNMG9nS0VJQ0FnSUQ3...",
"rating": 5,
"text": "Amazing coffee and friendly staff! The atmosphere is perfect for working or meeting friends.",
"publishedAt": "2025-10-15",
"publishedAtDate": 1729036800000,
"reviewerName": "Jane Smith",
"reviewerPhotoUrl": "https://lh3.googleusercontent.com/...",
"reviewerTotalReviews": 42,
"reviewerIsLocalGuide": true,
"ownerResponse": {
"text": "Thank you for your kind words!",
"publishedAt": "2025-10-16"
}
}
],
"leadScore": 87,
"leadPriority": "PREMIUM"
}

Field Descriptions

Basic Information

FieldTypeDescription
businessNamestringBusiness name
placeIdstringGoogle Place ID (unique identifier)
categorystringPrimary business category

Location

FieldTypeDescription
addressstringFull formatted address
streetstringStreet address
citystringCity name
statestringState/province code
zipstringZIP/postal code
countrystringCountry name
latitudenumberGPS latitude
longitudenumberGPS longitude
googleMapsUrlstringDirect link to Google Maps

Contact Information

FieldTypeDescription
phonestringPhone number (from Google profile)
websitestringOfficial website URL
emailstringPrimary email (from Google profile)
emailSourcestringSource: google, website, or not_found
websiteEmailsarrayEmails extracted from website scraping
allEmailsarrayAll unique emails (Google + website)

Ratings & Reviews

FieldTypeDescription
ratingnumberAverage rating (0-5.0)
reviewCountnumberTotal number of reviews
reviewsarrayCustomer reviews (if extractReviews: true)

Pricing

FieldTypeDescription
priceLevelstringPrice level symbols ($, $$, $$$, $$$$)
priceRangestringPrice range (e.g., "$10-20")
priceDistributionobjectSpending patterns by price range
averagePricestringCalculated average price

Photos

FieldTypeDescription
mainPhotostringPrimary business photo (always included)
photosarrayAdditional photo URLs (if extractPhotos: true)

Hours & Status

FieldTypeDescription
businessHoursobjectOperating hours by day of week (e.g., {"Monday": "9:00 AM – 5:00 PM"}) - May include multiple time windows per day (e.g., "10 AM-2 PM, 6 PM-10 PM")
temporarilyClosedbooleanWhether the business is temporarily closed
permanentlyClosedbooleanWhether the business is permanently closed

Amenities (82 fields)

FieldTypeDescription
amenitiesobject82 boolean fields for business amenities
amenitiesSummaryobjectSummary statistics for amenities

Amenity categories include:

  • Dining: dineIn, takeout, delivery, curbsidePickup, breakfast, lunch, dinner, dessert, coffee
  • Accessibility: wheelchairAccessible, wheelchairAccessibleEntrance, wheelchairAccessibleParking, wheelchairAccessibleRestroom, wheelchairAccessibleSeating
  • Seating: outdoorSeating, indoorSeating, bar, highChairs
  • Parking: parking, paidParking, freeParking, streetParking, garagePark, valetParking
  • Payments: creditCards, debitCards, nfcMobilePayments, cashOnly
  • Services: wifi, restroom, petFriendly, goodForKids, goodForGroups, reservations, waitlist, liveMusic, karaoke
  • Food/Beverage: alcohol, beer, wine, cocktails, happyHour, lateNightFood, healthyOptions, vegetarianOptions, veganOptions
  • And 40+ more...

Busyness Patterns

FieldTypeDescription
busynessobject7-day hourly traffic (168 datapoints, 0-100 scale)
bestContactTimesobjectAI-recommended contact times based on traffic

Atmosphere

FieldTypeDescription
atmospherearrayVibe descriptors (casual, cozy, romantic, trendy, upscale, etc.)

Social Media

FieldTypeDescription
socialMediaobjectSocial media profile URLs by platform
socialMediaSourcesobjectSource for each platform (google or website)

Supported platforms: Facebook, Instagram, Twitter, LinkedIn, TikTok, YouTube

Lead Scoring

FieldTypeDescription
leadScorenumberQuality score 0-100 (higher = better quality lead)
leadPrioritystringPriority classification: PREMIUM, HIGH, MEDIUM, LOW

Scoring factors:

  • Rating (weight: 25%)
  • Review count (weight: 20%)
  • Contact completeness - phone, email, website (weight: 30%)
  • Social media presence (weight: 15%)
  • Data richness - amenities, photos, hours (weight: 10%)

Reviews (if enabled)

FieldTypeDescription
reviewIdstringUnique review identifier
ratingnumberReview rating (1-5)
textstringReview text content
publishedAtstringPublication date (YYYY-MM-DD)
publishedAtDatenumberUnix timestamp
reviewerNamestringReviewer display name
reviewerPhotoUrlstringReviewer profile photo URL
reviewerTotalReviewsnumberTotal reviews by this reviewer
reviewerIsLocalGuidebooleanWhether reviewer is a Google Local Guide
ownerResponseobjectOwner's response (if any) with text and date

CSV Export

When exportToCsv: true, results are saved to the Key-Value Store as OUTPUT.csv with all extracted fields flattened.

Note: Complex fields (amenities, busyness, reviews, photos, etc.) are JSON-stringified in CSV format.

Performance

Factors Affecting Speed

  • Number of enabled features
  • Website scraping (adds time per business)
  • Review extraction (adds time per business depending on maxReviewsPerBusiness)
  • Concurrency settings
  • Rate limiting
  • Total number of businesses to extract

Success Rates

  • Phone numbers: 70-85% (from Google profile)
  • Emails from Google: 20-40%
  • Emails from websites: 60-80% (when website is accessible)
  • Amenities: 90-95% (varies by business category)
  • Busyness data: 60-70% (not all businesses provide this)
  • Social media: 40-60% (Google), 70-80% (Google + website scraping)
  • Reviews: 95-100% (limited by maxReviewsPerBusiness)

Use Cases

Lead Generation

  • Extract contact information for cold outreach
  • Calculate lead quality scores to prioritize prospects
  • Find businesses with specific amenities (e.g., "pet-friendly coffee shops")

Market Research

  • Analyze competitor pricing and amenities
  • Study customer reviews and sentiment
  • Map business density in specific areas

Business Intelligence

  • Identify optimal contact times using busyness patterns
  • Track social media presence across competitors
  • Monitor review trends and ratings

Data Enrichment

  • Enhance existing CRM data with additional fields
  • Verify and update contact information
  • Add social media profiles and photos

Pricing Model

This actor uses pay-per-event pricing for transparent, usage-based billing. You only pay for the specific features and data you extract.

Event Types

  • Core: Actor start, place scraped
  • Filters: Per filter per place (rating, reviews, price)
  • Features: Contact info, amenities, busyness, photos, social media (per place)
  • Website Scraping: Only charged on successful extraction
  • Reviews: Per review extracted (structure ready, pricing TBD)

See Apify Console for current pricing details.

Advanced Features

Define exact search boundaries using GeoJSON:

{
"keyword": "restaurants",
"customPolygon": {
"type": "Polygon",
"coordinates": [
[
[-122.4, 47.6],
[-122.3, 47.6],
[-122.3, 47.7],
[-122.4, 47.7],
[-122.4, 47.6]
]
]
},
"maxResults": 500
}

Multi-Cell Grid Coverage

The actor automatically divides large areas into smaller cells for complete coverage:

  • Systematic grid-based scanning
  • Deduplication across cells
  • Progress tracking per cell
  • Optimal for extracting 1,000+ businesses from large areas

Troubleshooting

No Results Found

  • Verify location spelling and format
  • Try broader keywords (e.g., "restaurants" instead of "Italian restaurants")
  • Use full city names (e.g., "Brooklyn, New York" instead of "Brooklyn")
  • Check if location is supported by Google Maps geocoding

Low Email Success Rate

  • Enable extractWebsiteEmails: true to scrape websites (60-80% vs 20-40%)
  • Increase websiteMaxPages to 5-10 for deeper scraping
  • Some businesses don't publish emails publicly

CSV Not Generated

  • Ensure exportToCsv: true is set
  • Check Key-Value Store (not Dataset) for OUTPUT.csv
  • Large datasets may take time to generate

Slow Extraction

  • Reduce maxReviewsPerBusiness (reviews extraction add significant time)
  • Disable website scraping features if not needed
  • Reduce detailsConcurrency if hitting rate limits or overwhelming Google APIs
  • Reduce concurrency to process fewer cells in parallel

Missing Amenities or Busyness

  • Not all businesses provide this data
  • Try different business categories (restaurants have higher success rates)
  • This is normal - check amenitiesSummary for availability stats

Results & Output Location

Your extracted data is saved to:

  • Dataset: JSON array of all business records (default output)
  • Key-Value Store (when CSV export is enabled):
    • OUTPUT.csv - Flattened CSV with all extracted fields
    • SCRAPE_STATS - Detailed extraction statistics

The actor provides detailed progress updates in the console log including:

  • Cell processing progress
  • Business extraction counts
  • Feature extraction statistics
  • Deduplication metrics
  • Pay-per-event charging summary