Fake Google Reviews Check - Suspicious Reviews per Business avatar

Fake Google Reviews Check - Suspicious Reviews per Business

Pricing

from $3.00 / 1,000 business scoreds

Go to Apify Store
Fake Google Reviews Check - Suspicious Reviews per Business

Fake Google Reviews Check - Suspicious Reviews per Business

Score a business's Google reviews for fake patterns: review bursts, one-review accounts, copy-paste text and sudden rating jumps. Works on any Google Maps reviews dataset.

Pricing

from $3.00 / 1,000 business scoreds

Rating

0.0

(0)

Developer

mohamed alaya

mohamed alaya

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

a month ago

Last modified

Security

Limited permissions

Share

Give it the dataset of a Google Maps reviews scraper and it scores every business from 0 to 100 for suspicious review patterns: bursts of reviews in a few days, one-review accounts, copy-paste text and sudden rating jumps, with the reasons in plain words. Made for local-SEO agencies, reputation-management shops and anyone vetting a business or a competitor's reviews.

It is a suspicion score, not a verdict. It does not scrape Google and cannot tell you that a review is fake; it shows where the numbers look unusual so you know where to read closer.

Quick start (3 copy-paste examples)

1. See it work (empty input): run with {}. You get three labelled synthetic businesses (one organic, one with a bought 5-star burst, one with a small copy-paste cluster), free.

2. Score a scraper's output: run a Google Maps reviews scraper (for example compass/Google-Maps-Reviews-Scraper), then pick its dataset in the "Reviews dataset" field:

{ "datasetId": "YOUR_DATASET_ID", "minReviews": 20, "includeReviewRows": true }

3. Paste reviews (CSV or JSON), one business:

{ "businessName": "My Competitor", "rows": "stars,text,publishedAtDate,reviewerNumberOfReviews,isLocalGuide\n5,Great service highly recommend,2026-09-01T10:00:00Z,1,false\n..." }

Use it with (pipelines)

  • Google Maps reviews scraper -> this Actor. Reads one row per review: name, reviewerId, reviewerNumberOfReviews, isLocalGuide, stars, text, publishedAtDate (or publishAt), likesCount, responseFromOwnerText, placeId, title.
  • Google Maps places scraper with reviews switched on (rows with a nested reviews array) -> this Actor. Same review fields inside each place.
  • Any CSV with columns named like the ones above.

Field names come from the scrapers' public output documentation and common CSV exports. They have not been verified against a fresh real export (see limits). If your scraper uses other names, rename the columns.

Input guide

FieldWhat it does
Reviews datasetDataset picker (read-only). Reviews are grouped per business by placeId, then title.
Or paste reviewsJSON, JSON lines or CSV, one row per review.
Business nameLabel for pasted rows that have no placeId or title.
Minimum reviewsBusinesses below this get a free "not enough reviews" row (default 8).
Add a report rowOne summary row with the ranking and the weights (separately priced).
Also output flagged reviewsFree rows for each review with at least one flag.
Maximum businessesSafety cap (default 200).

How the score works (weights are in every output row)

Each signal has a weight and a strength from 0 to 1 that rises between a "normal" and an "extreme" level.

SignalWeightNormal -> extreme
Share of reviewers with only one review2035% -> 70%
Review burst: densest 7-day window (needs exact dates)2215% -> 60% of reviews
Near-duplicate text (word 3-gram overlap 60%+, 6+ words)203% -> 25% of written reviews
Short generic praise ("great service", "highly recommend")1010% -> 50%
Five-star reviews with no text650% -> 90%
Reviewers who are not Local Guides660% -> 95%
Rating jump: last 90 days vs before8+0.3 -> +1.2 stars
Share of five-star ratings880% -> 97%

Score = sum(weight x strength) / sum(weight of the signals that could be measured) x 100, plus a convergence bonus (+8 for each signal beyond the second that is at least half-way to its extreme, max +16) and a peak bonus (up to +15 when one of the three heavy signals is at its extreme). Signals whose fields are missing are skipped and listed in signalsNotMeasured; with fewer than 3 measurable signals the score is capped at 40. Levels: 0-24 low, 25-49 moderate, 50-74 high, 75+ very high suspicion. Confidence is high with 5+ signals and 30+ reviews.

Output

FieldMeaning
business, placeId, reviewsAnalyzedWho and how many reviews.
suspicionScore, level, confidenceThe 0-100 score and its label.
topReasonsUp to 4 plain-language reasons.
signalsPer signal: value, weight, strength, points, detail.
signalsNotMeasuredSignals skipped and why.
sampleReviewsUp to 5 reviews with the most flags (reviewer, stars, date, text start, flags).

The last row (type: "report") ranks the most suspicious businesses and repeats the weights.

Sample row (shortened):

{ "type": "business", "business": "Demo Plumbing Pros (synthetic, bought 5-star burst)", "reviewsAnalyzed": 78, "suspicionScore": 79,
"level": "very high suspicion", "confidence": "high",
"topReasons": ["22 reviews are near-copies of each other", "45 of 78 reviews landed inside one 7-day window (from 2026-08-12)", "rating jumped by 0.8 stars in the last 90 days"] }

Price

Pay per event: $0.003 per business scored and $0.01 for the optional report. Businesses with too few reviews and the free demo are never charged. Example: 200 businesses with the report = 200 x $0.003 + $0.01 = $0.61.

FAQ

Can it prove a review is fake? No. A legitimate viral moment can also create a burst, and real people write short praise. The score only shows patterns worth a closer look.

Why was a business not scored? It had fewer reviews than "Minimum reviews", or the rows had no stars or text.

Do I need exact dates? For the burst signal, yes (publishedAtDate). Relative dates such as "3 weeks ago" are used only for the rating-jump signal.

Honest limits

  • Heuristics only: no account verification, no photo analysis, no knowledge of which reviews Google already removed. The scrapers' review lists may be capped (often the newest N), which can hide older patterns.
  • Tested only on synthetic data whose ground truth I controlled (60 generated businesses: 30 organic, including 6 with a legitimate viral burst; 30 manipulated, half obvious, half subtle). At the 25+ cut: precision 96%, recall 73%. At 50+: precision 100%, recall 43%; subtle manipulation is mostly missed. The same author wrote generator and scorer, so this is a consistency check, not an accuracy measurement on real Google reviews.
  • Near-duplicate checking looks at the first 800 written reviews of a business.