DEV Community

Cover image for Reputation Research on Google Maps: Spot Out-of-Town Reviewers with Public Data in 2026
Truffle Pig Data
Truffle Pig Data

Posted on

Reputation Research on Google Maps: Spot Out-of-Town Reviewers with Public Data in 2026

A suspicious one-star review usually raises the same question: is this person even local? The review history behind any Google Maps contributor profile is public, but it reads as an endless scroll of place names, not an answer. I'll show the manual way to read that footprint, why it does not scale, and the shortcut: the Google Maps Reviewer Geo Profile API on Apify, which clusters a reviewer's public review locations into a region-level home estimate with a confidence score.

Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.

Is there an API for Google Maps reviewer activity?

Google's official APIs return a few reviews per place, but nothing per reviewer: no endpoint accepts a contributor and returns where they review. The public contributor page shows the history, one scroll at a time, in whatever language each review was written. This Actor reads that public history and adds the analysis you would otherwise build yourself: reverse geocoding against an offline GeoNames dataset, then spatial clustering into a standardized home-region estimate.

What the Reviewer Geo Profile API returns

The Reviewer Geo Profile API returns one derived row per reviewer: a standardized home-region guess with ISO codes, a confidence score, home-versus-travel review counts, a regional footprint, and centroid plus bounding-box geometry.

Data point Example Notes
Home-region guess Chicago, Illinois, US standardized names plus ISO codes
Confidence score 0.86 cluster-based, how dominant the home cluster is
Home vs travel counts 61 home, 14 travel separates the base cluster from outliers
Regional footprint top regions with counts and shares a compact travel map
Geometry centroid and bounding box ready for plotting
Reviewer metadata public profile basics for context

Who this is for

Trust-and-safety and review-fraud analysts, businesses vetting a reviewer's footprint before responding or escalating a dispute, and researchers doing reputation research across batches of reviewers for the same place.

The manual way, and where it breaks

By hand, you open the contributor profile, scroll until it stops loading, note each reviewed place, and look up where those places are. An active reviewer has hundreds of reviews, the place names arrive unstandardized, and "Chicago Loop" and "Chicago" read as different locations unless you normalize them yourself. You end up with a hand-built map, a gut feeling, no confidence number, and an hour gone per reviewer.

The faster way: run the Google Maps Reviewer Geo Profile API

Apify Console

  1. Open the Google Maps Reviewer Geo Profile API and click Try for free.
  2. Paste a contributor ID, the long numeric ID in a reviewer's profile URL.
  3. Run it and export; one derived row per reviewer.

REST

curl -X POST "https://api.apify.com/v2/acts/johnvc~google-maps-reviewer-geo-profile-api/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "contributorId": "107022004965696773221" }'
Enter fullscreen mode Exit fullscreen mode

Endpoint mechanics are in the Apify API docs. Two knobs matter: regionGranularity sets whether the guess lands at city, state, or country level, and minCityPopulation snaps metro neighborhoods under their principal city.

Profile reviewers in Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("johnvc/google-maps-reviewer-geo-profile-api").call(
    run_input={
        "contributorIds": ["107022004965696773221"],
        "regionGranularity": "city",
        "maxResultsPerContributor": 100,
    }
)

for profile in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(profile)
Enter fullscreen mode Exit fullscreen mode

Read the home-region guess and its confidence first, then the home-versus-travel split; together they tell you whether a footprint looks locally coherent.

Bulk-analyze reviewer home regions

Bulk analyze Google reviewers home regions runs a list of contributor IDs and returns one row each; it is also published in Russian and Chinese.

Detect out-of-town reviewers

Detect out of town Google reviewers flags reviewers whose home cluster sits nowhere near the business being reviewed (Russian, Chinese).

Find a reviewer's home country

Find a Google reviewer's home country sets the granularity to country for the coarse view (Russian, Chinese).

Spot geographically inconsistent reviewers

Spot geographically inconsistent reviewers surfaces footprints too scattered to be one person's normal life, the classic fraud-research signal (Russian, Chinese).

Verify a reviewer is a real local

Verify a Google reviewer is a real local is the positive case: confirm a champion is genuinely local before featuring their review (Russian, Chinese).

Use it from Claude via MCP

Through the Apify MCP server, Claude, Claude Code, or Cursor can take a contributor ID from a review you are discussing and return the geo profile mid-conversation. The setup lives in Profile a Google reviewer's location via MCP (Russian, Chinese), and Claude itself is at claude.ai.

FAQ about scraping Google Maps reviewer data

Is it OK to run a scraper on a reviewer's profile?

The Actor reads only public review history, the same pages anyone can open in a browser, and outputs a region-level aggregate rather than an address. It exists for business analytics: review-fraud research, reviewer vetting, and reputation research on public activity. Use it for that, not for anything aimed at individuals.

What does the reviewer geo scraper cost?

Two cents per contributor analyzed on the free tier, plus a fraction of a cent per run to start. Depth is included: profiling 200 reviews of history costs the same per reviewer as 50.

How accurate is the scraper's home-region estimate?

It is an inference, and the output says so. The densest review cluster stands in for a base location, with a confidence score attached; travel-heavy accounts blur the signal, and deeper history, up to 200 reviews, sharpens it. I treat it as a research signal, never as a verified location.

Can Claude call this scraper over MCP?

Yes, the Actor registers as an MCP tool, so agents in Claude, Claude Code, and Cursor can profile a contributor ID on demand.

Can I schedule the scraper to re-check reviewers?

Yes: save the ID list as a task and schedule it monthly to watch for changes in geographic coherence over time. Start from the Google Maps Reviewer Geo Profile API.

More from Truffle Pig Data

This pairs naturally with the Google Maps Contributor Reviews API, which pulls the raw review history the analysis is built on, plus the Google Maps Places API for place details and the Google Local API for local listings.

Wrapping up

Where a reviewer actually reviews is public signal; it just needed structure and a confidence score. Run one contributor ID through the Google Maps Reviewer Geo Profile API and read the row for yourself.

Top comments (0)