Google Maps Category Scraper ⚡ Advanced Data, Best Value
Pricing
Pay per usage
Google Maps Category Scraper ⚡ Advanced Data, Best Value
Scrape every Google Maps business in one category across any list of cities or zip codes. Keeps only listings whose Google category matches yours: name, phone, website, rating, reviews, address, coordinates, place ID.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Muhammad Shamshad Aslam
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Google Maps Category Scraper
Pick a Google Maps category, like Fence contractor, Dentist or Roofing contractor, list the cities or zip codes you care about, and get every business in that category and nothing else. Each business comes with its phone number, website, domain, star rating, review count, address, coordinates, Google place ID and a Google Maps link.
Google search results are messy. Search "fence contractor in Austin" and you also get remodelers, general contractors, lumber stores and handymen. This scraper reads the category Google itself shows for every business and keeps only the ones that match yours, so your lead list is clean from the start.
Features
- ⚡ Fast, no browser: reads Google Maps' own results data directly, about 1-2 seconds per 20 businesses, so whole states run in minutes at a very low cost per result
- 🎯 Category-exact results: only businesses whose Google category matches yours. Choose exact match, or "contains" to also keep sub-categories (Dentist also keeps Cosmetic dentist and Pediatric dentist)
- 💯 Minimum reviews filter: keep only businesses with, say, 100+ Google reviews, so you get established companies and skip one-person startups
- ➕ Extra categories: accept related categories too, e.g. Fence contractor plus Fence supply store
- 🗺️ Any number of locations: cities, neighborhoods, zip codes or regions in any country, all in one run and one dataset
- ✅ No duplicates: a business found in two neighboring cities is saved once
- 📞 Contact data: phone number, website and clean domain, ready for enrichment or outreach
- ⭐ Reputation data: star rating and number of reviews, to sort or filter by size and quality. Google often hides review counts from automated visitors on Maps. Those businesses are kept and marked
reviewsCountKnown: falseso you never lose them, or switch on the optional (slow) lookup to fill the counts from Google Search - 📍 Location data: street address, latitude and longitude, and the search location it was found in
- 🆔 Google IDs: place ID (works with the Google Places API) and CID, plus a permanent Google Maps link
- 🔍 See what was filtered out: switch on "Also save businesses from other categories" to get everything Google returned with a
matchesCategorytrue/false flag - 🧾 Failure report: any location that could not be loaded is listed in the key-value store record
FAILED_LOCATIONS, never silently dropped
Use cases
- Build a lead list of every plumber, roofer or dentist in a state
- Size a local market: how many fence contractors are there in each city, and how many reviews do they have
- Find acquisition targets in a trade, filtered by review count
- Feed clean business domains into email finders and enrichment tools such as Clay
Input
| Field | Type | Default | Description |
|---|---|---|---|
category | string | required | Google Maps category as Google shows it, e.g. Fence contractor |
locations | array | required | Cities, neighborhoods, zip codes or regions, one per line |
searchTerms | array | empty | What to type into Google Maps per location, e.g. windows and doors. Empty = search the category. Every term runs in every location |
matchMode | string | exact | exact: category must equal yours. contains: category must contain your text. Not case-sensitive |
extraCategories | array | empty | Extra Google categories to keep |
mainCategoryOnly | boolean | false | Off: save every business that lists your category, as its main category or as an extra. On: only businesses whose main category is yours |
includeOtherCategories | boolean | false | Also save non-matching businesses, flagged with matchesCategory: false |
minReviews | integer | 0 | Only save businesses with at least this many Google reviews. Businesses whose count Google hid are kept and marked reviewsCountKnown: false. 0 = no filter |
fetchReviewCounts | boolean | false | Slow. Find hidden review counts on Google Search (20 businesses per request where possible, otherwise one per business). Each request takes 20 to 90 seconds and is billed as a Google search proxy request |
maxItemsPerLocation | integer | 0 | Stop after this many listings per location, before the category filter. 0 = all (pages until Google has no more results) |
language | string | en | Google language code. Write your category in this language |
engine | string | fast | fast reads Google's results data directly (recommended). browser opens Google Maps in Chrome, much slower. Locations the fast engine can not read fall back to the browser automatically |
fastConcurrency | integer | 150 | Fast engine: searches in parallel. 150 with the default 16 GB was fastest in tests; higher gets slower as Google throttles the proxy IPs |
skipKnownPages | boolean | false | Fast engine: stop paging a search once a page has only businesses already found in this run. Faster on dense zip lists |
maxConcurrency | integer | 6 | Browser engine only: locations open in Chrome at once. Each needs about 2/3 of a CPU core (1 core per 4 GB). The fast engine runs 25 at once on little memory |
proxyConfig | proxy | Apify proxy | Datacenter proxy works. Switch to Residential if locations fail |
Example input
{"category": "Fence contractor","locations": ["Austin, TX", "Round Rock, TX", "78701", "Georgetown, TX"],"matchMode": "exact","extraCategories": ["Fence supply store"],"includeOtherCategories": false,"minReviews": 100,"fetchReviewCounts": false,"maxItemsPerLocation": 0}
Getting full coverage of a big city
One Google Maps search returns a few hundred businesses at most. A city like Houston has far more plumbers than that. List the city's zip codes or neighborhoods as separate locations instead of the city name. Businesses that show up in several of them are saved once.
Output
One record per business:
{"name": "Discount Fence USA","category": "Fence contractor","categories": ["Fence contractor", "Deck builder"],"matchesCategory": true,"isMainCategory": true,"rating": 4.8,"reviewsCount": 742,"reviewsCountKnown": true,"phone": "+1 737-258-9744","website": "https://discountfenceusa.com/","domain": "discountfenceusa.com","address": "3000 S I-35 Frontage Rd Ste 225, Austin, TX 78704, United States","openingStatus": "Closed · Opens 7 AM","latitude": 30.2273054,"longitude": -97.7461563,"placeId": "ChIJIbBlbY4yW4YRk2BLXHzF6vY","cid": "17792250415795626131","googleMapsUrl": "https://maps.google.com/?cid=17792250415795626131","searchCategory": "Fence contractor","searchLocation": "Austin, TX","scrapedAt": "2026-10-09T10:18:19.989Z"}
Field notes
addressis the full address with city, state and zip (fast engine). The browser engine only sees the street part. Businesses that only list a service area, common for contractors, have no public address and returnnull. Uselatitude,longitudeandsearchLocationto place them.categorieslists every Google category of the business, main one first, andcategoryis the main one. A business can list up to 10 categories: one main category (shown under its name on Google Maps) and extras. In a category search Google moves the searched category to the front of every business's list, so the actor re-checks every business with several categories by searching it by name, which returns Google's real order.isMainCategoryistruewhen your category is the business's main category (a real fence company),falsewhen it is only an extra (e.g. a roofer that also builds fences), andnullwhen it was not checked. The check costs one extra request per business with several categories, so it only runs withcheckMainCategoryormainCategoryOnlyon. Without it, multi-category businesses come back withisMainCategory: null, and theircategoryfield is just the first one listed, which Google sets to your searched category. WithmainCategoryOnlyon, onlytruerows are saved.ratingisnullandreviewsCountis0for businesses with no reviews.reviewsCountKnownisfalsewhen Google hid the review count (reviewsCountis thennull). Google hides counts from automated visitors on some runs and not others. These businesses are always kept, even withminReviewsset, so you can fill the count in later byplaceIdorcid, or switch onfetchReviewCounts. Every saved business with a known count hasreviewsCountat or aboveminReviews.openingStatusis open or closed at the time of the run, as Google shows it.placeIdworks with the Google Places API.cidis Google's numeric business ID, andgoogleMapsUrlbuilt from it is a permanent link.matchesCategoryis alwaystrueunless you switch on "Also save businesses from other categories".
FAQ
How do I find the exact category name? Open any business of that type on Google Maps. The category is the grey text right under the business name.
Does it work outside the US? Yes. Use local place names or postal codes, and set language if you want categories in another language.
Can I get full opening hours or review texts? Not in this version. It reads what Google shows in the search results list, which keeps runs fast and low cost per result.