Review Analyzer API — Sentiment, Topics & Complaints avatar

Review Analyzer API — Sentiment, Topics & Complaints

Pricing

from $1.00 / 1,000 review analyzeds

Go to Apify Store
Review Analyzer API — Sentiment, Topics & Complaints

Review Analyzer API — Sentiment, Topics & Complaints

Analyze customer reviews in bulk: sentiment, topics praised or criticized, complaint severity and unanswered complaints, with a summary per business. Works on any Google Maps, Trustpilot or Tripadvisor reviews dataset. Pay per review.

Pricing

from $1.00 / 1,000 review analyzeds

Rating

0.0

(0)

Developer

Sherwood

Sherwood

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

Review Analyzer API — sentiment, topics and unanswered complaints, pay per review

Give it the reviews of one business or of a thousand, as a list or as the dataset of any reviews scraper (Google Maps, Trustpilot, Tripadvisor...), and get for each business a summary built from every review: what customers praise, what they criticize, how serious the complaints are, which complaints never got a reply, and what changed over the last 90 days. $0.001 per review analyzed, reviews without text are free.

Built for automation and AI agents: nothing is required, the default input analyzes five sample reviews on its own, field names of the common scrapers are detected automatically, and the output is one plain dataset item per business.

What you get

One item per business, with its analyzed reviews inside:

{
"placeName": "Hotel Example",
"businessType": "hotel",
"reviewsAnalyzed": 15,
"averageRating": 2.3,
"positive": 2, "mixed": 0, "negative": 13,
"negativeShare": 0.87,
"recentNegativeShare": 0.9,
"olderNegativeShare": 0.6,
"ownerReplyRate": 0.0,
"unansweredComplaints": 12,
"strengths": [{"theme": "location", "mentions": 1}],
"weaknesses": [{"theme": "staff", "mentions": 10}, {"theme": "cleanliness", "mentions": 7}, {"theme": "room", "mentions": 7}],
"alerts": [{"date": "2026-10-03", "rating": 1, "severity": 3.0, "excerpt": "The dirtiest hotel...", "url": "https://..."}],
"summary": "Strengths: location (1). Weaknesses: staff (10), cleanliness (7), room (7). 13 negative and 0 mixed out of 15 reviews. 12 complaints without a reply. 5 serious alerts.",
"reviews": [
{
"reviewDate": "2026-10-03", "reviewRating": 1, "sentiment": "negative", "severityLabel": "serious",
"criticized": ["cleanliness", "staff"], "praised": [], "ownerReplied": false, "needsReply": 0.97,
"recommendation": "discourages", "reviewUrl": "https://..."
}
]
}

The Reviews view of the dataset (or items?unwind=reviews in the API) gives one row per review, ready for a spreadsheet.

What each review is checked for

  • Sentiment: positive, mixed or negative. The rating alone is not enough: a 4-star review with a complaint is mixed.
  • Themes, each as not mentioned, praised or criticized, so one review can praise the food and criticize the waiting time. The themes depend on the business type, detected from its category:
    • restaurant: food, service, waiting time, price, atmosphere, cleanliness;
    • hotel: room, cleanliness, staff, location, noise, breakfast, value;
    • health: reception, waiting time, listening, care quality, fees, appointments;
    • trades: punctuality, work quality, price and quote, honesty, communication;
    • beauty, professional services, retail and a generic set. Or give your own with themes ("parking: parking space and access").
  • Severity of the main complaint: none, annoyance, problem, or serious (hygiene, safety, health, scam, discrimination). Serious ones come back as alerts.
  • Needs a reply: a complaint, an incident or a question. Combined with the owner's reply, it gives unansweredComplaints.
  • Recommendation: recommends, neutral or discourages.

Reviewer names and photos are never read or copied.

Use cases

  • Reputation management agencies: find the businesses with unanswered complaints in the last weeks, with the exact reviews to show.
  • Multi-site brands and franchises: compare locations on the same themes every month.
  • Market research: what customers praise and criticize in a category and a city.
  • Buying a business: check the trend and the serious complaints before the deal.

Chain it after a reviews scraper

Give datasetId and the Actor reads the reviews from its items. Text, rating, date, owner reply and business are detected, and were tested on the real output of the most used scrapers:

SourceScraperNotes
Google Mapscompass/Google-Maps-Reviews-Scraperone item per review
Google Mapscompass/crawler-google-places with maxReviewsreviews nested in each place are unfolded
Tripadvisormaxcopell/tripadvisor-reviewsthe review title is kept in front of the text
Trustpilotmemo23/trustpilot-scraper-ppethe review title is kept in front of the text
Booking.comvoyager/booking-reviews-scraperliked and disliked parts read together; scores out of 10 rescaled
Yelptri_angle/yelp-review-scraper

For another source, set textField, ratingField and the other field options if detection fails.

{ "datasetId": "YOUR_REVIEWS_DATASET_ID", "maxReviewsPerPlace": 50 }

To run it automatically after a reviews scraper, add it on that scraper's Integrations tab with the input { "datasetId": "{{resource.defaultDatasetId}}" }.

Input

FieldTypeDefaultNotes
reviewsarrayfive sample reviewsStrings, or objects with text and optionally rating, date, placeName, category, reviewUrl.
datasetIdstring—Read the reviews from an Apify dataset instead.
businessTypeselectautoPicks the default themes.
themesarray—Your own themes, replacing the defaults.
maxReviewsinteger500Reviews with a text analyzed per run.
maxReviewsPerPlaceinteger100Most recent reviews kept per business.
includeReviewTextbooleantrueCopy the first 1,000 characters of each review into its result.

Pricing

  • Review analyzed — $0.001 per review with a text (= $1 per 1,000).
  • Reviews without text, and reviews that could not be analyzed: free.

Set a maximum cost per run in Apify and the Actor stops cleanly when it is reached; the remaining reviews are reported, not analyzed.

Via API, n8n, Make or MCP

POST https://api.apify.com/v2/actors/sherwood~review-analyzer/run-sync-get-dataset-items with the JSON input above, or add it as a tool through the Apify MCP server.

Limits

  • The analysis is made by an AI model (Jev, by TypeSafe AI) that classifies each review; check the reviews behind an alert before acting on it.
  • The analysis reads the text: very short reviews ("Great!") give a sentiment but rarely a theme.
  • Themes are checked in the review's own language; the output labels are in English.
  • Links to each review (reviewUrl, unansweredComplaintUrls) come from the scraper. The Google Maps Reviews Scraper only gives them when its personalData option is on; everything else works without them.
  • Typical speed: 250 reviews in about 15 seconds.