ScrapeField
A rating moves slowly, and then all at once. This guide checks a list of businesses once a week, yours or the ones you compete with, and says what changed: how many new ratings each one got, and whether its score went up or down.
One place
GET /v1/google-maps/place takes a place_id and returns the whole listing. Three fields matter here: rating, the average; user_ratings_total, how many ratings it is the average of; and rating_distribution, how many of each star, as the listing’s bar chart shows them. A place costs 3 credits.
This week
In TypeScript, for a list of places:
const places = ['ChIJN1t_tDeuEmsRUsoyG83frY4']; // the place_ids to watch, from a search or a Maps URL
const headers = { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` };
const thisWeek = [];
for (const placeId of places) {
const res = await fetch(`https://api.scrapefield.com/v1/google-maps/place?place_id=${placeId}`, { headers });
const body = await res.json();
if (!res.ok) { console.error(placeId, body.error.code); continue; } // a failed call is not charged
const { name, rating, user_ratings_total, rating_distribution } = body.data;
thisWeek.push({ placeId, name, rating, user_ratings_total, rating_distribution });
}Save thisWeek wherever you keep things, a file or a table. Next week it is lastWeek.
What changed
for (const now of thisWeek) {
const before = lastWeek.find((p) => p.placeId === now.placeId);
if (!before) continue;
const newRatings = (now.user_ratings_total ?? 0) - (before.user_ratings_total ?? 0);
const newOneStar = (now.rating_distribution?.['1'] ?? 0) - (before.rating_distribution?.['1'] ?? 0);
const moved = (now.rating ?? 0) - (before.rating ?? 0);
if (newRatings || moved) {
console.log(`${now.name}: ${newRatings} new ratings, ${newOneStar} of them one star, rating ${before.rating} → ${now.rating}`);
}
}The star counts are the useful part. A rating of 4.6 can hide a week with ten one-star reviews, because the average moves slowly once a place has hundreds. The difference in the one-star count does not.
Running it every week
Any scheduler will do: cron, a scheduled GitHub Action, or a scheduled step in n8n or Make. A place costs 3 credits a week, so 100 places cost 300 credits a week, about $12.17 a year on the smallest pack. A place is cached for a day at most, so a weekly reading is never more than a day old.
To read what the new reviews say, fetch the place’s newest reviews when its count goes up: sorted by newest, they come first. For hundreds of places, run several calls side by side, up to your limit of calls at once.