1. Hard Unit-Cost Audit: Extracting 100,000 Google Maps Reviews
Compare the real engineering cost and functional limits of extracting verified customer reviews across major providers:
| Provider | Max Reviews / Place | Sort by Newest / 1-Star | Cost for 100,000 Reviews |
|---|---|---|---|
| Official Google Places API | Hard-capped at 5 reviews | No (relevance sample only) | $500.00 (20K Details calls @ $25/1K) |
| Outscraper Reviews API | Unlimited (async batch) | Yes | $150.00 – $200.00 |
| SerpApi Google Maps Reviews | Unlimited (10/page) | Yes | $100.00 – $150.00 (10K SERP calls) |
| PlacesData API (/v1/places/reviews) | Unlimited (up to 100/call) | Yes + keyword filter | $8.00 – $20.00 (200K Credits) |
2. Sorting by Newest & Lowest Rating for Reputation Alerts
Reputation management platforms and hospitality analytics teams need immediate visibility into new 1-star and 2-star reviews—something impossible with the official 5-review cap.
Fetch Newest or 1-Star Customer Reviews by Place ID
Retrieve verified customer reviews sorted by newest or lowest_rating:
curl "https://api.placesdataapi.com/v1/places/reviews?place_id=ChIJSy28upiAhYARkoxpzFnW7b4&sort=newest&limit=50" \
-H "x-api-key: pd_live_your_api_key"import requests
res = requests.get(
"https://api.placesdataapi.com/v1/places/reviews",
headers={"x-api-key": "pd_live_your_api_key"},
params={
"place_id": "ChIJSy28upiAhYARkoxpzFnW7b4",
"sort": "lowest_rating",
"limit": 50,
},
timeout=20,
).json()
unanswered = [
r for r in res["data"]
if r["rating"] <= 2 and not r.get("owner_response")
]
print(f"Unanswered negative reviews: {len(unanswered)}")const res = await fetch(
"https://api.placesdataapi.com/v1/places/reviews?place_id=ChIJSy28upiAhYARkoxpzFnW7b4&sort=lowest_rating&limit=50",
{ headers: { "x-api-key": "pd_live_your_api_key" } }
);
const { data: reviews } = await res.json();
const unanswered = reviews.filter((r) => r.rating <= 2 && !r.owner_response);
console.log("Unanswered 1-2 star reviews:", unanswered.length);{
"code": 0,
"provider": "https://placesdataapi.com",
"status": "ok",
"msg": "success",
"data": [
{
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT2xWVmFGSk1ZVzFLTWtSMFdHOVlVRmxyWTI4NFpYYxAB",
"place_id": "ChIJSy28upiAhYARkoxpzFnW7b4",
"author_name": "Lorna Liana",
"author_reviews_count": 46,
"is_local_guide": true,
"rating": 2,
"review_text": "No seating",
"published_at": "2026-11-03T20:03:16.145Z",
"published_relative": "23 hours ago",
"owner_response": null,
"owner_response_at": null,
"likes_count": 0,
"photos": [],
"language": "en"
},
{
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT2xSS1FWaGFjVFIyY0VGS04xVmZiMmh5V0VOM2VrRRAB",
"place_id": "ChIJSy28upiAhYARkoxpzFnW7b4",
"author_name": "Anton Chuvakin",
"author_reviews_count": 793,
"is_local_guide": true,
"rating": 5,
"review_text": "As expected, very good coffee, and creative recipes too. Loved it!!!",
"published_at": "2026-10-20T00:25:49.583Z",
"published_relative": "2 weeks ago",
"owner_response": null,
"owner_response_at": null,
"likes_count": 0,
"photos": [],
"language": "en"
}
],
"meta": {
"request_id": "cfc64d0c-f607-43b7-b2b1-01d307985f83",
"place_id": "ChIJSy28upiAhYARkoxpzFnW7b4",
"count": 2,
"sort": "newest",
"credits_charged": 4,
"took_ms": 705
}
}Interactive Engineering Workbench · GET /v1/places/reviews
Verify real-time latency, credit math & JSON schema
Frequently Asked Questions
- Can I filter reviews by a specific keyword like 'wait time' or 'parking'?
- Yes. Pass query=parking or query=wait+time to GET /v1/places/reviews to return only reviews matching that keyword.