Google Map Actor
Under maintenancePricing
from $1.50 / 1,000 scraped results
Google Map Actor
Under maintenancePricing
from $1.50 / 1,000 scraped results
Rating
5.0
(2)
Developer
Noushad Ali
Maintained by CommunityActor stats
1
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
๐ What is Google Maps Business Scraper? Google Maps Business Scraper lets you extract business data from Google Maps by keyword and location, helping you generate leads, confirm business listings, build local databases, and enrich address or review data.
- Generate qualified leads: extract business names, full address breakdowns, phone numbers, and websites to build prospect lists for your sales team
- Confirm and enrich listings: pull rating, review count, price level, business status, opening hours, and amenities for places you already know about
- Analyze reputation: pull up to 5 of the most relevant reviews per place (author, rating, text, and timestamp) without opening Google Maps by hand
- Cover a whole area, not just a partial view: the scraper automatically splits your search area into smaller tiles and de-duplicates results, so you get full coverage instead of a capped, partial result set
- Control cost precisely: choose how much detail to fetch per place โ from a basic address confirmation up to full contact, reviews, and amenity info โ so you only pay for what you need
โ๏ธ How it works
- Geocoding โ turns
locationQueryinto a bounding box (skipped if you supplycustomBoundsdirectly). - Grid tiling โ splits that box into overlapping circular tiles (
gridSizeKmwide) so no single search has to cover more than 60-result cap. - Text Search (
place/textsearch/json) โ runssearchTermagainst every tile, followingnext_page_tokenpagination, and de-duplicates everything byplace_id. - Place Details (
place/details/json) โ for each unique place, optionally fetches richer data at the tier you choose (seedetailsTierbelow). - Every result is flattened into one row and pushed to the dataset.
๐ฆ What data does Google Maps Business Scraper extract?
Every row is fully flat (no nested objects/arrays) so it looks the same whether you export as JSON or CSV. Fields marked "Pro" or "Enterprise" only populate at that detailsTier or higher โ see Input below.
| Group | Fields |
|---|---|
| Identity | placeId, title, businessStatus |
| Address | address, adrAddress, vicinity, streetNumber, route, premise, sublocality, neighborhood, city, county, state, stateShort, country, countryShort, zipCode |
| Location | lat, lng, viewportNortheastLat/Lng, viewportSouthwestLat/Lng, plusCodeCompound, plusCodeGlobal, utcOffsetMinutes |
| Category | categoryPrimary, categories |
| Google signals | rating, reviewsCount, priceLevel, googleMapsUrl, icon, iconBackgroundColor, wheelchairAccessibleEntrance, editorialSummary |
| Contact (Pro+) | phone, internationalPhone, website |
| Hours (Pro+) | opening_openNow, opening_weekdayText, currentOpening_openNow, currentOpening_weekdayText |
| Amenities (Enterprise) | curbsidePickup, delivery, dineIn, reservable, takeout, servesBeer, servesBreakfast, servesBrunch, servesDinner, servesLunch, servesVegetarianFood, servesWine |
| Reviews (Enterprise) | review1_author โฆ review5_author, review1_rating โฆ review5_rating, review1_text โฆ review5_text, review1_relativeTime โฆ review5_relativeTime, review1_timestamp โฆ review5_timestamp, reviewsReturnedCount |
| Search context | geoChunk โ center of the search-grid tile the place was found in |
| Full fidelity fallback | rawPlaceDetailsJson โ the complete, unflattened Place Details response as a JSON string, in case you need a field that isn't broken out above |
* rating/reviewsCount/editorialSummary need at least the enterprise tier โ priceLevel, amenities, and reviews are Enterprise-only.
โฌ๏ธ Input
The input is a search term plus a location (or a custom bounding box).
| Field | Required | Default | Description |
|---|---|---|---|
searchTerm | yes | โ | e.g. "restaurant", "plumber", "coffee shop" |
locationQuery | yes* | โ | Free text location, e.g. "Austin, TX, USA" |
customBounds | no | โ | {"north":..,"south":..,"east":..,"west":..} โ overrides locationQuery |
gridSizeKm | no | 3 | The search area is split into tiles of roughly this size for full coverage. Smaller = more complete coverage in dense areas, but a longer run |
maxPlaces | no | 200 | Stop once this many unique places are found (0 = no limit) |
fetchPlaceDetails | no | true | Fetches extra detail per place โ takes longer, adds far more data |
* locationQuery is required unless customBounds is supplied.
Search term guidance
A focused, single-purpose term ("coffee shop") generally performs better than a long list of near-duplicate terms ("coffee shop", "cafe", "coffee") โ the latter just slows the run down without adding real coverage.
Grid size guidance
gridSizeKm is a coverage/speed knob: smaller tiles catch more places in dense urban areas but increase run time. Start around 3โ5 km and shrink it only if you're missing results in a dense area.
โฌ๏ธ Output
Results are pushed to the Actor's default dataset as flat rows, one per unique place. Every field is a scalar or a delimited string, so JSON and CSV exports carry the same information โ arrays like opening hours or reviews are joined into readable strings (| for hours, one column set per review) instead of nested structures that CSV can't represent.
Example row (enterprise detail level, trimmed to the highlights โ the real row also includes every field from the table above):
{"placeId": "ChIJd2Sm_soDDTkR62jsR0f47Y0","title": "Dr Arun Gupta | Interventional radiologist in Delhi","businessStatus": "OPERATIONAL","address": "Department of Interventional Radiology, SIR GANGA RAM HOSPITAL, G20 - A, near ultrasound dept, Old Rajinder Nagar, Rajinder Nagar, New Delhi, Delhi, 110060, India","premise": "Department of Interventional Radiology","city": "New Delhi","state": "Delhi","stateShort": "DL","country": "India","countryShort": "IN","zipCode": "110060","lat": 28.6384582,"lng": 77.1895559,"categoryPrimary": "doctor","categories": "doctor, establishment, health, point_of_interest","rating": 4.8,"reviewsCount": 117,"phone": "099584 74870","internationalPhone": "+91 99584 74870","website": "https://www.interventionalradiologyindia.com/","googleMapsUrl": "https://maps.google.com/?cid=10227103313861306603","wheelchairAccessibleEntrance": true,"opening_openNow": false,"opening_weekdayText": "Monday: 12:00 AM โ 5:00 PM | Tuesday: 12:00 AM โ 5:00 PM | ... | Sunday: Closed","photoCount": 9,"photoReferences": "Aa-ngMbUb2ZFd...; Aa-ngMatZVZ-b7Y5...; ...","review1_author": "Pradeep Sharrma","review1_rating": 5,"review1_text": "I have done life saver surgery by DR Arun gupta in 2025...","review1_relativeTime": "3 weeks ago","reviewsReturnedCount": 5,"geoChunk": "28.6390,77.1900","rawPlaceDetailsJson": "{\"place_id\":\"ChIJd2Sm_soDDTkR62jsR0f47Y0\", ...full payload...}"}
โ ๏ธ Known limitations
- Reviews are capped at 5 per place โ that's Google's own limit on the Place Details
reviewsfield, not something this Actor can raise - No "popular times" histograms, Q&A, or owner updates
- A single run covers one
locationQueryorcustomBoundsarea; for multiple non-contiguous areas, run the Actor once per area
โ FAQ
How does this Actor cover a whole area instead of a limited result set?
It splits your search area into a grid of overlapping tiles (sized by gridSizeKm), searches each tile independently, and de-duplicates the results by placeId. Smaller tiles in dense areas find more unique places overall.
Can I get the full, unflattened Google response for a place?
Yes โ every row's rawPlaceDetailsJson field is the complete Place Details payload as a JSON string, in addition to the flattened columns.
Will the CSV export lose data that's in the JSON export? No. Every field is already a scalar or a joined string, so the CSV and JSON exports contain the same information.