Google Maps Scraper icon

Google Maps Scraper

Extract business data from Google Maps at scale. Get names, addresses, phone numbers, websites, ratings, reviews, opening hours, popular times, photos,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Google Maps Scraper at a glance

Google Maps Scraper is a ready-to-run Apify actor from abotapi for collecting lead generation data. Its documented output includes place id, name, category, address and phone, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $3.70 per 1,000 results on the Apify Free plan and from $2.70 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Lead Generation, Social Media, Real Estate
Pricing
$3.70 per 1,000 results (Free plan), from $2.70 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
27 options
Run success
96.0% of completed public runs in the last 30 days

Extract business data from Google Maps at scale. Get names, addresses, phone numbers, websites, ratings, reviews, opening hours, popular times, photos, and 40+ data points per listing.

What Google Maps Scraper can do

  • Two ways to find places. Free text search terms, or direct Google Maps place-page and search-result links, no manual URL building.
  • Full business profiles. Contact details, location, category, price level, opening hours, popular times, photos and "people also search for" in one record.
  • Reviews on demand. Turn on review extraction per run, with sort order, or skip it entirely for faster runs.
  • Area coverage. Draw a custom polygon and the actor builds a grid of searches across it, so you are not limited to Google's per-search result cap.
  • Built for schedules. Incremental mode returns only new and changed businesses on recurring runs, and a resumed run never re-scrapes a place it already collected.

Choose what to collect

These inputs let you configure Google Maps Scraper. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
searchStringsArrayarrayList of search queries (e.g., 'restaurants', 'coffee shops')
startUrlsarrayDirect Google Maps URLs to scrape
locationstringLocation text (e.g., 'New York, NY', 'Tokyo, Japan')
latnumberLatitude for coordinate-based search
lngnumberLongitude for coordinate-based search
countrystringCountry for geolocation filtering
statestringState or region for geolocation filtering
Show 20 more inputs
More input fields
InputWhat it controls
citystringCity for geolocation filtering
postalCodestringPostal/ZIP code for geolocation filtering
customGeolocationobjectGeoJSON geometry (Polygon, MultiPolygon, or Point with radius)
zoomintegerMap zoom level (1=world, 21=building). Higher = more precise, fewer results
maxResultsPerSearchintegerMaximum number of results to extract per search query
maxReviewsintegerMaximum reviews to extract per business. Set to 0 to disable review extraction (faster)
maxImagesintegerMaximum number of image URLs to extract per business
reviewsSortstringHow to sort reviews when extracting

Choices: relevant, newest, highest, lowest

oneReviewPerRowbooleanOutput each review as a separate Dataset row (useful for CSV export)
skipClosedPlacesbooleanSkip temporarily or permanently closed businesses
languagestringLanguage code for search results (e.g., 'en', 'es', 'ja')
maxConcurrencyintegerNumber of parallel browser contexts (higher = faster but more memory)
resumeFromRunIdstringRun ID of a previous run to continue. Loads its already-scraped Place IDs and skips them, so this run only appends new businesses. See also Incremental mode below for recurring monitoring instead of a one-off resume.
resumeRunIdstringDeprecated, use "Resume From Run ID" above instead. Kept working so existing saved tasks that pass this field name are unaffected. If both are set, "Resume From Run ID" wins.
incrementalModebooleanRemember this search's results across scheduled runs and classify every business as NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED, instead of re-scraping from scratch. State is kept by the Actor itself, keyed on "State key" below (or a hash of your search settings). Default off, no existing user is affected until they opt in.
stateKeystringOptional. Manually name the Incremental-mode baseline so you can control exactly which runs share state (e.g. two different scheduled tasks on the same search). Leave empty to derive it automatically from your search settings, two differently-configured searches then never share a baseline.
emitUnchangedbooleanWhen Incremental mode is on, also output businesses whose data has not changed since the last run (changeType="UNCHANGED"). Off by default so a recurring run only bills and returns what's new. Turning this on bills and returns an extra row for every unchanged business, every run.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

placeIdPlace ID (text)
titleName (text)
categoryNameCategory (text)
addressAddress (text)
phonePhone (text)
websiteWebsite (link)
totalScoreRating (number)
reviewsCountReviews (number)
urlGoogle Maps URL (link)
changeTypeChange (text)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "placeId": "ChIJ49sQuK-AhYARM6U646SA12Y",
  "title": "Example Coffee Roasters",
  "url": "https://www.google.com/maps/place/Example-Coffee-Roasters/ChIJ49sQuK-AhYARM6U646SA12Y",
  "categoryName": "Coffee shop",
  "address": "100 Example St, San Francisco, CA 94102, USA",
  "street": "100 Example St",
  "city": "San Francisco",
  "state": "CA",
  "postalCode": "94102",
  "countryCode": "US",
  "location": {
    "lat": 37.7763,
    "lng": -122.4158
  },
  "plusCode": "QHFJ+8R Hayes Valley, San Francisco, CA",
  "phone": "+1 555 010 0100",
  "website": "https://www.example.com",
  "totalScore": 4.5,
  "reviewsCount": 1842,
  "priceLevel": "$$",
  "openingHours": [
    {
      "day": "Monday",
      "hours": "7 am to 6 pm"
    },
    {
      "day": "Tuesday",
      "hours": "7 am to 6 pm"
    }
  ],
  "imageUrls": [
    "https://lh3.googleusercontent.com/example=w800-h600"
  ],
  "menuUrl": "https://www.example.com/menu",
  "temporarilyClosed": false,
  "permanentlyClosed": false,
  "searchString": "coffee shops",
  "rank": 3,
  "isAdvertisement": false,
  "scrapedAt": "2025-12-06T10:30:00.000Z",
  "reviews": [
    {
      "reviewId": "review_0123456789abcdef",
      "reviewerName": "Sample Reviewer",
      "rating": 5,
      "text": "Great coffee and atmosphere.",
      "publishedAtDate": "2025-11-22T09:00:00.000Z"
    }
  ]
}

Ways to use this data

  • Lead generation: build prospect lists with names, phone numbers, websites and categories for a market or neighborhood.
  • Local SEO and reputation tracking: monitor ratings, review counts and review text for your business and competitors over time.
  • Market and site research: map competitor density, categories, price levels and ratings for real estate, retail or franchise planning.
  • Data enrichment: attach verified addresses, coordinates and opening hours to an existing list of businesses.
  • Delivery and menu research: collect menu links and order/delivery platform links for restaurants in an area.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Google Maps Scraper return?

The documented output for Google Maps Scraper includes place id, name, category, address, phone, website, rating and reviews. Availability of each field depends on the source page and the selected mode.

How much does Google Maps Scraper cost?

It costs $3.70 per 1,000 results on the Apify Free plan and from $2.70 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed businesses on a schedule?

Yes. Schedule the actor from the Schedules tab against the same search and turn on Incremental mode. Each run then returns only new, updated, reappeared and expired businesses, and unchanged ones are not billed unless you turn on Emit unchanged businesses.

Why do I only get 2 results for a search term?

maxResultsPerSearch defaults to 2. Raise it, up to 10,000, to collect more results per search term or grid point. For very large areas, a customGeolocation grid search covers more ground than a single search term ever can.

Why did my run finish with an empty or partial dataset instead of failing?

The actor only stops the whole run for a configuration problem: no searchStringsArray or startUrls provided, lat set without lng (or the reverse), coordinates out of range, or turning on Incremental mode with resumeFromRunId against a search that already has tracked state. If Google Maps blocks or fails to load an individual search or business page, that one page is skipped and logged, and the run still finishes and returns whatever it did collect, which can be an empty dataset if every page was blocked. Run it again, or lower maxConcurrency, if you see this often.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Google Maps Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.