Google Maps Scraper - Business Leads, Phone, Reviews & GPS avatar

Google Maps Scraper - Business Leads, Phone, Reviews & GPS

Pricing

Pay per event

Go to Apify Store
Google Maps Scraper - Business Leads, Phone, Reviews & GPS

Google Maps Scraper - Business Leads, Phone, Reviews & GPS

Scrape Google Maps businesses at scale: name, category, full address, phone, website, rating, review count, price level & GPS. Perfect for local SEO and B2B lead lists. Any city or niche, 190+ countries. Clean JSON/CSV. No API keys.

Pricing

Pay per event

Rating

5.0

(4)

Developer

Santhej Kallada

Santhej Kallada

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

2 days ago

Last modified

Share

Google Maps Scraper — Business Leads, Phone, Website, Reviews & GPS

Turn any Google Maps search into a clean B2B lead list. Scrape business name, category, full address, phone, website, rating, review count, and GPS — for any city or niche, anywhere in the world.

Search "dentist austin tx" or "plumbers near london" and get back every business as a structured row, ready for your CRM, cold-outreach tool, or map. No proxies, no captchas, no scraping to maintain.


What you get per business

  • 🏢 Name, category & extra categories — the business and everything it's tagged as.
  • 🏷️ Machine-readable category IDscoffee_shop, meal_takeaway — filter and join without string matching.
  • 📍 Full address, parsed — street, borough, city, region/state, ZIP, country code, plus latitude/longitude.
  • 📞 Phone number — direct dialing data for outreach.
  • 🌐 Website & booking link — domain, full URL, and an online-booking URL when listed.
  • Rating, review count & hotel rating — social proof and popularity signals.
  • 📊 Full star breakdown — the exact count of 1★, 2★, 3★, 4★ and 5★ reviews, not just the average.
  • 🎯 Why it ranked — Google's own local justifications, the review snippets it used to match the business to your search.
  • Claimed status — whether the owner has claimed the listing.
  • 🕒 Opening hours & current status — full weekly timetable plus open/closed.
  • 🖼️ Main image & total photo count — visual + popularity signal.
  • 🆔 Place ID, CID & feature ID — stable Google identifiers for dedup and joins.
  • 💲 Price level — qualify leads at a glance.
  • 💬 Reviews (optional) — flip on Include reviews to also pull each place's individual reviews: rating, text, author, date, and the owner's reply.

Fields most Maps scrapers don't return

FieldWhat it isWhy it matters
rating_distribution{"1": 75, "2": 59, "3": 128, "4": 381, "5": 1341}A 4.4 built on 75 one-star reviews is a very different lead from a clean 4.4. Most scrapers return only the average — this one returns the whole curve.
is_claimedtrue / falseUnclaimed listings are the single easiest local-SEO pitch there is. Filter for false and you have a call list.
local_justificationsReview snippets Google used to match the placeShows why a competitor ranks for your keyword — the exact language Google is rewarding.
category_ids["coffee_shop", "cafe"]Stable machine IDs, so your pipeline isn't matching on translated display names.

Filters

  • Minimum rating — keep only places rated at or above N stars.
  • Category filter words — keep only places whose category contains your keyword(s).
  • Skip closed places — drop permanently/temporarily closed listings.

Grid search — get past Google's result cap

Google returns at most ~180–250 results for any single Maps search, no matter how high you set Results per query. That's Google's limit, not the scraper's — and it's why "scrape every dentist in Chicago" normally can't be done in one search.

Turn on Grid search and the actor splits your area into a grid of map tiles, searches each tile separately, and merges everything into one list — de-duplicated by place ID, so you're never billed twice for the same business.

  • Grid size — 2×2 up to 5×5 tiles (a 3×3 grid = 9 tiles).
  • Grid radius (km) — how far out the grid reaches. ~5 km for a city centre, 25–50 km for a whole metro.

Each tile is a separate search, so a bigger grid costs proportionally more — but it reaches businesses a single search physically cannot return. The run summary reports cells_searched and duplicates_removed so you can see exactly what the grid bought you.

{
"queries": ["coffee shop austin tx"],
"gridSearch": true,
"gridSize": 3,
"gridRadiusKm": 5
}

Why this scraper

This actorDIY / browser scraping
SetupType a search, hit runBuild + babysit a scraper
ReliabilityEnterprise infra, retriesBreaks on Maps changes
Coverage190+ countriesHard to localize
OutputJSON / CSV / Excel, API-readyRaw HTML
CostPay per business, no plan"Free" but costs hours

Perfect for

  • B2B lead generation — build targeted prospect lists by niche + city.
  • Local SEO — audit the local pack, track competitors, find citation gaps.
  • Cold outreach — phone + website data for calling and emailing.
  • Market research — map density, ratings, and competition in any area.
  • Data enrichment & AI agents — feed structured place data into pipelines and MCP tools.

How to use it

  1. Enter your searches (what + where).
  2. Pick country, language, and results per query.
  3. Run it — export JSON/CSV or pull via the API.

Example input

{
"queries": ["coffee shop chicago", "dentist austin tx"],
"resultsDepth": 20,
"locationCode": "2840"
}

Example output (one row per business)

{
"query": "coffee shop austin tx",
"title": "Jo's Coffee – South Congress",
"category": "Coffee shop",
"additional_categories": ["Cafe", "Takeout Restaurant", "Sandwich shop"],
"category_ids": ["coffee_shop", "cafe", "meal_takeaway", "sandwich_shop"],
"address": "1300 S Congress Ave, Austin, TX 78704",
"street": "1300 S Congress Ave",
"borough": "Bouldin Creek",
"city": "Austin",
"region": "Texas",
"zip": "78704",
"country_code": "US",
"phone": "+1512-852-2300",
"domain": "www.joscoffee.com",
"url": "https://www.joscoffee.com/south-congress-jos",
"snippet": "1300 S Congress Ave, Austin, TX 78704",
"rating": 4.4,
"reviews_count": 1984,
"rating_distribution": { "1": 75, "2": 59, "3": 128, "4": 381, "5": 1341 },
"local_justifications": [
{ "type": "user_review", "text": "\"Fantastic spot for on the go coffee, cold brew, and/or a breakfast burrito.\"" }
],
"price_level": "inexpensive",
"current_status": "close",
"total_photos": 1978,
"latitude": 30.2510458,
"longitude": -97.7493717,
"place_id": "ChIJ1S_Bov20RIYRe7MiR8tYawY",
"cid": "462561016830669691",
"feature_id": "0x8644b4fda2c12fd5:0x66b58cb4722b37b",
"is_claimed": true,
"is_directory_item": false
}

When Include reviews is on, the dataset also gets one row per review:

{
"place_title": "Caffe Umbria",
"place_id": "ChIJsQ9HCbEsDogRQOVaQvA1-hs",
"rating": 4,
"review_text": "Both drinks were really good and the baristas were lovely…",
"author": "Karen Reyes",
"time_ago": "7 months ago",
"owner_answer": "Thank you for sharing your experience with us!"
}

Pricing

Pay per business returned — no monthly fee, no minimum. Build a 20-lead list or a 20,000-lead database; you only pay for the places you pull. Reviews (when enabled) are billed separately per review.

FAQ

Do I need proxies, API keys, or to handle captchas? No — no API keys required and no proxies to configure. Just enter searches.

Why do I only get ~200 results even at max depth? That's Google's own cap on a single Maps search. Turn on Grid search to tile the area and merge de-duplicated results past that ceiling.

Which countries are supported? 190+ countries and all major languages.

Can I get emails too? This actor returns phone + website. For email enrichment, pair it with our Google Maps B2B Lead Finder.

Great for AI agents? Yes — clean structured JSON, ideal for MCP servers, n8n, Make, and LLM agents.


Tags: google maps scraper, maps scraper, local business scraper, b2b leads, lead generation, business directory, place data, local seo, google places, gps coordinates, phone scraper.