Google Maps Places Extractor

Google Maps Places Extractor

by enckay

Extract Places and businesses from Google Maps. Scrap phone numbers, emails, website, business hours, address and gps, Google Place ID. Use filters ...

2,089 runs
22 users
Try This Actor

Opens on Apify.com

About 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.

What does this actor do?

Google Maps Places Extractor is a web scraping and automation tool available on the Apify platform. It's designed to help you extract data and automate tasks efficiently in the cloud.

Key Features

  • Cloud-based execution - no local setup required
  • Scalable infrastructure for large-scale operations
  • API access for integration with your applications
  • Built-in proxy rotation and anti-blocking measures
  • Scheduled runs and webhooks for automation

How to Use

  1. Click "Try This Actor" to open it on Apify
  2. Create a free Apify account if you don't have one
  3. Configure the input parameters as needed
  4. Run the actor and download your results

Documentation

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) - Geographic hierarchy - Multi-level location data with confidence scores (neighborhood, city, county, state, country) - Country code - ISO country code extraction - Travel time & accessibility - Distance intervals and accessibility scoring ### Filtering & Export - Filter by rating, reviews, price level, and price range - Export to CSV or JSON - Deduplication across search cells ## Quick Start ### Basic Search json { "keyword": "coffee shops", "location": "Brooklyn, NY", "maxResults": 50, "exportToCsv": true } ### Full Feature Extraction json { "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 ### Basic Search | Parameter | Required | Default | Description | |-----------|----------|---------|-------------| | keyword | Yes | - | Business type to search (e.g., "dentists", "coffee shops") | | location | Yes | - | City, address, or ZIP code (e.g., "Seattle, WA", "90210") | | maxResults | No | 100 | Maximum number of unique businesses to extract (1-10,000) | ### Filters | Parameter | Default | Description | |-----------|---------|-------------| | minRating | 0 | Minimum rating (0-5.0) | | minReviews | 0 | Minimum number of reviews | | filterByPriceLevel | - | Filter by price symbols (["$", "$$", "$$$", "$$$$"]) | | minPrice | 0 | Minimum price in dollars | | maxPrice | 0 | Maximum price in dollars | ### Extraction Features (All Optional) | Parameter | Default | Description | |-----------|---------|-------------| | extractContactDetails | false | Extract phone and email from Google profile | | extractAmenities | false | Extract 82 amenity fields | | extractBusyness | false | Extract 168 hourly busyness datapoints | | extractPriceDistribution | false | Extract customer spending patterns | | extractAtmosphere | false | Extract atmosphere descriptors | | extractPhotos | false | Extract multiple photo URLs | | maxPhotos | 10 | Maximum photos per business (1-50) | | extractSocialMedia | false | Extract social media from Google profile | | extractSocialMediaFromWebsite | false | Scrape website for social media links | | socialMediaPlatforms | All | Platforms to extract (facebook, instagram, twitter, linkedin, tiktok, youtube) | | extractWebsiteEmails | false | Scrape business websites for email addresses | | websiteTimeout | 5000 | Website scraping timeout in ms (1000-30000) | | websiteMaxPages | 3 | Max pages to scrape per website (1-10) | | maxEmails | 5 | Max emails to extract from website (1-20) | | calculateLeadScore | false | Calculate lead quality score (0-100) and priority | | extractReviews | false | Extract customer reviews using browser automation | | maxReviewsPerBusiness | 100 | Max reviews per business (10-500) | | extractGeographic | true | Extract geographic hierarchy with confidence scores | | extractCountry | true | Extract ISO country code | | extractTravel | true | Extract travel time and accessibility data | ### Performance Settings | Parameter | Default | Description | |-----------|---------|-------------| | concurrency | 2 | Search cells to process in parallel (1-10) | | detailsConcurrency | 10 | Concurrent business detail extractions (1-50) | ### Advanced Options | Parameter | Description | |-----------|-------------| | customPolygon | GeoJSON Polygon/MultiPolygon for exact search boundaries | | exportToCsv | Export results as CSV (saved in key-value store as 'OUTPUT') | ## Output Format ### Complete Dataset Structure json { "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, "countryCode": "US", "geographicHierarchy": [ { "name": "Brooklyn", "confidence": 1.0, "confidencePercent": "100.0%" }, { "name": "Kings County", "confidence": 0.95, "confidencePercent": "95.0%" }, { "name": "New York", "confidence": 0.90, "confidencePercent": "90.0%" }, { "name": "United States", "confidence": 0.85, "confidencePercent": "85.0%" } ], "primaryLocation": { "name": "Brooklyn", "confidence": 1.0, "confidencePercent": "100.0%" }, "locationCategories": { "neighborhood": { "name": "Brooklyn", "confidence": 1.0 }, "city": { "name": "New York City", "confidence": 0.95 }, "county": { "name": "Kings County", "confidence": 0.95 }, "state": { "name": "New York", "confidence": 0.90 }, "country": { "name": "United States", "confidence": 0.85 } }, "travelTimes": [ { "label": "5 min", "minutes": 5, "coordinates": { "lat": 40.689, "lng": -73.991 } }, { "label": "10 min", "minutes": 10, "coordinates": { "lat": 40.690, "lng": -73.992 } } ], "accessibility": { "accessibilityScore": 85, "averageTravelMinutes": 7.5 }, "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 | Field | Type | Description | |-------|------|-------------| | businessName | string | Business name | | placeId | string | Google Place ID (unique identifier) | | category | string | Primary business category | #### Location | Field | Type | Description | |-------|------|-------------| | address | string | Full formatted address | | street | string | Street address | | city | string | City name | | state | string | State/province code | | zip | string | ZIP/postal code | | country | string | Country name | | countryCode | string | NEW - ISO country code (e.g., "US", "GB", "CA") | | latitude | number | GPS latitude | | longitude | number | GPS longitude | | googleMapsUrl | string | Direct link to Google Maps | | geographicHierarchy | array | NEW - Multi-level locations with confidence scores | | primaryLocation | object | NEW - Primary geographic location | | locationCategories | object | NEW - Categorized locations (neighborhood, city, county, state, country) | | travelTimes | array | NEW - Travel time intervals with coordinates | | accessibility | object | NEW - Accessibility score and metrics | #### Contact Information | Field | Type | Description | |-------|------|-------------| | phone | string | Phone number (from Google profile) | | website | string | Official website URL | | email | string | Primary email (from Google profile) | | emailSource | string | Source: google, website, or not_found | | websiteEmails | array | Emails extracted from website scraping | | allEmails | array | All unique emails (Google + website) | #### Ratings & Reviews | Field | Type | Description | |-------|------|-------------| | rating | number | Average rating (0-5.0) | | reviewCount | number | Total number of reviews | | reviews | array | Customer reviews (if extractReviews: true) | #### Pricing | Field | Type | Description | |-------|------|-------------| | priceLevel | string | Price level symbols ($, $$, $$$, $$$$) | | priceRange | string | Price range (e.g., "$10-20") | | priceDistribution | object | Spending patterns by price range | | averagePrice | string | Calculated average price | #### Photos | Field | Type | Description | |-------|------|-------------| | mainPhoto | string | Primary business photo (always included) | | photos | array | Additional photo URLs (if extractPhotos: true) | #### Hours & Status | Field | Type | Description | |-------|------|-------------| | businessHours | object | Operating 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") | | temporarilyClosed | boolean | Whether the business is temporarily closed | | permanentlyClosed | boolean | Whether the business is permanently closed | #### Amenities (82 fields) | Field | Type | Description | |-------|------|-------------| | amenities | object | 82 boolean fields for business amenities | | amenitiesSummary | object | Summary 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 | Field | Type | Description | |-------|------|-------------| | busyness | object | 7-day hourly traffic (168 datapoints, 0-100 scale) | | bestContactTimes | object | AI-recommended contact times based on traffic | #### Atmosphere | Field | Type | Description | |-------|------|-------------| | atmosphere | array | Vibe descriptors (casual, cozy, romantic, trendy, upscale, etc.) | #### Social Media | Field | Type | Description | |-------|------|-------------| | socialMedia | object | Social media profile URLs by platform | | socialMediaSources | object | Source for each platform (google or website) | Supported platforms: Facebook, Instagram, Twitter, LinkedIn, TikTok, YouTube #### Lead Scoring | Field | Type | Description | |-------|------|-------------| | leadScore | number | Quality score 0-100 (higher = better quality lead) | | leadPriority | string | Priority 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) | Field | Type | Description | |-------|------|-------------| | reviewId | string | Unique review identifier | | rating | number | Review rating (1-5) | | text | string | Review text content | | publishedAt | string | Publication date (YYYY-MM-DD) | | publishedAtDate | number | Unix timestamp | | reviewerName | string | Reviewer display name | | reviewerPhotoUrl | string | Reviewer profile photo URL | | reviewerTotalReviews | number | Total reviews by this reviewer | | reviewerIsLocalGuide | boolean | Whether reviewer is a Google Local Guide | | ownerResponse | object | Owner'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) - FREE Features: Geographic hierarchy, country code, travel time & accessibility (no charge) See Apify Console for current pricing details. ## Advanced Features ### Custom Polygon Search Define exact search boundaries using GeoJSON: json { "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

Common Use Cases

Market Research

Gather competitive intelligence and market data

Lead Generation

Extract contact information for sales outreach

Price Monitoring

Track competitor pricing and product changes

Content Aggregation

Collect and organize content from multiple sources

Ready to Get Started?

Try Google Maps Places Extractor now on Apify. Free tier available with no credit card required.

Start Free Trial

Actor Information

Developer
enckay
Pricing
Paid
Total Runs
2,089
Active Users
22
Apify Platform

Apify provides a cloud platform for web scraping, data extraction, and automation. Build and run web scrapers in the cloud.

Learn more about Apify

Need Professional Help?

Couldn't solve your problem? Hire a verified specialist on Fiverr to get it done quickly and professionally.

Find a Specialist

Trusted by millions | Money-back guarantee | 24/7 Support