Google Maps Category Scraper ⚡ Advanced Data, Best Value avatar

Google Maps Category Scraper ⚡ Advanced Data, Best Value

Pricing

Pay per usage

Go to Apify Store
Google Maps Category Scraper ⚡ Advanced Data, Best Value

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

Muhammad Shamshad Aslam

Maintained by Community

Actor 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: false so 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 matchesCategory true/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

FieldTypeDefaultDescription
categorystringrequiredGoogle Maps category as Google shows it, e.g. Fence contractor
locationsarrayrequiredCities, neighborhoods, zip codes or regions, one per line
searchTermsarrayemptyWhat to type into Google Maps per location, e.g. windows and doors. Empty = search the category. Every term runs in every location
matchModestringexactexact: category must equal yours. contains: category must contain your text. Not case-sensitive
extraCategoriesarrayemptyExtra Google categories to keep
mainCategoryOnlybooleanfalseOff: save every business that lists your category, as its main category or as an extra. On: only businesses whose main category is yours
includeOtherCategoriesbooleanfalseAlso save non-matching businesses, flagged with matchesCategory: false
minReviewsinteger0Only save businesses with at least this many Google reviews. Businesses whose count Google hid are kept and marked reviewsCountKnown: false. 0 = no filter
fetchReviewCountsbooleanfalseSlow. 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
maxItemsPerLocationinteger0Stop after this many listings per location, before the category filter. 0 = all (pages until Google has no more results)
languagestringenGoogle language code. Write your category in this language
enginestringfastfast 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
fastConcurrencyinteger150Fast engine: searches in parallel. 150 with the default 16 GB was fastest in tests; higher gets slower as Google throttles the proxy IPs
skipKnownPagesbooleanfalseFast engine: stop paging a search once a page has only businesses already found in this run. Faster on dense zip lists
maxConcurrencyinteger6Browser 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
proxyConfigproxyApify proxyDatacenter 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

  • address is 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 return null. Use latitude, longitude and searchLocation to place them.
  • categories lists every Google category of the business, main one first, and category is 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.
  • isMainCategory is true when your category is the business's main category (a real fence company), false when it is only an extra (e.g. a roofer that also builds fences), and null when it was not checked. The check costs one extra request per business with several categories, so it only runs with checkMainCategory or mainCategoryOnly on. Without it, multi-category businesses come back with isMainCategory: null, and their category field is just the first one listed, which Google sets to your searched category. With mainCategoryOnly on, only true rows are saved.
  • rating is null and reviewsCount is 0 for businesses with no reviews.
  • reviewsCountKnown is false when Google hid the review count (reviewsCount is then null). Google hides counts from automated visitors on some runs and not others. These businesses are always kept, even with minReviews set, so you can fill the count in later by placeId or cid, or switch on fetchReviewCounts. Every saved business with a known count has reviewsCount at or above minReviews.
  • openingStatus is open or closed at the time of the run, as Google shows it.
  • placeId works with the Google Places API. cid is Google's numeric business ID, and googleMapsUrl built from it is a permanent link.
  • matchesCategory is always true unless 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.