SmartCustomer Reviews Scraper

Scrape public SmartCustomer and legacy Sitejabber company reviews with ratings, review text, public reviewer metadata, and business metrics.

Data fields

FieldTypeDescription
businessNamestring | nullValue exported as businessName.
businessDomainstring | nullValue exported as businessDomain.
businessUrlstring | nullValue exported as businessUrl.
categoryBreadcrumbsarrayValue exported as categoryBreadcrumbs.
overallRatingnumber | nullValue exported as overallRating.
totalReviewsinteger | nullValue exported as totalReviews.
recommendPercentnumber | nullValue exported as recommendPercent.
positiveReviewPercent12Monthsnumber | nullValue exported as positiveReviewPercent12Months.

Input preview

startUrlsSmartCustomer or Sitejabber review URLs
companiesCompany domains
maxItemsMaximum review records
maxReviewsPerCompanyMaximum reviews per company
ratingsOnly these star ratings
verifiedOnlyVerified reviews only

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Extract public SmartCustomer reviews and legacy Sitejabber review pages into clean datasets for reputation monitoring, ecommerce research, support triage, and competitor analysis.

Use this Actor when you need company review text, star ratings, public reviewer names, business metrics, rating distribution, source URLs, and export-ready records in CSV, JSON, Excel, API, or webhook workflows.

At a glance

  • Primary job: Scrape public SmartCustomer company review pages, including legacy sitejabber.com/reviews/... links that now resolve to SmartCustomer.
  • Input: Provide SmartCustomer URLs, Sitejabber legacy URLs, or bare company domains such as etsy.com.
  • Output: One dataset row per review with review text, rating, dates, public reviewer details, and business-level metrics.
  • Best for: Reputation monitoring, ecommerce trust research, complaint triage, market research, sentiment analysis, and recurring exports.

Who is it for?

  • Reputation teams tracking new negative reviews for a brand or portfolio.
  • Support and ecommerce teams triaging customer complaints and recurring pain points.
  • Market researchers comparing public sentiment across competitors.
  • Compliance and trust teams exporting evidence from public company review pages.
  • Data teams feeding public reviews into sentiment, BI, or warehouse pipelines.

Input recipes

Brand reputation monitor

{
  "companies": ["etsy.com"],
  "ratings": [1, 2],
  "maxItems": 20,
  "maxReviewsPerCompany": 20,
  "includeBusinessInfo": true,
  "includeReviewerInfo": true
}

Competitor benchmark

{
  "companies": ["etsy.com", "ebay.com"],
  "maxItems": 30,
  "maxReviewsPerCompany": 15,
  "includeBusinessInfo": true,
  "includeReviewerInfo": false
}

Legacy Sitejabber URL export

{
  "startUrls": [{ "url": "https://www.sitejabber.com/reviews/etsy.com" }],
  "maxItems": 50,
  "maxReviewsPerCompany": 50
}

What data can you extract?

Field Description
businessName Company name shown on SmartCustomer.
businessDomain Business website domain.
businessUrl SmartCustomer business review page URL.
categoryBreadcrumbs Public category path for the business.
overallRating Aggregate SmartCustomer rating.
totalReviews Aggregate review count.
ratingDistribution Best-effort counts/percentages by star rating.
keywordMentions Best-effort public keyword mention chips when visible.
reviewId Stable review identifier from the review anchor or content hash.
reviewUrl Direct review URL when available.
title Review headline.
body Full public review text available on the page.
rating Review star rating.
publishedDate Review publication date.
isVerified Verified marker when visibly available.
isUpdated Updated marker when visibly available.
reviewerName Public reviewer display name.
reviewerUrl Public SmartCustomer reviewer profile URL when visible.
helpfulCount, commentCount, mediaCount Best-effort engagement/media counts when visible.
sourceUrl Original input that produced the record.
scrapedAt ISO timestamp for the scrape.

Example input

{
  "companies": ["etsy.com"],
  "maxItems": 10,
  "maxReviewsPerCompany": 10,
  "includeBusinessInfo": true,
  "includeReviewerInfo": true
}

Example output

{
  "businessName": "Etsy",
  "businessDomain": "etsy.com",
  "businessUrl": "https://www.smartcustomer.com/reviews/etsy.com",
  "categoryBreadcrumbs": ["Shopping", "Marketplace", "Etsy"],
  "overallRating": 1.6,
  "totalReviews": 1573,
  "reviewId": "2646",
  "reviewUrl": "https://www.smartcustomer.com/reviews/etsy.com#2646",
  "title": "Blacklisted Etsy forever",
  "body": "I am deeply disappointed and outraged by my experience on Etsy...",
  "rating": 1,
  "publishedDate": "2026-07-04",
  "reviewerName": "GP g.",
  "reviewerUrl": "https://www.smartcustomer.com/users/galyasik1",
  "pageNumber": 1,
  "sourceUrl": "etsy.com",
  "scrapedAt": "2026-07-19T08:15:49.300Z"
}

Tips for best results

  • Start with domains: companies: ["etsy.com"] is the simplest way to target a business page.
  • Use legacy links directly: Old sitejabber.com/reviews/... links are accepted and normalized.
  • Filter low ratings: Use ratings: [1, 2] for complaint monitoring and support triage.
  • Keep batches bounded: Use maxReviewsPerCompany to avoid one company consuming the full run.
  • Expect public-page limits: The Actor only exports data publicly visible on SmartCustomer review pages.

API usage

Node.js:

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/smartcustomer-reviews-scraper').call({
  companies: ['etsy.com'],
  maxItems: 10
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/smartcustomer-reviews-scraper').call(run_input={
    'companies': ['etsy.com'],
    'maxItems': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL:

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~smartcustomer-reviews-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"companies":["etsy.com"],"maxItems":10}'

MCP and automation

Add the Actor to Claude Desktop or Claude Code through Apify MCP:

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/smartcustomer-reviews-scraper"

JSON configuration:

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/smartcustomer-reviews-scraper"
    }
  }
}

Example prompts:

  • "Export the latest 20 one-star SmartCustomer reviews for etsy.com."
  • "Compare public SmartCustomer review sentiment for etsy.com and ebay.com."
  • "Create a CSV of public review titles, ratings, and review dates for this SmartCustomer page."

Limits and troubleshooting

  • No private data: The Actor does not log in, bypass paywalls, or collect private account data.
  • Unexpected zero results: Check that the company has a public SmartCustomer review page and that your rating/verified filters are not too narrow.
  • Large runs: Increase requestDelay and use Apify Proxy if you see transient 429/5xx failures.
  • Missing optional fields: Reviewer location, business replies, media counts, and verification markers are only returned when publicly visible in the page data.

Support

If something does not work, open an issue on the Actor page and include:

  • the input JSON you used,
  • the run ID or run URL,
  • the expected output,
  • the actual output or error message,
  • a reproducible public URL from SmartCustomer or Sitejabber.

Common questions

Questions and answers reused from the canonical actor README.

Can it scrape old Sitejabber links?

Yes. Provide a URL like https://www.sitejabber.com/reviews/etsy.com; the Actor normalizes it to the current SmartCustomer review page.

Does it scrape private reviewer data?

No. It only exports fields that are publicly visible on SmartCustomer review pages.

Why are some optional fields null?

SmartCustomer does not show every reviewer detail, media count, response, or verification marker on every review. Missing public fields are returned as null instead of failing the run.

Can I monitor only bad reviews?

Yes. Use ratings: [1, 2] and schedule recurring runs from the Apify Console or API.