Google Maps Reviews Scraper avatar

Google Maps Reviews Scraper

Under maintenance

Pricing

from $2.00 / 1,000 review scrapeds

Go to Apify Store
Google Maps Reviews Scraper

Google Maps Reviews Scraper

Under maintenance

Scrape Google Maps place reviews by place URL or search query. Returns place metadata and individual reviews (author, rating, text, date, likes) for SMB review-velocity qualification and local lead gen.

Pricing

from $2.00 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

Harsh

Harsh

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Scrape Google Maps place reviews by place URL or search query. Get place metadata (name, address, rating, review count) plus individual reviews (author, rating, text, date, likes) — ideal for SMB review-velocity qualification and local lead-gen stacks.

Pairs well with Google Maps Business Leads for listings; this Actor is reviews-focused.

Built with TypeScript and Crawlee CheerioCrawler (HTTP/HTML, no browser by default). Multi-strategy parsing (fixture cards, JSON-LD, embedded Maps payloads, meta tags, DOM review panels) with retries, rate limiting, and proxy support.

Run it on the Apify platform for scheduling, API access, proxy rotation, monitoring, and dataset exports (JSON, CSV, Excel).

What does Google Maps Reviews Scraper do?

  • Accept Google Maps place URLs (preferred) and optional search queries
  • Extract a place row: placeId, name, address, rating, reviewCount, mapsUrl, scrapedAt
  • Extract review rows: placeId, placeName, reviewId, author, rating, text, date, likes, scrapedAt, error
  • Cap volume with maxReviewsPerPlace
  • Deduplicate reviews by reviewId (fallback: author + date + text)
  • Export REVIEWS.csv and SUMMARY.md to the key-value store

Why use Google Maps Reviews Scraper?

  • SMB qualification — measure review velocity and recent sentiment before outreach
  • Local lead gen — enrich Maps leads with social proof and complaint themes
  • Reputation research — track star mix and likes on competitor reviews
  • Agency workflows — schedule runs via API for multi-location clients

How to use

  1. Open the Actor in Apify Console
  2. Paste one or more Google Maps place URLs (and/or search queries)
  3. Set Max reviews per place, delay, and proxy (residential if blocked)
  4. Click Start
  5. Download the Dataset, or REVIEWS.csv / SUMMARY.md from the key-value store

Input

FieldTypeDefaultDescription
placeUrlsstring[]sample placeGoogle Maps place page URLs (preferred)
searchQueriesstring[][]Optional Maps search queries to discover places
maxReviewsPerPlaceinteger50Cap reviews collected per place
maxConcurrencyinteger2Parallel HTTP requests (keep low for Maps)
maxRequestRetriesinteger3HTTP retry count
requestDelayMsinteger1000Delay + jitter before each request
languagestringenMaps hl language code
proxyConfigurationobjectApify Proxy onProxy settings

Example:

{
"placeUrls": [
"https://www.google.com/maps/place/Joe%27s+Coffee/@30.2672,-97.7431,17z/data=!3m1!4b1!4m6!3m5!1s0x8644b50a0a0a0a0a:0x1111111111111111"
],
"searchQueries": [],
"maxReviewsPerPlace": 50,
"maxConcurrency": 2,
"maxRequestRetries": 3,
"requestDelayMs": 1000,
"language": "en",
"proxyConfiguration": { "useApifyProxy": true }
}

See examples/input.json.

Output

Dataset items use a type field:

Place record

{
"type": "place",
"placeId": "ChIJfixture0001joescoffee",
"name": "Joe's Coffee",
"address": "123 Congress Ave, Austin, TX 78701, United States",
"rating": 4.7,
"reviewCount": 842,
"mapsUrl": "https://www.google.com/maps/place/...",
"scrapedAt": "2026-07-20T12:00:00.000Z",
"error": null
}

Review record

{
"type": "review",
"placeId": "ChIJfixture0001joescoffee",
"placeName": "Joe's Coffee",
"reviewId": "rev-fixture-001",
"author": "Maya L.",
"rating": 5,
"text": "Best latte in downtown Austin. Friendly staff and quick wifi.",
"date": "2 weeks ago",
"likes": 12,
"scrapedAt": "2026-07-20T12:00:00.000Z",
"error": null
}

You can download the dataset in JSON, HTML, CSV, or Excel.

Data fields

FieldOn typeDescription
placeIdbothGoogle place identifier
nameplaceBusiness / place name
placeNamereviewParent place name
addressplaceFormatted address
ratingbothAggregate or review stars (0–5)
reviewCountplaceTotal reviews shown on Maps
mapsUrlplacePlace URL
reviewIdreviewStable review id when available
authorreviewReviewer display name
textreviewReview body
datereviewRelative or absolute date string
likesreviewLikes / helpful votes
scrapedAtbothISO scrape timestamp
errorbothSoft error when blocked or failed

Pricing

How much does it cost to scrape Google Maps reviews?

Pay-per-event (PPE): $0.002 per review (primary dataset item charge on apify-default-dataset-item), plus a small actor-start fee. Place rows written to the dataset are also charged as dataset items. Use maxReviewsPerPlace to control cost.

Example: 500 reviews ≈ $1.00 in result charges (plus start fee and any proxy compute).

Tips

  • Prefer place URLs from Google Maps (or from the business-leads Actor) for best reliability
  • Keep maxConcurrency at 1–2 and raise requestDelayMs if you see captchas
  • Use Apify Proxy (residential groups when needed) — Maps blocks many datacenter IPs
  • For review-velocity scoring, sort/filter by date and count recent reviews per placeId
  • Pair with Maps leads: scrape listings first, then feed mapsUrl values into placeUrls

Limitations

  • Google Maps is heavily protected. Datacenter IPs are frequently captcha’d; use Apify Proxy
  • This Actor uses Cheerio/HTTP (fast, cheap). Highly interactive review panels may not load full infinite-scroll history in raw HTML; depth depends on what Maps returns in the page payload
  • Review dates may be relative strings ("2 weeks ago") as shown on Maps
  • Respect Google Terms of Service, local laws, and do not use data for spam or prohibited purposes

FAQ

Why did I get zero reviews?
Likely a block/captcha or empty HTML payload. Check logs for “blocked”, enable residential proxy, lower concurrency, and increase requestDelayMs.

Can I use only search queries?
Yes — set searchQueries and leave placeUrls empty. Places found on the search page are enqueued for review extraction.

How are duplicates handled?
Reviews are deduplicated by reviewId, then by author + date + text snippet. Places are deduplicated by placeId.

Does language matter?
Set language (hl) to bias Maps UI strings and some content locale.

Changelog

1.0.0

  • Initial release: place URLs + search queries, multi-strategy review extractors, place + review dataset types, CSV/Markdown export, fixture unit tests, PPE-ready

License

Apache-2.0