Google Maps Scraper - Places, Reviews, Emails & Socials
Pricing
from $2.49 / 1,000 places
Google Maps Scraper - Places, Reviews, Emails & Socials
Pricing
from $2.49 / 1,000 places
Rating
0.0
(0)
Developer
Lantern Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Google Maps Scraper — Places, Reviews, E-mails & Social Profiles
A Lantern Lab Actor. Search Google Maps by keyword and location, or paste place links, and get each business back: name, categories, address, coordinates, rating, review count, the business's published phone and website, opening hours, Google place ID and a Maps URL. Optionally add the public reviews Google shows for each place, and the e-mail addresses and social profiles published on the business's own website. Works in any country — tested in the US, Europe, Latin America and Asia. No Google login, no cookies, no account of your own.
Price: pay per result, one price for everyone:
| Event | Price | When it is charged |
|---|---|---|
place | USD 2.49 per 1,000 places | One per place row. |
contact | USD 1.49 per 1,000 places with contacts | Only when the website actually yielded at least one e-mail or social profile. |
review | USD 0.49 per 1,000 reviews | One per review row. |
| Run start | USD 0.005 per run | Once per run. |
Empty results, blocked or failed inputs, duplicates, per-input status rows and the run summary are free.
What you get
{"recordType": "place","placeId": "ChIJP8p2kJC1RIYR2qrGoXZtZCk","featureId": "0x8644b5909076ca3f:0x29646d76a1c6aada","cid": "2982629209513831130","name": "Terrible Love Coffee","categories": ["Coffee shop", "Coffee stand"],"address": "3908 Avenue B, Austin, TX 78751","city": "Austin","postalCode": "78751","state": "Texas","countryCode": "US","latitude": 30.3045132,"longitude": -97.735632,"rating": 4.9,"reviewCount": 433,"phone": null,"website": "http://terriblelovecoffee.com/","openingHours": [{ "day": "Monday", "hours": "7:30 AM–2 PM" }],"openStatusText": "Open · Closes 2 PM","url": "https://www.google.com/maps/search/?api=1&query=Terrible+Love+Coffee&query_place_id=ChIJP8p2kJC1RIYR2qrGoXZtZCk","emails": ["info@terriblelovecoffee.com"],"socialProfiles": {},"contactsStatus": "found","reviewsStatus": "ok","reviewsCollected": 5,"reviewsLimited": true,"searchTerm": "coffee","searchQuery": "coffee in Austin, TX","rank": 1,"partial": false,"collectedAt": "2026-10-30T12:44:50.402Z"}
{"recordType": "review","reviewId": "Ci9DQUlRQUNvZENodHljRjlvT2s5eVpGUjNhbGcxTUdzMVlWOXZPSFZLUkRGeGFHYxAB","placeId": "ChIJP8p2kJC1RIYR2qrGoXZtZCk","placeName": "Terrible Love Coffee","rating": 5,"text": "In my search for unique coffee shops, I visited Terrible Love…","textLanguage": "en","publishedAt": "2026-09-02T03:35:54.561Z","publishedAtText": "a month ago","authorName": "Turan A.","collectedAt": "2026-10-30T12:44:50.409Z"}
A field Google does not publish for a place is null — never guessed.
Input
Give it search terms with a location, place links, or both.
| Field | Default | Meaning |
|---|---|---|
searchTerms | — | What to search for, one per line ("dentist", "coffee shop"). |
location | — | Where: "Austin, TX", "Berlin, Germany", "Mexico City". Appended as "<term> in <location>". |
placeUrls | — | Google Maps place URLs, maps.app.goo.gl short links, ?cid= links or place IDs (ChIJ…). |
maxPlaces | 20 | Hard limit per search term. Never exceeded and never over-charged. |
includeReviews | false | Add the public reviews Google shows for each place. |
maxReviewsPerPlace | 5 | Hard limit on review rows per place. |
includeContacts | false | Read each place's website for e-mails and social profiles. |
language / countryCode | en / us | Google interface language and country. |
maxUpstreamRequests | derived | Hard ceiling on requests to Google. |
{"searchTerms": ["dentist"],"location": "Mexico City","maxPlaces": 20,"includeContacts": true}
Output
Three row types share the dataset; the Places, Reviews and Input status views split them.
place— one per place, deduplicated across the whole run by Google place ID.review— one per review, with its parentplaceId,featureIdandplaceName, and Google's ownpublishedAt.input_status— one per search term and per place link, never charged: how many places it returned, how many pages were read, whether Google ran out of results (endOfResults), and when it is incomplete,partial: truewith apartialReason.RUN_SUMMARY— the last row, also saved in the key-value store.
What is charged
place: every place row. A place that matches several of your search terms is written and charged once.contact: only places whose website gave at least one e-mail or social profile.contactsStatussays what happened for every other place:no_website,none_foundorwebsite_unreachable— all free.review: every review row. A review is written once even if its place shows up twice.- Nothing for an input that returned no place, for a blocked or failed input, or for the status and summary rows.
- With a maximum charge set on the run, collection stops at what it pays for and the inputs not reached are marked
charge_limit_reached/not_collected.
Empty is not the same as incomplete
An input that Google answered with no place is partial: false, placesReturned: 0 — a real empty result. An input that was refused, failed, hit the request ceiling or the maximum charge is partial: true with the reason (blocked, upstream_error, upstream_request_cap, charge_limit_reached, not_collected). A run where every input was refused fails instead of finishing with zero rows.
Limits
- Reviews: Google shows signed-out visitors a "limited view" of Maps with only a handful of reviews per place (usually 5); the full review list needs a Google sign-in, which this Actor does not use. Every place row says
reviewsLimited: truewhen Google lists more reviews than it showed. - Contacts (e-mails; Facebook, Instagram, X, LinkedIn company pages, YouTube, TikTok and Pinterest links) come from the business's own home page and, when that has none, from its contact page. Addresses are not verified, and websites that block automated visitors give
website_unreachable. - Not collected: popular times, photos, owner replies, anything behind a Google sign-in.
- Only public business information is collected. For reviews, only the reviewer's public display name is kept — no profile link, no photo.
Development
npm installnpm test
Tests run offline against recorded Google responses in test/fixtures/.