Google Maps reviews

Every accessible review. One stable schema. Newest first.

POST /v1/scrape/google-maps/reviews from 40 Site-specific

Full accessible review feed from any Maps place: by full Google Maps URL or the fid hidden in it. Returns up to ~10,000 unique reviews as a clean JSON list, deduplicated and sorted newest-first. No HTML, no infinite scroll, no anti-bot walls.

The hard part

Pulling Maps reviews used to be a public-API call. That door closed in early 2026, and what replaced it surfaces only a limited slice of any busy place's full review count. On places with over 20K total reviews the practical ceiling lands around 10,000 unique, which is where we cap, because no scraper publicly delivers more through any documented endpoint.

What it does

  • Returns reviews sorted newest-first regardless of how Google ranked them.
  • Auto-downgrade: places with 50 or fewer reviews returned bill at 40 credits.
  • Reviews include rating, text, photos, `posted_at` (epoch + ISO), language, helpful_count, and owner_reply when present.
  • Hard cap 10,000 per request. Google's accessible review pool maxes out here regardless of the place's published total.

Send a call

curl -X POST https://scrapenest.dev/v1/scrape/google-maps/reviews \
  -H "Authorization: Bearer sn_••••" \
  -H "Content-Type: application/json" \
  -d '{
        "place_id": "0x47e66e2964e34e2d:0x8ddca9ee380ef7e0",
        "max_reviews": 600
      }'

Request body

{
  "place_id": "0x47e66e2964e34e2d:0x8ddca9ee380ef7e0",
  "max_reviews": 5000
}

Response shape

{
  "place_id": "0x47e66e2964e34e2d:0x8ddca9ee380ef7e0",
  "name": "Eiffel Tower",
  "address": "Av. Gustave Eiffel, 75007 Paris, France",
  "rating": 4.7,
  "review_count": 92481,
  "google_maps_url": "https://www.google.com/maps/place/...",
  "reviews": [
    {
      "review_id": "ChdDSUhNMG9nS0VJQ0FnSURBNS0z…",
      "review_url": "https://www.google.com/maps/reviews/...",
      "author_name": "Jane D.",
      "author_id": "1234567890",
      "author_profile_url": "https://www.google.com/maps/contrib/1234567890/reviews",
      "author_avatar_url": "https://lh3.googleusercontent.com/...",
      "rating": 5,
      "text": "Amazing view, worth the wait.",
      "language": "en",
      "relative_time": "2 weeks ago",
      "posted_at": 1778630400,
      "posted_at_iso": "2026-05-13T00:00:00Z",
      "helpful_count": 12,
      "photos": ["https://lh3.googleusercontent.com/places/AReview-photo1"],
      "owner_reply": null
    }
  ],
  "star_histogram": [1240, 980, 3110, 14820, 72331],
  "took_ms": 197000,
  "cache_hit": false,
  "credits_charged": 10000
}

What it costs

100 credits per 50 reviews returned, or 40 credits when 50 or fewer come back. Hard cap 10,000. You only pay for what's available; results come back newest-first. Pulls above ~700 reviews should use the /async endpoint.

  • For pulls above ~700 reviews, prefer the async endpoint pattern: submit, poll /v1/scrape/runs/{run_id}, collect the final result. Same pricing.

questions

Google Maps reviews FAQ

How do I get Google Maps reviews as JSON?

POST the place's Google Maps URL (or the hex FID inside it) and you get back a JSON list of reviews with author, star rating, text, photos, posted_at, and the owner's reply when there is one. No HTML parsing, no infinite scroll, and no anti-bot handling on your side.

Where do I find the place_id?

Open the place on Google Maps and copy the whole URL from the address bar — you can pass it as-is. The identifier we need is the hex pair in the `!1s0x…:0x…` segment of that URL, so if you already store it you can pass the bare `0x…:0x…` FID instead. A plain share link without that segment won't resolve, and the endpoint tells you so explicitly rather than failing silently.

Can I pull more than the 5 reviews the Places API returns?

Yes, that limit is the reason this endpoint exists. Google's official Places API surfaces only a handful of reviews per place; here the ceiling is roughly 10,000 unique reviews, which is as deep as the accessible pool goes for even the busiest listings.

Are reviews sorted newest first?

Yes. Results come back deduplicated and sorted newest-first regardless of how Google chose to rank them, so incremental syncs can stop as soon as they hit a review they already have.

What does a large review pull cost?

100 credits per 50 reviews returned, and 40 credits flat when 50 or fewer come back. You only pay for reviews actually delivered. Anything above roughly 700 reviews should use the async variant so the job isn't fighting the request timeout — same pricing either way.