The BEST Google Maps Polygon Scraper - Automatic Lead Gen
Pricing
from $2.10 / 1,000 scraped places
The BEST Google Maps Polygon Scraper - Automatic Lead Gen
Pick a US city and get every matching business in it. Real city polygon boundaries built in, so you beat the 120-result cap. No polygon drawing, no API key. All Done for you. After years of scraping google maps, this is by FAR the end all, be all scraper you will ever need with option to auto-enrich
Pricing
from $2.10 / 1,000 scraped places
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What is Google Maps City Scraper?
Google Maps City Scraper is a lead-generation tool that extracts the complete list of businesses in a US city from Google Maps — every match inside the real city limits, deduplicated, with contact details.
Pick a city from the dropdown, type what you're looking for, and run it. There is nothing else to configure.
- Complete coverage of a city — every US city boundary is built in, so nothing gets missed
- You never pay for duplicates — results are deduplicated by Google place ID before you're charged
- No polygons, no coordinates, no API key — a city dropdown replaces all of it
- Get emails, phone numbers, websites and social profiles, not just map listings
- Filter by rating, category, name match, closed status, or with/without a website
- Run several search terms over the same city in one job, deduplicated together
- Export to Excel, CSV, JSON or HTML; run via API, schedule it, or connect it to your stack
Getting the whole city — and how we make sure
Anyone can scrape "restaurants in Chicago". The hard part is knowing you got all of them, and not being billed three times for the same restaurant.
Covering a city properly means splitting it into a grid and searching each square. That raises two problems, and this scraper solves both:
1. Coverage — is the grid actually covering the city? A city boundary is not a circle or a bounding box. Chicago's outline is jagged, New York is islands, Los Angeles has a shoestring corridor running down to San Pedro. We ship the official US Census TIGER/Line boundary for all 32,608 US cities — 13.8 million boundary points, every exclave included — and only search grid squares whose centre falls inside the real city limits. A radius around a city centre either misses outer neighbourhoods or drags in the next town over.
2. Grid density — is the grid fine enough? A grid that is too coarse skips businesses between the squares. A grid that is too fine burns time and money rescanning the same block. The grid is sized automatically from the city's population density: a dense downtown gets a 1 km grid, a rural town gets 4 km.
| City | Density | Grid | Searches |
|---|---|---|---|
| New York, NY | 10,612 /km² | 1 km | 778 |
| Chicago, IL | 4,517 /km² | 1.5 km | 255 |
| Boulder, CO | 1,520 /km² | 2 km | 16 |
| Sedona, AZ | 208 /km² | 3 km | 5 |
We also don't search open water. Coastal cities include harbour, bay and river inside their legal limits, and a search in the middle of a harbour returns nothing. Water is masked out of the grid before the run starts: San Francisco drops from 599 squares to 125, Boston saves 47%, New York 37%. Inland cities are unaffected.
You don't pay for duplicates
Grid squares overlap, and a business shows up in several of them. Every result is checked against the Google place ID already collected and dropped if it is a repeat — before it reaches your dataset and before it is billed.
You are charged once per unique business. Empty squares, water squares and duplicates are free.
What data can this scraper extract?
| 📌 Business name | 🏷️ Category | ⭐ Rating |
| 💬 Review count | 📍 Full postal address | 📞 Phone number |
| 🌐 Website | 📧 Email address | 📱 Social profiles |
| 💰 Price range | ⏰ Open / closing hours | 🌏 Coordinates |
| 🆔 Google place ID | 🔗 Google Maps URL | 📮 Plus code |
Phone, website, full postal address, plus code and review count come from the place details add-on — Google does not put them in the results list. Email addresses and social profiles come from the company contacts add-on, which reads the business's own website.
How much does it cost?
Pay per event — you are charged for what you actually receive.
- Scraped place — the base charge, once per unique business.
- Add-on: Additional place details — only when you switch on phone / website / full address.
- Add-on: Company contacts enrichment — only when you switch on email + social profiles.
- Add-on: Search filters — only for filters you switch on, charged per place, per filter.
Duplicates removed across grid squares, squares that return nothing, and squares skipped as water are never charged. Discounts apply on higher Apify plans — see the Pricing tab for your rate.
How do I use it?
⬇️ Input
Three things: what to search for, which city, and how many results you want.
{"query": ["dentist"],"city": "Boulder, CO","maxResults": 0,"fetchDetails": true,"enrichContacts": true,"minStars": "4"}
maxResults: 0 means every matching business in the city. Set it to a few hundred first if you
want to size a job before running it wide.
Search terms
Several search terms can run over the same city grid in one job, and everything is deduplicated together — so overlapping terms cost you nothing extra in duplicates.
Use terms that mean different things. Good: [dentist, orthodontist, dental hygienist].
Wasteful: [dentist, dentists, dental] — Google returns nearly the same places for all three, so
you pay for the extra searches and get the same list back.
Filters
Each filter narrows what you are charged for:
- Only places WITHOUT a website — the classic agency pitch list.
- Minimum rating — skip the unrated long tail.
- Only these categories — Google returns adjacent categories for most searches;
dentistalso pulls in labs and clinics. Google has many near-synonymous categories, so list the variants you care about. - Skip closed places — drop permanently and temporarily closed listings.
- Exact name matching — keep only places whose name contains your term.
⬆️ Output
One row per unique business:
{"name": "Cooper City Family Dentistry","category": "Dentist","rating": 4.7,"reviews": 214,"priceRange": null,"address": "5868 S Flamingo Rd, Cooper City, FL 33330","phone": "(954) 252-8257","website": "https://www.example-dental.com/","email": "staff@example-dental.com","emails": ["staff@example-dental.com"],"socials": {"facebook": "https://facebook.com/...","instagram": "https://instagram.com/..."},"hours": "Open · Closes 5 p.m.","latitude": 26.0393494,"longitude": -80.3122,"placeId": "0x88d9a917ebfd42e9:0xbaea4f87a6edea57","plusCode": "2XQ8+5C Cooper City, Florida","mapsUrl": "https://www.google.com/maps/place/...","city": "Cooper City","state": "FL","searchQuery": "dentist","scrapedAt": "2026-07-26T14:02:11.004Z"}
Download it as JSON, CSV, Excel, XML or HTML from the Output tab.
Add-on: Company contacts enrichment
Google Maps never shows a business's email. Switch this on and the run visits each company's own website — home, contact and about pages — and extracts their email address and social profiles. If a site is a JavaScript app that serves nothing to a plain request, it is re-rendered in a browser rather than skipped.
Yield depends a lot on the industry, because some publish an address and some hide behind a contact form. Measured on live runs:
| Category | Emails | Social profiles |
|---|---|---|
| Dentists | ~50% | ~92% |
| Restaurants | ~20% | ~40–70% |
Professional and trade categories — dentists, contractors, law firms, agencies — publish emails far more often than hospitality. Rows without an email still carry phone, website and socials.
Frequently asked questions
Which cities are supported? This scraper is US-only. The dropdown lists 18,913 cities, down to towns of about 55 people. Other countries will be handled by a separate scraper.
How long does a whole city take? It depends on the size of the city — Sedona is 5 searches, New York is 778, and each search is a rendered map view. Use a residential proxy for whole-city runs, and set Number of places if you want to cap the job. Long runs end gracefully: if a run reaches its time budget it finishes and keeps everything collected rather than being killed.
What happens if Google rate-limits the run? The run paces itself and each worker uses its own residential session. If Google shows a soft block, the scraper slows down, rotates to a fresh IP and carries on instead of failing.
Can I use it via API?
Yes. Run it with the Apify API, the apify-client package for Node.js or Python, schedule it, add
webhooks, or connect it to Zapier, Make, Google Sheets, Slack and the rest of the Apify integrations.
Is scraping Google Maps legal? Scraping publicly available data is generally legal, and business listings on Google Maps are public. Respect personal-data and intellectual-property rules, and take Google's Terms of Service into account. You are responsible for how you use the data.
Your feedback
We keep improving this scraper. If you hit a bug, want another field, or want a country added, open an issue on the Issues tab.