Google Maps Scraper avatar

Google Maps Scraper

Pricing

from $2.90 / 1,000 results

Go to Apify Store
Google Maps Scraper

Google Maps Scraper

Extract data from thousands of Google Maps locations and businesses, including reviews, reviewer details, images, contact info, including full name, email, opening hours, prices & more. Export data, run via API, schedule and monitor runs, or integrate with other tools.

Pricing

from $2.90 / 1,000 results

Rating

5.0

(2)

Developer

Boztek LTD

Boztek LTD

Maintained by Community

Actor stats

3

Bookmarked

501

Total users

242

Monthly active users

17 hours ago

Last modified

Share

A fast, reliable Google Maps scraping actor built for clean, consistent place data. Give it search terms and a location — get a structured dataset with the fields you actually need.

What it does

  • Searches Google Maps by keywords, URLs, or Place IDs
  • Divides the target area into a geographic grid for maximum coverage
  • Scrolls through Google Maps search results and extracts place data
  • Fast Mode (default): captures data directly from search result cards — no individual page visits
  • Detail Mode: visits each place's detail page for complete data including phone, opening hours, and website

Scraping Modes

Fast Mode (detailGeneration: false, default)

Captures data directly from Google Maps search result lists without opening individual place pages.

Fields captured: Title, Rating, Review Count, Category, Partial Address, Google Maps URL.

Best for: large-scale searches where speed matters and basic info is sufficient.

Detail Mode (detailGeneration: true)

Visits each place's individual page to extract the full dataset.

Fields captured: Everything in Fast Mode, plus — Full Address (street, city, postal code, state), Phone, Website, Coordinates (precise), Plus Code, Opening Hours, Additional Info (amenities, accessibility, etc.), Place ID.

Best for: complete business profiles where phone numbers, hours, and websites are needed.


Pricing

ModeCost
Fast Mode results$2.90 per 1,000 places
Detail Mode results$2.90 per 1,000 places + $100 per 1,000 detail pages

An initial actor fee of $0.008 is charged per run.


Input Parameters

ParameterTypeDefaultDescription
searchStringsArrayArrayOne or more search terms (e.g. ["restaurant", "cafe"])
locationQueryStringFree-text location (e.g. "Istanbul", "Kadıköy, Istanbul")
maxCrawledPlacesPerSearchInteger50Global maximum number of places to scrape across all grid cells
languageStringenLanguage for Google Maps results
detailGenerationBooleanfalseEnable Detail Mode (visits each place page)
startUrlsArrayDirect Google Maps search or place URLs
placeIdsArrayList of Google Maps Place IDs
proxyConfigurationObjectApify Proxy or custom proxy settings
maxRequestRetriesInteger3Retries per failed request
maxConcurrencyInteger5Parallel browser pages
navigationTimeoutSecsInteger60Page load timeout in seconds
verboseLogBooleanfalseEnable debug-level logging

How Geographic Search Works

When locationQuery is provided alongside searchStringsArray:

  1. Geocode the area — Nominatim (OpenStreetMap) converts the location text into geographic boundaries (polygon/bounding box).
  2. Generate a search grid — The polygon is divided into a grid of coordinate points. Denser grids for small areas, wider spacing for large ones.
  3. Search Google Maps at each grid point — For each point, a Google Maps search URL is opened (/maps/search/{query}/@{lat},{lon},{zoom}z).
  4. Scroll and collect — The search result feed is scrolled until no new results appear (stagnation) or the global limit is reached.
  5. Detail page visits (Detail Mode only) — Each collected place URL is visited individually for full data extraction.

This approach uses Google Maps' own index, which is far more complete than any third-party database.


Example Output

Fast Mode

{
"title": "Karadeniz Pide Fırını",
"totalScore": 4.6,
"reviewsCount": 892,
"categories": ["Pide restaurant"],
"address": "Moda Cd. No:12, Kadıköy",
"url": "https://www.google.com/maps/place/Karadeniz+Pide+Fırını/...",
"scrapedAt": "2025-03-06T14:22:10.000Z"
}

Detail Mode

{
"title": "Karadeniz Pide Fırını",
"totalScore": 4.6,
"reviewsCount": 892,
"categories": ["Pide restaurant"],
"address": "Moda Cd. No:12, 34710 Kadıköy/İstanbul",
"phone": "+90 216 345 67 89",
"website": "https://karadenizpide.com",
"coordinates": { "lat": 40.9897, "lng": 29.0275 },
"plusCode": "3GXJ+R2 Istanbul",
"openingHours": [
{ "day": "Monday", "hours": "08:00 to 22:00" },
{ "day": "Tuesday", "hours": "08:00 to 22:00" }
],
"additionalInfo": {
"Service options": [{ "Dine-in": true }, { "Takeaway": true }]
},
"placeId": "ChIJ...",
"url": "https://www.google.com/maps/place/Karadeniz+Pide+Fırını/...",
"scrapedAt": "2025-03-06T14:22:10.000Z"
}

Tips

  • Use a specific locationQuery (e.g. "Kadıköy, Istanbul" rather than "Istanbul") for faster, more targeted results.
  • maxCrawledPlacesPerSearch is a global ceiling — the actor stops as soon as this many places are collected, regardless of how many grid cells remain.
  • Fast Mode is recommended for discovery and lead generation at scale. Switch to Detail Mode only when phone numbers or opening hours are required.
  • For direct place lookups, use placeIds or startUrls — these skip the search step entirely.