ScavioScavio
FeaturesPricingDocs
Sign InGet Started
  1. Home
  2. Workflows
  3. Product Review Sentiment Tracker
Workflow

Product Review Sentiment Tracker

Track product review sentiment on Amazon and Reddit with Scavio. Aggregate reviews, detect sentiment shifts, and alert your team.

Start FreeAPI Docs

Overview

This workflow collects product reviews and mentions from Amazon and Reddit, assigns a basic sentiment score to each, and tracks how sentiment trends over time. It helps product teams catch quality issues early, detect the impact of new releases, and monitor competitor product reception without manual review reading.

Trigger

Cron schedule (daily at 11 AM UTC)

Schedule

Runs daily at 11 AM UTC

Workflow Steps

1

Define product list

Load the list of your own products and competitor products to track from configuration.

2

Search Amazon and Reddit

Call the Scavio API on both platforms for each product to retrieve recent reviews and discussions.

3

Extract review text

Pull out the review body, rating, and snippet text from each result.

4

Score sentiment

Apply a keyword-based or LLM-based sentiment scorer to each review. Classify as positive, neutral, or negative.

5

Aggregate and trend

Compute the daily sentiment distribution and compare it to the rolling average from the past 7 days.

6

Alert on shifts

If negative sentiment exceeds the threshold or shifts significantly, send an alert to the product team.

Python Implementation

Python
import requests
import json
from pathlib import Path

API_KEY = "your_scavio_api_key"

POSITIVE_WORDS = {"great", "love", "excellent", "perfect", "best", "amazing"}
NEGATIVE_WORDS = {"broken", "terrible", "worst", "waste", "awful", "bad", "poor"}

def search_product(query: str, platform: str) -> list[dict]:
    res = requests.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": platform, "query": f"{query} reviews"},
        timeout=15,
    )
    res.raise_for_status()
    return res.json().get("organic", [])

def score_sentiment(text: str) -> str:
    words = set(text.lower().split())
    pos = len(words & POSITIVE_WORDS)
    neg = len(words & NEGATIVE_WORDS)
    if pos > neg:
        return "positive"
    if neg > pos:
        return "negative"
    return "neutral"

def run():
    products = ["your-product-name", "competitor-product"]
    results = []

    for product in products:
        for platform in ["amazon", "reddit"]:
            items = search_product(product, platform)
            for item in items:
                text = item.get("snippet", "") or item.get("title", "")
                sentiment = score_sentiment(text)
                results.append({
                    "product": product,
                    "platform": platform,
                    "title": item.get("title", ""),
                    "sentiment": sentiment,
                })

    counts = {"positive": 0, "neutral": 0, "negative": 0}
    for r in results:
        counts[r["sentiment"]] += 1

    print(f"Tracked {len(results)} mentions")
    print(f"Sentiment: {json.dumps(counts)}")

    neg_ratio = counts["negative"] / max(len(results), 1)
    if neg_ratio > 0.4:
        print("ALERT: Negative sentiment exceeds 40% threshold")

if __name__ == "__main__":
    run()

JavaScript Implementation

JavaScript
const API_KEY = "your_scavio_api_key";

const POSITIVE = new Set(["great", "love", "excellent", "perfect", "best", "amazing"]);
const NEGATIVE = new Set(["broken", "terrible", "worst", "waste", "awful", "bad", "poor"]);

async function searchProduct(query, platform) {
  const res = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST",
    headers: {
      "x-api-key": API_KEY,
      "content-type": "application/json",
    },
    body: JSON.stringify({ platform, query: `${query} reviews` }),
  });
  if (!res.ok) throw new Error(`scavio ${res.status}`);
  const data = await res.json();
  return data.organic ?? [];
}

function scoreSentiment(text) {
  const words = new Set(text.toLowerCase().split(/\s+/));
  let pos = 0, neg = 0;
  for (const w of words) {
    if (POSITIVE.has(w)) pos++;
    if (NEGATIVE.has(w)) neg++;
  }
  if (pos > neg) return "positive";
  if (neg > pos) return "negative";
  return "neutral";
}

async function run() {
  const products = ["your-product-name", "competitor-product"];
  const results = [];

  for (const product of products) {
    for (const platform of ["amazon", "reddit"]) {
      const items = await searchProduct(product, platform);
      for (const item of items) {
        const text = item.snippet ?? item.title ?? "";
        results.push({
          product,
          platform,
          title: item.title ?? "",
          sentiment: scoreSentiment(text),
        });
      }
    }
  }

  const counts = { positive: 0, neutral: 0, negative: 0 };
  for (const r of results) counts[r.sentiment]++;

  console.log(`Tracked ${results.length} mentions`);
  console.log("Sentiment:", JSON.stringify(counts));

  const negRatio = counts.negative / Math.max(results.length, 1);
  if (negRatio > 0.4) {
    console.log("ALERT: Negative sentiment exceeds 40% threshold");
  }
}

run();

Platforms Used

Amazon

Product search with prices, ratings, and reviews

Reddit

Community, posts & threaded comments from any subreddit

Frequently Asked Questions

This workflow collects product reviews and mentions from Amazon and Reddit, assigns a basic sentiment score to each, and tracks how sentiment trends over time. It helps product teams catch quality issues early, detect the impact of new releases, and monitor competitor product reception without manual review reading.

This workflow uses a cron schedule (daily at 11 am utc). Runs daily at 11 AM UTC.

This workflow uses the following Scavio platforms: amazon, reddit. Each platform is called via the same unified API endpoint.

Yes. Scavio's free tier includes 250 credits per month with no credit card required. That is enough to test and validate this workflow before scaling it.

Product Review Sentiment Tracker

Track product review sentiment on Amazon and Reddit with Scavio. Aggregate reviews, detect sentiment shifts, and alert your team.

Get Your API KeyRead the Docs
ScavioScavio

Real-time search API for AI agents. Search every platform, not just Google.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative

Tools

  • JSON Formatter
  • cURL to Code
  • Token Counter
  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy