Google Maps Scraper — Business Leads, Phones & Websites avatar

Google Maps Scraper — Business Leads, Phones & Websites

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Google Maps Scraper — Business Leads, Phones & Websites

Google Maps Scraper — Business Leads, Phones & Websites

Scrape Google Maps businesses by keyword and location: export name, phone, website, address, rating, category and GPS coordinates to Excel, CSV or JSON. Build local lead lists for any city or niche — just type what and where, no coordinates or code needed.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

Share

Google Maps Scraper — Business Leads, Phones, Websites & Ratings

Turn any Google Maps search into a clean, exportable list of businesses. This Google Maps scraper lets you type what you want and where — like restaurants in Chicago, dentists in London, or plumbers in Austin TX — and get back every matching place with its name, phone, website, full address, rating, review count, category and GPS coordinates. No login, no coordinates, no coding.

Export your results to JSON, CSV, Excel, or API in a few clicks.

Built for local lead-generation agencies, sales teams, SDRs, market researchers, real-estate and franchise scouts, and anyone who needs a fresh, structured Google Maps business list without copy-pasting from the map.


🔎 Why scrape Google Maps?

Google Maps is the world's largest business directory. Almost every shop, clinic, restaurant, contractor, agency and office on earth has a Maps listing with a phone number, website, address, category and star rating attached. That makes it the single richest public source of local business leads and competitor intelligence available anywhere.

The problem is that Google Maps is built to be browsed, not downloaded. You can scroll the list one card at a time, but there is no "export" button, no bulk list, and no official way to pull hundreds of businesses for a city or niche into a spreadsheet. Doing it by hand — opening each pin, copying the phone, the website, the rating — is slow, error-prone and impossible at scale.

This Google Maps scraper automates all of it. You describe the search exactly like you would type it into the Maps search box, and the actor paginates through the results, extracts the structured fields, de-duplicates every place, and hands you a clean dataset ready for your CRM, outreach tool or BI dashboard.

Common reasons people scrape Google Maps:

  • Build local lead lists — every dentist, plumber, gym or law firm in a city, with phone and website ready for outreach.
  • Sales prospecting — qualify prospects by category, rating and review volume before you ever pick up the phone.
  • Competitor mapping — see every rival in an area, their ratings, how many reviews they have and where they sit.
  • Market research — measure how saturated a niche is in a city, or compare the same niche across multiple cities.
  • Data enrichment — append rating, category, website and coordinates to an existing company list by searching each name + city.
  • Territory & franchise planning — find white-space neighbourhoods with weak competition or low-rated incumbents.
  • Directory & aggregator building — seed a niche directory with real, verified local listings.

✨ What this Google Maps scraper does

  • ✅ Keyword + location search — type natural "what + where" queries (coffee shops in Seattle, real estate agents in Dubai, hotels in Barcelona). Add as many searches as you like in one run.
  • ✅ Automatic pagination — the actor walks through every result page for each search and returns hundreds of de-duplicated places per query (up to a safety ceiling of ~6,000 per search), not just the first screen.
  • ✅ Global de-duplication — the same business never appears twice, even across overlapping searches, thanks to a stable Google feature-ID key.
  • ✅ Rich business fields — for every place you get name, primary category + all categories, phone, website, rating, review count, full address, street / city-region / country, latitude & longitude, plus stable Google identifiers (googlePlaceId, featureId, cid) and a direct googleMapsUrl.
  • ✅ Language & country targeting — choose the results language (19 options) and which country's Google to search from (25 options) to control local ranking and formats.
  • ✅ Volume controls — cap the total number of places with Max results, or limit each individual search with Max results per search.
  • ✅ Fast & reliable — a lightweight HTTP engine (no heavy browser) talks directly to the Maps search backend, with automatic proxy rotation and retries on any block.
  • ✅ Export anywhere — download as JSON, CSV or Excel, or pull the dataset straight from the Apify API.

Only fields the actor actually captures are listed above — no empty-column padding.

🎯 Use cases

  • Lead-generation agencies — deliver ready-to-call lists of local businesses with phone and website for any client niche and city.
  • Sales & SDR teams — fill the pipeline with qualified local prospects filtered by category and review strength.
  • Local SEO & marketing agencies — audit every competitor's rating and review count in a target market.
  • Real-estate & franchise scouts — map commercial density and find under-served neighbourhoods.
  • Market researchers & analysts — quantify how many businesses of a type exist per city and benchmark across regions.
  • CRM data teams — enrich existing accounts with fresh ratings, categories, coordinates and contact details.
  • Directory & app builders — populate a local-business directory, marketplace or map app with real listings.
  • Franchise & retail chains — monitor new competitors appearing in each trading area over time.

📥 Input

You only need one thing: one or more searches, typed the way you would type them into the Google Maps search box. Everything else is optional.

FieldTypeDescription
queriesarray of stringsWhat & where to search. One entry per search, e.g. "restaurants in Chicago", "dentists in London". Add as many as you like. Leave empty to get a mixed sample of popular business types across major cities.
languagestring (enum)Results language / Google Maps interface language. 19 options (en, tr, es, fr, de, it, pt, nl, ru, ar, ja, ko, zh-CN, hi, pl, sv, id, th, vi). Default en.
countryCodestring (enum)Which country's Google to search from — affects local ranking and formats. 25 options (us, gb, ca, au, de, fr, es, it, nl, tr, br, mx, in, jp, kr, ae, sa, za, sg, id, ph, pl, se, ru, ar). Default us.
maxItemsintegerStop after collecting this many places in total across all searches. 0 = no limit.
maxItemsPerQueryintegerOptional cap on the number of places returned for each individual search. 0 = no per-search limit.
proxyConfigurationobjectProxy settings. Recommended and enabled by default. Datacenter proxies work well; use residential for very large jobs.

Example input

{
"queries": [
"coffee shops in Oakland",
"dentists in London",
"real estate agents in Dubai"
],
"language": "en",
"countryCode": "us",
"maxItems": 500,
"maxItemsPerQuery": 200,
"proxyConfiguration": { "useApifyProxy": true }
}

📤 Output

Each place becomes one clean, flat JSON record. Here is a real example item:

{
"name": "The Caffè by Mr. Espresso",
"category": "Coffee shop",
"categories": ["Coffee shop"],
"rating": 4.8,
"reviewCount": 234,
"phone": "(510) 653-3394",
"website": "http://www.thecaffeoak.com/",
"address": "The Caffè by Mr. Espresso, 1120 Broadway, Oakland, CA 94607",
"street": "1120 Broadway",
"cityRegion": "Oakland, CA 94607",
"country": "United States",
"latitude": 37.8042,
"longitude": -122.2714,
"googleMapsUrl": "https://www.google.com/maps?cid=9907941551397981661",
"googlePlaceId": "ChIJg4F97hSBj4ARHciI78IYfIk",
"featureId": "0x808f8114ee7d8183:0x897c18c2ef88c81d",
"cid": "9907941551397981661",
"searchQuery": "coffee shops in Oakland",
"scrapedAt": "2026-10-25T12:00:00.000Z"
}

Field reference

FieldDescription
nameBusiness name
categoryPrimary category
categoriesAll listed categories (array)
ratingAverage star rating (e.g. 4.8)
reviewCountNumber of reviews behind the rating
phoneContact phone number (present when the listing shows one)
websiteOfficial website URL (present when the listing shows one)
addressFull formatted address
streetStreet line of the address
cityRegionCity / region / postcode line
countryCountry
latitudeGPS latitude
longitudeGPS longitude
googleMapsUrlDirect Google Maps link to the place (by CID)
googlePlaceIdStable Google Place ID (ChI…), present when available
featureIdGoogle feature ID (0x…:0x…)
cidGoogle customer/map ID (decimal)
searchQueryThe search this result came from
scrapedAtISO timestamp of extraction

Contact fields such as phone and website are populated whenever the public Maps listing exposes them; some listings (especially informal or newer businesses) simply don't publish one, so those fields can be null. The core identity and location fields (name, category, rating, reviewCount, address parts, coordinates, IDs) are present for essentially every place.

🔁 Pagination & scale

Google Maps returns results in pages of about 20 places. This Google Maps scraper advances through those pages automatically for each search — it requests page 1, page 2, page 3, and so on, carrying an offset forward until a short (final) page is returned or no new places appear. Every place is keyed by its stable Google feature ID and de-duplicated both within a search and across all your searches, so you never get repeats.

Per search the actor will collect up to roughly 6,000 places (a safety ceiling), which comfortably covers what Google exposes for a given area. You control the overall volume with two inputs:

  • maxItems — a hard stop on the total number of places across all searches.
  • maxItemsPerQuery — a per-search cap, useful when you want an even number from each city or niche.

Because a single Maps search is effectively capped by what Google shows for one area, the way to get full coverage of a large city is to split it into districts, neighbourhoods or nearby towns and add each as its own query — the global de-duplication then merges everything into one clean list.

⚙️ How to use

  1. Open the actor on the Apify Console.
  2. In What & where to search, add one or more searches (coffee shops in Seattle, hotels in Barcelona, …).
  3. Optionally choose a results language and a country to search from.
  4. Optionally set Max results (total) and Max results per search to control volume.
  5. Click Start. Watch the log stream places in page by page.
  6. When the run finishes, open the Dataset tab and export as JSON, CSV or Excel — or call the Apify API to pull results into your own app.
  7. Automate it: run on a schedule, trigger it via the API, or connect it to Make, Zapier, Google Sheets or a webhook to keep a lead list fresh.

Prefer code? Start the actor and read its dataset straight from the Apify API, or use the Apify JavaScript / Python client.

💡 Tips

  • Be specific with location — pizza in Brooklyn NY returns tighter, more relevant results than just pizza.
  • Split big areas — run one search per city, borough or district to go beyond a single area's result ceiling, then let global de-duplication merge them.
  • Match language to country — scraping French listings? Set language to fr and countryCode to fr for the cleanest local formats and ranking.
  • Sort by review volume afterwards — rating plus reviewCount together tell you which businesses are both well-rated and established; a 5.0 with 3 reviews is very different from a 4.6 with 1,200.
  • Enrich an existing list — feed queries like "{business name} {city}" to attach ratings, categories and coordinates to companies you already have.
  • Keep the proxy on — it is enabled by default and keeps results flowing reliably at scale.

❓ FAQ

Is scraping Google Maps legal? The actor collects only publicly visible business information — the same details anyone can see on the map (name, category, phone, website, address, rating, reviews). It does not log in or access private data. As always, use the output responsibly and in line with your local regulations and your intended use.

How many results can I get, and how fast? Each search returns hundreds of de-duplicated places (up to a ~6,000 safety ceiling per search), and you can run many searches in one go. The HTTP engine is lightweight — no heavy browser — so a typical city-niche search completes in seconds to a couple of minutes depending on volume and proxy.

Do I need proxies? A proxy is recommended and enabled by default. Datacenter proxies handle most jobs; switch to residential for very large or heavy runs. The actor automatically rotates IPs and retries whenever Google throttles a request.

Do I need to log in or provide an API key? No. There is no Google login and no Google API key. You just type your searches and run.

What export formats are supported? JSON, CSV and Excel from the dataset, plus the full Apify API and JavaScript/Python clients for programmatic access.

Is there an API? Yes — every run writes to an Apify dataset you can read via the Apify API, and you can start runs via API too, so the scraper doubles as a Google Maps API for your own apps and workflows.

How fresh is the data? Every run queries Google Maps live, so results reflect the current listings at run time. Each record carries a scrapedAt timestamp. Put the actor on a schedule to keep a lead list continuously up to date.

Can I filter by category or location? Yes — your search phrase is the filter. dentists in London restricts both the category (dentists) and the location (London). For a whole city, split it into districts and add each as a separate query.

Why is phone or website sometimes empty? Not every business publishes a phone number or website on its public listing, so those fields can be null. The core identity, rating, review-count, address and coordinate fields are present for essentially every place.

Can I get the review count, not just the rating? Yes. Every record includes both rating (the average stars) and reviewCount (how many reviews that average is based on).


Ready to build your list? Type a search like restaurants in New York, hit Start, and export your first batch of Google Maps business leads to JSON, CSV or Excel in minutes.