Google Maps Scraper - Every Business in an Area avatar

Google Maps Scraper - Every Business in an Area

Pricing

from $3.00 / 1,000 places

Go to Apify Store
Google Maps Scraper - Every Business in an Area

Google Maps Scraper - Every Business in an Area

Get every business in a city, county or ZIP code from Google Maps, not only the first 120. Each row has name, address, phone, website, rating, reviews, hours, categories and whether the listing is claimed. You pay only for places delivered; scheduled runs can return only new places.

Pricing

from $3.00 / 1,000 places

Rating

0.0

(0)

Developer

Mediocre_Interest

Mediocre_Interest

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Scrape every business in a city, county or ZIP code from Google Maps, with its phone, website, rating, review count, opening hours, address and whether the owner has claimed the listing, and pay only for the places you keep. Leave the search terms empty and press Start to get a free sample of 25 Austin coffee shops first. Schedule it with Only places not returned before and each run returns just the businesses that appeared since the last one.

  • The whole area, not the first page. One Google Maps search stops after about 200 results. This Actor searches the area tile by tile, and in tests across three areas it found 91% to 98% of the businesses of the searched kind.
  • Filters cost nothing. Leave out closed businesses, places with or without a website, claimed or unclaimed listings, ratings you don't want, and the other trades Google adds to a search. A place a filter removes is never charged.
  • Each place is billed once. Duplicates across search terms and map tiles, places outside the area, and places an earlier run already returned are never charged.
  • Emails and social profiles on request, charged only for the places where something is found.

What does Google Maps Scraper - Every Business in an Area do?

Google Maps is the most complete directory of local businesses there is, but it is built for finding one place, not for listing all of them. Its results list shows about 120 places, and a search stops after about 200. It fills that list with places outside the area you are looking at, and once an area runs out of what you asked for, with other kinds of business: a rural search for plumbers comes back full of handymen and hardware stores. A single search misses most of a city.

This Actor turns a search term and a location into a complete list. It finds the area Google Maps shows for your location, such as a city, a county, a ZIP code or a state. It then searches that area for each of your terms, one map tile at a time. A tile that is too busy for one search to list completely is split into four smaller tiles, and each is searched again, so a dense downtown gets many small searches and the countryside a few large ones. It keeps the places inside the area, removes duplicates, applies your filters and writes one row per business.

Each row carries what Google Maps lists for the business:

  • What it is: name, main category and every category Google files it under.
  • How it rates: star rating, number of reviews, number of photos.
  • How to reach it: phone in local and international format, website, and, if you ask for them, the emails and social profiles on that website.
  • Where it is: full address, street, neighbourhood, city, postal code, state, country, and its coordinates.
  • Lead signals: whether the owner has claimed the listing, whether it has a website, and whether Google marks it permanently closed.
  • Its weekly opening hours, and its Google place ID and Maps link.

Which places does it leave out, and never charge for?

A place that is left out is never written to your dataset and never charged. The run summary counts each one under the first reason that applies.

ReasonWhen it appliesWhat to know
Outside the areaAlwaysGoogle lists places past the edge of the map. Only places inside the area searched are kept
Found twiceAlwaysA business found by two search terms, or in two map tiles, is one row, credited to the first term
Permanently closedSkip permanently closed places is on (the default)Turn it off to keep them, marked in isPermanentlyClosed
Not the kind you searched forOnly places of the kind you searched for is onMatched against the business's Google categories. See Why do I get businesses that are not what I searched for?
With or without a websiteWebsite is setUseful for selling websites to businesses that have none
Claimed or unclaimedListing claimed by the owner is setUnclaimed listings are businesses that have never taken control of their Google profile
Outside a rating bandRating is set4.0 stars or more, below 4.0, below 3.0, or no reviews yet
Returned by an earlier runOnly places not returned before is onRemembered for each combination of search terms and location

How does it cover a whole city, county or state?

It starts from the area Google Maps itself shows when you search the location. That area is a rectangle, so it can reach a little past city or county lines; every row keeps its own city and postal code, so you can filter on them. Busy tiles are split and searched again until each is listed to the end, and the run summary says whether the whole area was covered or the run stopped first at your Maximum places, your spending limit or its timeout.

Why use Google Maps Scraper - Every Business in an Area?

  • Complete lists of local businesses. Tiling finds what one search cannot. In tests against a full scan of the same area on the same day, it found 98% of the plumbing businesses in Gillespie County, Texas, 97% of the restaurants in Santa Monica, California, and 91% of the plumbing businesses in Austin, Texas.
  • Only the new businesses, every week. Switch on Only places not returned before and schedule the run: each run returns only places the same search has not returned before, and charges for nothing else.
  • Lead signals for agencies. Find businesses with no website for web design, unclaimed or low-rated listings for local SEO and reputation work, and filter on them at no extra cost.
  • Pay for what you keep. Filtered places, duplicates, places outside the area and places returned before are free. Contacts are charged only where some are found.
  • No login, no proxy to buy. It needs no Google account.
  • Everything Apify adds. Run it on a schedule, call it from the API, connect it to Make, n8n or Zapier, and export the places as CSV, Excel or JSON.

How to scrape every business in an area from Google Maps

  1. Open the Actor in Apify Console and press Start with Search terms empty. You get the free sample: 25 coffee shops in Austin, TX, from a saved search, at no charge.
  2. Enter what you would type into Google Maps in Search terms, one per line, such as plumber or dentist.
  3. Set Location to a city, county, state, ZIP or postal code, or country, such as Austin, TX, Gillespie County, TX or 90210.
  4. Set Maximum places. The default is 500; set 0 to search the whole area.
  5. Pick any Filters: only places of the kind you searched for, website, claimed listing, rating, and only places not returned before.
  6. To collect emails and social profiles, tick Find emails and social profiles.
  7. Press Start. When the run finishes, open the Places tab, or export the rows as CSV, Excel or JSON.

To get new businesses every week, save the input as a task with Only places not returned before switched on, and add a schedule in Apify Console.

Input

FieldWhat it does
Search termsWhat you would type into Google Maps, one per line, up to 10. Each is searched across the whole location. Empty returns the free sample.
LocationCity, county, state, ZIP or postal code, or country. The whole area Google Maps shows for it is searched.
Maximum placesStop after this many places. Default 500; 0 means no limit.
Skip permanently closed placesOn by default. Off keeps them, marked in isPermanentlyClosed.
Only places of the kind you searched forOff by default. On leaves out the other kinds of business Google adds to a search.
WebsiteAny, only places with a website, or only places without one.
Listing claimed by the ownerAny, only claimed listings, or only unclaimed ones.
RatingAny, 4.0 stars or more, below 4.0, below 3.0, or no reviews yet.
Only places not returned beforeReturn only places that earlier runs with the same search terms and location did not return.
Find emails and social profilesVisit each business's website for emails and social profiles. Off by default.
Proxy configurationNo proxy by default. Choose the RESIDENTIAL group if Google refuses a search.

Get the free sample, with no search terms at all:

{}

Find the plumbers in Fredericksburg, Texas, leaving out the other trades Google lists alongside them, and only the ones earlier runs of this search did not return:

{
"searchTerms": ["plumber"],
"location": "Fredericksburg, TX",
"maxPlaces": 0,
"onlyMatchingCategory": true,
"onlyNewPlaces": true
}

Find dentists in ZIP code 90210 that have no website, with their emails and social profiles:

{
"searchTerms": ["dentist"],
"location": "90210",
"website": "without",
"scrapeContacts": true
}

Output

Each run writes one row per business to its default dataset, shown in the Places tab. You can export it as JSON, CSV, Excel, XML or HTML, or read it through the API. The run's totals go to its key-value store as summary-run.

The free sample input above produces 25 rows. This is the seventh:

{
"name": "UFO Coffee & Tea",
"category": "Coffee shop",
"categories": "Coffee shop",
"rating": 4.9,
"reviewCount": 50,
"phone": "(512) 850-5150",
"phoneInternational": "+1 512-850-5150",
"website": "http://ufo-coffee.com/",
"domain": "ufo-coffee.com",
"emails": null,
"facebook": null,
"instagram": null,
"linkedin": null,
"twitter": null,
"youtube": null,
"tiktok": null,
"isClaimed": false,
"isPermanentlyClosed": false,
"openingHours": "Monday: 7 AM–4 PM; Tuesday: 7 AM–4 PM; Wednesday: 7 AM–4 PM; Thursday: 7 AM–4 PM; Friday: 7 AM–4 PM; Saturday: 7 AM–4 PM; Sunday: 7 AM–4 PM",
"imageCount": 15,
"address": "2307 1/2 Manor Rd, Austin, TX 78722",
"street": "2307 1/2 Manor Rd",
"neighborhood": "East Austin",
"city": "Austin",
"postalCode": "78722",
"state": "Texas",
"countryCode": "US",
"latitude": 30.2844171,
"longitude": -97.71734699999999,
"placeId": "ChIJ0S8AJAC1RIYRLIa71SkPRXc",
"cid": "8594292136260372012",
"googleMapsUrl": "https://www.google.com/maps?cid=8594292136260372012",
"isNew": null,
"searchTerm": "coffee shops",
"searchLocation": "Austin, TX",
"source": "Google Maps sample",
"collectedAt": "2026-10-12T07:08:40.000Z"
}

A live search returns rows of the same shape, with source set to Google Maps, isNew set to true or false, and the contact fields filled when you ask for contacts and the website lists them.

What does each place row contain?

ColumnsMeaning
name, category, categoriesThe business, the first category Google lists for it, and every category, separated by commas
rating, reviewCount, imageCountStar rating, number of Google reviews and number of photos. Empty when Google shows none
phone, phoneInternationalThe phone number as Google shows it, and in international format
website, domainThe website on the listing and its domain
emailsUp to three addresses from the business's website, on its own domain or role inboxes such as info@. Never personal mailboxes such as gmail.com. Only with Find emails and social profiles
facebook, instagram, linkedin, twitter, youtube, tiktokThe business's own profile on each network, from its website. Only with Find emails and social profiles
isClaimedWhether the owner has claimed the Google listing. false means Google Maps shows "Claim this business"
isPermanentlyClosedWhether Google marks the business permanently closed. true appears only when Skip permanently closed places is off
openingHoursWeekly hours, one day after another
address, street, neighborhood, city, postalCode, state, countryCodeThe address, whole and in parts
latitude, longitudeWhere Google places the business on the map
placeId, cid, googleMapsUrlGoogle's place ID, its numeric customer ID, and a link that opens the listing on Google Maps
isNewWhether earlier runs of the same search had not returned it. Empty on the free sample
searchTerm, searchLocation, source, collectedAtWhich of your terms found it, the location searched, where the row came from, and when

What is in the run summary?

The summary-run record in the key-value store says what the run did:

  • the area searched, with its name and size, and whether every tile was searched to the end;
  • how many places Google listed, how many were outside the area, how many your filters left out, and of those how many were other kinds of business, with their categories;
  • how many were left out as returned before, how many were delivered and how many charged;
  • with contacts on, how many websites were visited and how many gave an email or a social profile;
  • why the run stopped, if it stopped early: your maximum, your spending limit or its timeout.

How much does it cost to scrape businesses from Google Maps?

The Actor is pay per event, at the prices shown on this page:

EventChargedWhen
Place (place-scraped)Once per business deliveredAfter that business's row is saved to your dataset
Contact (contacts-found)Once per business whose website gave an email or a social profileOnly with Find emails and social profiles on, after the row is saved

A place costs $4.00 per 1,000 on the Free plan, $3.66 on Bronze, $3.33 on Silver and $3.00 on Gold and above. Contacts cost $2.00 per 1,000 places where some are found, on every plan. Apify also charges its usual small start fee per run.

What whole areas cost on the Free plan, from real searches:

SearchPlacesCost
Plumbers across Gillespie County, TX282$1.13
The same, with Only places of the kind you searched for115$0.46
Plumbers across Austin, TX517$2.07
Restaurants across Santa Monica, CA1,688$6.75

Nothing else is charged:

  • The free sample costs nothing.
  • Places your filters leave out cost nothing, whichever filter it is.
  • Duplicates, places outside the area and places returned before cost nothing.
  • Websites with no contacts cost nothing, and neither do places with no website.
  • A search that finds nothing costs nothing, and neither does a run that cannot reach Google Maps.

To set a budget, set Maximum cost per run in the run options. The Actor stops when it reaches it, never delivers a place it cannot charge for, and its status message says how many it delivered. If your budget does not cover a single place, the run stops before it searches.

How to run the Google Maps scraper from the API or from Make, n8n and Zapier

A town's businesses usually arrive within a minute, so the Actor can run synchronously: one request in, places out.

curl -X POST "https://api.apify.com/v2/acts/mediocre_interest~google-maps-business-list/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"searchTerms": ["plumber"],
"location": "Fredericksburg, TX",
"maxPlaces": 20
}'

The response is a JSON array of up to 20 place rows like the one above. Add &format=csv for a spreadsheet, or &fields=name,phone,website,rating,reviewCount,address,isClaimed to keep only the columns you need. A run that searches a whole city takes longer than a synchronous request waits, so start it with /runs and read its dataset when it finishes.

To feed a CRM, a Google Sheet or an outreach tool, use Apify's integrations for Make, n8n, Zapier and others. For a weekly list of new businesses, schedule the run in Apify Console with Only places not returned before switched on.

Tips for better results

  • Use Google's own word for the kind of business. Search terms work best as Google Maps names categories: "dentist", "hair salon", "coffee shop". This matters most with Only places of the kind you searched for, which reads categories word for word, in English.
  • One location per run, as large as you need. A county or a state works as well as a city; set Maximum places low to try a search first.
  • Search several terms together. Up to 10 terms share one run, and a business that two of them find is delivered and charged once.
  • Build lead lists with the free filters. "Without a website" finds businesses that need one, "unclaimed" finds listings nobody manages, and "below 4.0 stars" finds businesses with a reputation to repair.
  • If Google refuses a search, run it again later, or choose the RESIDENTIAL proxy group under Advanced.

FAQ

Can it get more than 120 results from Google Maps?

Yes. The Google Maps list stops at about 120 places and one search at about 200. This Actor runs as many searches as the area needs, one per map tile, and joins their results. How many places you get depends on how many Google lists in the area: 282 for plumbers in a rural Texas county, 1,688 for restaurants in Santa Monica.

Why do I get businesses that are not what I searched for?

Google Maps fills a search with other kinds of business once an area runs out of what you asked for: a search for plumbers in the countryside also lists handymen, builders and hardware stores. They are inside the area, so by default they are delivered. Switch on Only places of the kind you searched for to leave them out, uncharged. It keeps a place when one of its Google categories holds every word of one of your search terms, ignoring words such as "near me" and "best". Because it reads words, it also leaves out a business Google files under a synonym, such as a coffee shop listed only as "Cafe", which is why it is off by default.

The Actor reads business listings that Google Maps shows to anyone, without logging in. It returns business information only: no reviews, no reviewer names and no owner names, and only email addresses a business publishes for itself. Whether a particular use is lawful depends on where you are and what you do with the data, so if you are unsure, ask a lawyer.

Does it scrape Google Maps reviews and photos?

No. Each row has the rating, the number of reviews and the number of photos, but not the reviews or the photos themselves.

Why did my run return no places?

The run's status message gives the reason:

  • Google Maps lists nothing for the search. The message names the term and the place searched.
  • Your filters left everything out. The message counts what was left out, and when Only places of the kind you searched for removed them, names the categories Google uses for them, so you can search with one of those words.
  • Nothing new. With Only places not returned before on, a run that finds only places it has already returned succeeds with "No new places".
  • The location is not an area. If Google matches your location to a business rather than a place, the run fails and names what it matched.

None of these is charged.

How does it remember which places it already returned?

Every live run records the places it returned in a key-value store in your Apify account, google-maps-business-list-seen, with one record per combination of search terms and location. With Only places not returned before on, a run leaves out the places in that record. Delete the store to start over.

Where do the emails and social profiles come from?

From the business's own website, never from Google. With Find emails and social profiles on, the Actor reads the home page, and the contact page when the home page shows no address. It keeps addresses on the business's own domain and role inboxes such as info@ or bookings@, and drops personal mailboxes such as gmail.com. A LinkedIn link is kept only when it is a company page, never a person's profile. Places whose website shows nothing are not charged.

Which countries does it work in?

Any country Google Maps covers. Locations are looked up as Google Maps looks them up, so a postal code from the UK, Canada or Germany works as well as a US ZIP code. Categories and opening hours come back in English.

What other Actors work with this one?

Support

Found a business the Actor missed, a place it should have left out, or a run that returned nothing it should have? Open an issue on the Issues tab, with the run ID and the search terms and location that show it. Custom work, such as a scheduled lead list for your agency or extra fields, is available on request.