Google Maps Scraper | $0.25/1K Results π°
Pricing
from $0.25 / 1,000 results
Google Maps Scraper | $0.25/1K Results π°
π₯ $0.25/1K resultsπ₯ **CHEAPEST** Google Maps Scraper on Apify β 10Γ cheaper than competitors. Proxies & platform costs included. Results in seconds. Extract names, phones, addresses, ratings, hours & more. Multi-query, up to 200 results per search.
Pricing
from $0.25 / 1,000 results
Rating
5.0
(31)
Developer
ScraperLink
Maintained by CommunityActor stats
66
Bookmarked
5.1K
Total users
829
Monthly active users
11 hours
Issues response
an hour ago
Last modified
Categories
Share
Google Maps Scraper
From $0.40 per 1,000 Google Maps results. Rich place data costs $0.25 per 1,000 places, and full reviews cost $0.25 per 1,000 reviews returned.
Pull structured business data from Google Maps at a fraction of what other actors charge. Every Google Maps run is fast, lightweight, and billed only for Google Maps results you actually receive β each Google Maps business listing lands as its own row in the dataset.
The leading Google Maps actor on Apify charges $2.10 per 1,000 Google Maps results. Our base price starts at $0.40. That's 4Γ cheaper, with more Google Maps data fields and straightforward result-based pricing.
What makes this Google Maps scraper different
| This Google Maps actor | Top competitor | |
|---|---|---|
| Base price per 1,000 Google Maps results | From $0.40 | $2.10+ |
| Place details and image galleries | +$0.25 per 1,000 places | Varies |
| Popular Times enrichment | +$0.25 per 1,000 places | Varies |
| Full Google reviews | +$0.25 per 1,000 reviews | Often $0.30+ |
| Google Maps data fields per result | 40+ | ~20 |
| Google Maps output organized into tabs | 6 tabs | Basic table |
| Bulk Google Maps queries in one run | Yes | Yes |
| Google Maps results as individual rows | Yes | Sometimes nested |
| Max Google Maps results per query | 200 normally; 500 with area search | 120β200 |
Choose your searches and optional add-ons, then receive one structured dataset row per place.
Google Maps data you get (40+ fields across 6 tabs)
Overview
Name, rating, review count, price level, category, full address, website, phone, and direct Google Maps URL β everything you need at a glance from Google Maps.
Contact Info
Full Google Maps address broken into components (street, number, neighborhood, city, postal code, state, country), domain, all three phone formats (international, formatted, digits-only), Google Maps coordinates (lat/lng), plus code, and the building or complex the business is located in.
Hours
Live Google Maps open/closed status, weekly opening hours, service-specific hours (lunch, dinner, brunch, happy hour, and more), and booking/reservation links from Google Maps.
Ratings & Reviews
Google Maps total score, star rating, rating count, review count, full 1β5 star distribution, price tier, and optional full reviews with reviewer metadata, dates, text, photos, ratings, and owner responses.
Media & Identity
Google Maps Place ID, Data ID, CID, FID, Google Maps URL, optional image galleries and contributor attribution, thumbnail, logo, owner information, menus, order links, and related places.
Metadata
Original Google Maps search query, rank and position in Google Maps results, timezone, temporarily/permanently closed flags, about text, and optional compact Google Maps Popular Times and live busyness data.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string list | β | One or more Google Maps search queries; optional with URLs or Place IDs | |
startUrls | URL list | β | Direct Google Maps place URLs | |
placeIds | string list | β | Direct Google Maps Place IDs | |
location | string | β | Named location separate from the search term; explicit geometry takes precedence | |
latitude, longitude | number | β | Precise Google Maps search center | |
radiusKm | number | β | Search radius around the coordinates | |
boundingBox | object | β | Area as south, west, north, east | |
polygon | array | β | Area as [latitude, longitude] points | |
gridSpacingKm | number | 2 | Coverage spacing for area searches | |
searchWorkers | integer | 4 | Concurrent map-center searches; from 1 to 4 | |
num | integer | 200 | Unique results per query; up to 500 with an explicit area search | |
gl | string | us | Country for Google Maps results β match this to the country you're searching in (ca, gb, de, etc.) | |
hl | string | en | Interface language for Google Maps results (fr, es, de, etc.) | |
placeDetails | boolean | false | Include descriptions, amenities, accessibility, menus, booking options, related places, and additional metadata. Adds $0.25 per 1,000 returned places. | |
includeImages | boolean | false | Include available image galleries, dimensions, identifiers, and capture dates. Uses the same place add-on charge. | |
includeImageAuthors | boolean | false | Include available contributor identifiers and Google Maps profile links. Uses the same place add-on charge. | |
maxImages | integer | 20 | Maximum images retained per place, up to 100 | |
popularTimes | boolean | false | Enrich every returned place with Popular Times data. Adds $0.25 per 1,000 returned places. | |
reviews | boolean | false | Fetch full Google review records. Adds $0.25 per 1,000 reviews actually returned. | |
maxReviews | integer | 10 | Maximum reviews per place, up to 1,000 | |
reviewsSort | string | most_relevant | most_relevant, newest, highest_rating, or lowest_rating | |
fields | string | β | Comma-separated list of Google Maps fields to keep β leave blank to get everything |
Example: multi-city Google Maps lead generation
{"query": ["personal injury lawyers in houston","personal injury lawyers in dallas","personal injury lawyers in austin"],"num": 200,"gl": "us","hl": "en"}
Example: international Google Maps search
{"query": ["coffee shops in london"],"num": 100,"gl": "gb","hl": "en"}
Example: include Popular Times
{"query": ["restaurants in toronto"],"num": 200,"gl": "ca","hl": "en","popularTimes": true}
Example: include place details and attributed images
{"placeIds": ["ChIJ243-C381K4gRHMKWCGU86iM"],"placeDetails": true,"includeImages": true,"includeImageAuthors": true,"maxImages": 20}
Example: include reviews
{"query": ["restaurants in toronto"],"num": 100,"gl": "ca","reviews": true,"maxReviews": 20,"reviewsSort": "newest"}
Add-on pricing
Place Details & Images, Popular Times, and full review records are optional paid add-ons. All add-on rates are fixed across every Apify plan.
| Plan | Base results | Per-place add-on | Base + one per-place add-on |
|---|---|---|---|
| Free / Starter | $0.50 / 1,000 | $0.25 / 1,000 | $0.75 / 1,000 |
| Scale | $0.45 / 1,000 | $0.25 / 1,000 | $0.70 / 1,000 |
| Business | $0.40 / 1,000 | $0.25 / 1,000 | $0.65 / 1,000 |
The per-place add-on is charged once for each returned place when Place Details, Images, image attribution, or Popular Times is enabled. Enabling more than one of these options together does not multiply that charge. Google does not publish every field for every business, so some enriched values may be null.
Full reviews are charged separately at $0.25 per 1,000 review records actually returned. Billing uses the number of reviews received, not maxReviews, so unavailable reviews are never charged. Base result, Popular Times, and review charges are additive when enabled together.
total cost = base result charge + optional per-place add-on + actual review records Γ $0.00025
Sample Google Maps result
{"query": "restaurants in toronto","searchString": "restaurants in toronto","rank": 1,"position": 1,"title": "Black+Blue Toronto","categoryName": "Restaurant","type": "Restaurant","categories": ["Restaurant","Brunch restaurant","Event venue","Fine dining restaurant","Lounge bar","Seafood restaurant","Steak house","Sushi restaurant","Wine bar"],"types": ["Restaurant","Brunch restaurant","Event venue","Fine dining restaurant","Lounge bar","Seafood restaurant","Steak house","Sushi restaurant","Wine bar"],"address": "130 King St W, Toronto, ON M5X 2A2, Canada","neighborhood": "Old Toronto","street": "130 King St W","streetNumber": "130","city": "Toronto","postalCode": "M5X 2A2","state": "Ontario","countryCode": "CA","locatedIn": "Old Toronto","timezone": "America/Toronto","totalScore": 4.7,"rating": 4.7,"reviewsCount": 5589,"ratingCount": 5589,"reviewsDistribution": null,"priceLevel": "CA$100 or above","phone": "+1 647-368-8283","phoneNumber": "(647) 368-8283","phoneUnformatted": "+16473688283","website": "https://blackandbluesteakhouse.ca/toronto-home/","domain": "blackandbluesteakhouse.ca","placeId": "ChIJ243-C381K4gRHMKWCGU86iM","dataId": "/g/11s9wnk_vb","cid": "2587947340511232540","cidHex": "0x882b357f0bfe8ddb:0x23ea3c650896c21c","fid": "0x882b357f0bfe8ddb:0x23ea3c650896c21c","googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJ243-C381K4gRHMKWCGU86iM","url": "https://www.google.com/maps/search/?api=1&query=Black%2BBlue+Toronto&query_place_id=ChIJ243-C381K4gRHMKWCGU86iM","imageUrl": "https://lh3.googleusercontent.com/gps-cs-s/APNQkA...","thumbnailUrl": "https://lh3.googleusercontent.com/gps-cs-s/APNQkA...","logoUrl": "https://lh3.googleusercontent.com/-ih84iASeZ7Y/AAAAAAA.../photo.jpg","owner": {"name": "Black+Blue Toronto (Owner)","googleId": "102477914189084708456"},"location": {"lat": 43.6480996,"lng": -79.3831247},"latitude": 43.6480996,"longitude": -79.3831247,"plusCode": null,"temporarilyClosed": null,"permanentlyClosed": null,"openingHours": {"Friday": "11:30 AMβ12 AM","Saturday": "10:30 AMβ12 AM","Sunday": "10:30 AMβ12 AM","Monday": "11:30 AMβ12 AM","Tuesday": "11:30 AMβ12 AM","Wednesday": "11:30 AMβ12 AM","Thursday": "11:30 AMβ12 AM"},"openingHoursDetailed": [{ "day": "Friday", "hours": ["11:30 AMβ12 AM"] },{ "day": "Saturday", "hours": ["10:30 AMβ12 AM"] },{ "day": "Sunday", "hours": ["10:30 AMβ12 AM"] },{ "day": "Monday", "hours": ["11:30 AMβ12 AM"] },{ "day": "Tuesday", "hours": ["11:30 AMβ12 AM"] },{ "day": "Wednesday", "hours": ["11:30 AMβ12 AM"] },{ "day": "Thursday", "hours": ["11:30 AMβ12 AM"] }],"openingHoursState": "Open Β· Closes 12 AM","serviceHours": {"Lunch": { "Friday": "11:30 AMβ2 PM" },"Happy hours": { "Friday": "2:30β5:30 PM" },"Kitchen": { "Friday": "11:30 AMβ12 AM" },"Dinner": { "Friday": "3 PMβ12 AM" },"Brunch": { "Friday": "Closed" }},"bookingLinks": ["https://party-request.tripleseat.com/venues/8qsUeRbI/?rwg_token=...","https://www.google.com/maps/reserve/v/dine/c/DUtUFyMlWBE?source=pa","https://party-request.tripleseat.com/venues/8qsUeRbI/?rwg_token=..."],"popularTimesStatus": "unavailable","popularTimes": null,"popularTimesLiveText": null,"popularTimesLivePercent": null,"about": null}
Google Maps use cases
- Lead generation β Build targeted prospect lists from Google Maps by business type and location
- Competitor research β Monitor Google Maps competitor ratings, hours, and pricing across cities
- Market analysis β Map Google Maps business density and coverage in any region
- Directory building β Populate local business directories with verified Google Maps contact data
- CRM enrichment β Append Google Maps phone, website, coordinates, and hours to existing records
Notes
- Multiple Google Maps queries run in one actor invocation β no need to start separate Google Maps runs per city or keyword.
- Set
glto match the country you're targeting for the most accurate local Google Maps results (gl=cafor Canada,gl=gbfor UK,gl=defor Germany). - Use
fieldsto trim Google Maps output to only the columns you need β useful for large Google Maps runs where you want a lean dataset. - When
popularTimesis enabled, its output fields are included even whenfieldscontains a custom field list. - When place details or images are enabled, their output fields are included even when
fieldscontains a custom field list. - Popular Times is not available for every Google Maps place. Check
popularTimesStatusforavailableorunavailable. - Popular Times is returned as a compact
day -> hour -> occupancy percentmap. - Direct Google Maps URLs and Place IDs can be used without a text query.
- Radius, bounding-box, and polygon inputs are processed in bounded, resumable center batches. Returned places are filtered to the requested area.
- Duplicate places from overlapping centers, continuation requests, or multiple inputs are returned and charged once per run. The
queryfield identifies the first input that emitted the place. - Results are written incrementally. The
CHECKPOINTkey-value-store record can resume an interrupted run without retaining full result rows in Actor memory. - A restarted execution can paste a prior run's
CHECKPOINTrecord intoresumeState. The input fingerprint must match, and the new run continues at the saved query and map-center offset. - The 500-place area limit applies per query, not per Actor run. A list of 100 queries continues through all 100 and can therefore emit up to 50,000 rows before run-wide deduplication.
- Review output is limited by
maxReviews; fewer reviews may be returned when Google has fewer available. - Failed or empty sources are logged and saved in the run's
ERRORSkey-value-store record; they are not written to the result dataset or billed as results. - Rich details can include image galleries, contributor attribution, review links, descriptions, accessibility, amenities, menus, order links, and related places.