Google Maps API - Places, Reviews, Emails & Leads
Pricing
from $2.80 / 1,000 places
Google Maps API - Places, Reviews, Emails & Leads
Google Maps API and Google Maps scraper, no Google API key: search places by keyword and city, or by URL / place ID. Phone, website, rating, hours, reviews and website emails for local business leads. Places API alternative, $2.80 per 1,000 places.
Pricing
from $2.80 / 1,000 places
Rating
0.0
(0)
Developer
PNDA
Maintained by CommunityActor stats
2
Bookmarked
8
Total users
6
Monthly active users
a day ago
Last modified
Categories
Share
A Google Maps API and Google Places API alternative that needs no API key. Search businesses on Google Maps by keyword and location, or look up specific places by URL or place_id, and get clean JSON, CSV or Excel: name, address, phone, website, rating, reviews count, categories, opening hours, GPS coordinates, place_id, CID and Google Maps link. Add the latest reviews and the public emails found on each business website to turn Google Maps into a local business leads list.
Semrush Scraper Keyword volume, domain & backlink data Google SERP API SERP, People Also Ask, ads & rank checks Google Maps Scraper ➤ You are here Email Extractor Emails, phones & socials from any website |
No Google Cloud account, no API key, no proxy, no browser to set up. Type a search, pick a location, get a spreadsheet of leads. Pay only for the places delivered.
Why use this Google Maps API instead of the official Places API?
- No API key and no Google Cloud billing account: you call one Apify endpoint, Apify handles the rest.
- All fields in one call: the official Places API splits contact, atmosphere and reviews into separately billed SKUs. Here a place comes back with phone, website, hours, rating and coordinates at a flat price.
- More than 5 reviews: the official Places API returns at most 5 reviews per place. This Actor returns up to 1,000, sorted the way you want.
- Emails: the official API has no email field. This Actor visits the business website and returns the public emails it finds (local business leads, ready for outreach).
- Bulk: many search terms and many place IDs in a single run, deduplicated.
What you get
- Every useful field of a Google Maps listing: name, full address, phone, website, rating, reviews count, main category and all categories, price level, open/closed state, opening hours per day, latitude/longitude,
place_id, CID and a Google Maps link. - Search by keyword and location: "dentist" in "Austin, TX", "coffee shop" in "Paris, France"... up to about 120 places per search, the maximum Google Maps shows.
- Look up specific places: paste Google Maps place URLs,
place_ids (ChIJ...) or CIDs. - Reviews (optional): text, rating, date, author, local guide flag, likes, owner response and photos, sorted by newest, most relevant, highest or lowest rating.
- Emails (optional): the Actor visits each business website (homepage and contact page) and returns the public email addresses it finds.
- Deduplicated: a place found by two searches is delivered and billed once.
- Budget-safe: the Actor never fetches more than your Maximum cost per run can pay for.
Input
| Field | Description | Default |
|---|---|---|
searchQueries | What you would type in Google Maps, one per line. | - |
location | City, region or country added to every search term. | - |
maxResultsPerSearch | Places per search term (5 to 120). | 20 |
placeUrls | Google Maps place URLs, place_ids or CIDs to look up directly. | - |
maxReviewsPerPlace | Reviews added to each place (0 = none). | 0 |
reviewsSort | newestFirst, qualityScore, ratingHigh or ratingLow. | newestFirst |
scrapeEmails | Find emails on each place's website. | false |
coordinates | Optional map center: "latitude,longitude[,zoom]". | - |
language | Language of the results (en, fr, de...). | en |
country | Google country code (us, gb, fr...). | us |
{"searchQueries": ["dentist", "orthodontist"],"location": "Austin, TX","maxResultsPerSearch": 50,"maxReviewsPerPlace": 10,"scrapeEmails": true}
Output
One row per unique place:
{"type": "place","searchQuery": "coffee shop in Paris, France","name": "Café Example","address": "12 Rue de Rivoli, 75004 Paris, France","phone": "+33 1 23 45 67 89","website": "https://cafe-example.fr/","rating": 4.6,"reviewsCount": 1234,"category": "Coffee shop","categories": ["Coffee shop", "Cafe"],"priceLevel": "€€","openState": "Open ⋅ Closes 7 PM","openingHours": { "monday": "8 AM–7 PM", "tuesday": "8 AM–7 PM" },"latitude": 48.8559,"longitude": 2.3589,"placeId": "ChIJ...","dataId": "0x47e66e1f...:0x40b82c36...","cid": "290832459437401184","googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=Caf%C3%A9%20Example&query_place_id=ChIJ...","emails": ["contact@cafe-example.fr"],"reviews": [{ "rating": 5, "text": "Best flat white in the Marais.", "publishedAt": "2026-09-01T10:12:00Z", "authorName": "Ann", "isLocalGuide": true, "ownerResponse": "Thank you Ann!" }],"scrapedAt": "2026-09-29T12:00:00.000Z"}
emails and reviews appear only when the options are on. A place given by URL that no longer exists returns {"status": "not-found"} and is not billed. A SUMMARY record in the key-value store gives the run totals.
Pricing
Store discounts: on Apify Silver, Gold, Platinum and Diamond plans, some events cost up to 20 % less. The Pricing tab of the Store page shows the exact price for each plan.
Pay per event, only for what is delivered:
| Event | Price |
|---|---|
| Place from a search | $2.80 per 1,000 places |
| Place looked up by URL / place ID | $0.04 per place |
| Review | $2.50 per 1,000 reviews |
| Place with at least one email found (option) | $1.90 per 1,000 places |
| Run start | $0.01 per run |
Duplicates, places without email and places not found are free. Example: 1,000 dentists with emails found on 400 of them costs $0.01 + $2.80 + $0.76 = $3.57.
Coming soon: with verifyEmails, a place whose email is published on its website but sits on a catch-all mail server (the server accepts any address, so the mailbox cannot be confirmed) will be billed at half the email price ($0.95 per 1,000), and a guessed catch-all address is never billed; until this is enabled, such places are billed like any place with an email found.
Works with a free Apify account too. Free-plan accounts can use every feature at the same per-result prices, paid from their monthly Apify credit. The only limits are your credit and your maximum cost per run.
Use it through the API
curl -X POST "https://api.apify.com/v2/acts/pnda~google-maps-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["plumber"], "location": "Chicago, IL", "maxResultsPerSearch": 40}'
It also works from Make, Zapier, n8n and the Apify Python and JavaScript clients.
FAQ
Do I need a Google Maps API key or a Google Places API key? No. You only need an Apify account (a free one works too). There is nothing to set up on Google Cloud.
Can I get Google Maps reviews by place ID? Yes. Put the place_id (or the Google Maps URL) in placeUrls and set maxReviewsPerPlace.
Why about 120 places at most per search? Google Maps itself stops there. To cover a whole city, split it: one search per neighborhood or per category.
How do I stay under a budget? Set Maximum cost per run in the run options. The Actor stops before it goes over.
Are the emails verified? They are the addresses published on the business website. To check that the mailbox exists, run them through Email Verifier.
Is it legal? The Actor only collects publicly available business information. Personal data in reviews (author names) may be protected by privacy laws: process it only with a legitimate reason.
Related actors
- Email Extractor: Have the websites of your places? Extract all their emails, phones and social links, verified.
- Email Verifier: Check the emails you collected before a campaign, $0.95 per 1,000.
- Email Finder: Need the owner or manager, not info@? Find a named person's email from the place's domain.
- Shopify & WooCommerce Stores Database: Selling to online shops rather than local businesses? Start from a filtered list of Shopify and WooCommerce stores.