PlainRows

Google Maps Reviews Scraper

Get Google Maps reviews of any place: stars, text, date, translation, photos, owner reply and the place's rating. Paste Maps links, place IDs, CIDs or names. No reviewer names. Only-new-reviews mode for daily alerts. Pay per review.

Try it on Apify   Actor status

Typical uses

Pricing

Pay per use, no subscription, no monthly fee. The price depends on your Apify plan. Apify's free plan includes $5 of usage every month.

You pay perFree planStarterScaleBusiness
Review
One Google Maps review returned with its stars, text, date, translation, photos and owner reply. Places with no review, duplicates and input mistakes are free.
$0.0003$0.0003$0.0002$0.0002
Block of 10 reviews requested
Google Maps reviews are fetched in blocks of 10 per place (100 reviews = 10 blocks). Charged for each block requested once Google has answered, even when the place has fewer reviews than requested or is not found, at about what the data source charges us. Not charged when Google does not answer.
$0.0011$0.0011$0.0011$0.0011

Run it from your code

Get an API token in the Apify Console (Settings → Integrations), then:

curl -X POST \
  "https://api.apify.com/v2/acts/plainrows~google-maps-reviews/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
  "places": [
    "ChIJifIePKtZwokRVZ-UdRGkZzs"
  ],
  "maxReviewsPerPlace": 100,
  "country": "US"
}'
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("plainrows/google-maps-reviews").call(run_input={'places': ['ChIJifIePKtZwokRVZ-UdRGkZzs'],
 'maxReviewsPerPlace': 100,
 'country': 'US'})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row)

Use it in automations and AI agents

Full documentation, input options and output fields: https://apify.com/plainrows/google-maps-reviews