Scrape consumer reviews from SmartCustomer by domain. Self-contained review records with embedded business metadata, rating, date, user, and run-summary. Pay-per-event pricing — only pay for businesses resolved + reviews extracted.
v0.3 — 2026-05-07 — Canonical SmartCustomer rebrand + competitor-matched PPE
The site previously branded as Sitejabber has rebranded to SmartCustomer — sitejabber.com 301-redirects to www.smartcustomer.com, and the rendered page's <title> reads "SmartCustomer". v0.2 documented this in passing but kept "Sitejabber" in the actor title and most user-facing copy. v0.3 normalizes the canonical brand to SmartCustomer everywhere:
Actor title, description, and Apify Store metadata → "SmartCustomer Review Scraper".
v0.2 priced business-resolved $0.001 + review-extracted $0.0005 — roughly 3× cheaper than cerridwen per result, leaving margin on the table. v0.3 repriced to match the working market:
Event
v0.2
v0.3
apify-actor-start (auto-fired on every run)
not configured
$0.00005
business-resolved (one per resolved business)
$0.001
$0.0005
review-extracted (one per emitted review, post-onlyWithPhotos filter)
$0.0005
$0.0015
A 50-review run from one business will cost $0.00005 + $0.0005 + 50 * $0.0015 = $0.07555 — competitive with cerridwen's 50 * $0.0015 = $0.075.
Pricing change is gated by Apify's 1-month cooldown between price modifications. v0.2 pricing was set on 2026-05-07; the next pricing change is allowed on 2026-06-07. The v0.3 prices above will be applied then, with another 14-day notification period after that. Until 2026-06-07 the actor runs on the v0.2 pricing ($0.001 + $0.0005, effective 2026-05-22).
v0.2 — 2026-05-05 — Pivot from Yelp to SmartCustomer
Yelp's WAF (DataDome) comprehensively blocks every IP in Apify's RESIDENTIAL, BUYPROXIES94952, and StaticUS3 proxy pools. Six iterations of stealth Playwright, cookie warming, and headful-Chrome fingerprint patches did not get us past the challenge. Even Apify's flagship super-scraper-api (a drop-in scraper-API replacement for ScrapingBee) returns "Request blocked" against Yelp on Apify proxies. Wrapping working competitors (tri_angle/yelp-review-scraper) is plan-blocked on the user's CUSTOM Bronze plan.
SmartCustomer uses much softer anti-bot defenses (HTTP 200 from Apify RESIDENTIAL on first request) and server-renders 20 reviews per page in a JSON-LD Organization block with a stable aggregateRating + review[] schema. Same architecture (PPE, dual-input, embedded business metadata, photos validation, run summary) ports cleanly.
What's the same
Pay-per-event pricing: business-resolved (one per resolved business) + review-extracted (one per emitted review, post-onlyWithPhotos filter).
Output schema: every review record carries review_url / url / business_url (first-present-wins permalink), text, rating, review_date, user_name, user_avatar_url, photos: string[], status, embedded business block, scraped_at.
Run-level summary record at end of run with aggregate counts.
Per-record status enum: ok / partial / business_not_found / blocked / rate_limited.
SSRF defense: strict host allowlist on every URL the actor navigates to or stores. Photo URLs validated against *.smartcustomer.com (SmartCustomer's image CDN).
Anti-bot stack: removed Playwright/stealth/cookie-warming code. Reverted to Crawlee CheerioCrawler + got-scraping TLS impersonation. Dockerfile back to apify/actor-node:24 (Alpine).
Pagination: SmartCustomer paginates via ?page=N (20 reviews per page).
Memory: defaultRunOptions.memoryMbytes reverted to 1024.
Search-term resolution is reserved for v0.3 — SmartCustomer's search surface doesn't map cleanly to the two-stage flow yet.
Known limitations (SmartCustomer-specific)
Photo coverage is inconsistent. SmartCustomer surfaces user-uploaded review photos for some businesses but not others. Many reviews emit photos: []. The onlyWithPhotos: true filter still works correctly but will drop most reviews on photo-light businesses.
Per-page review count varies. Most pages return 20 reviews server-rendered; some return fewer when SmartCustomer serves a partially client-hydrated variant.
No categories or price_tier in business metadata (SmartCustomer doesn't expose these). Both fields emit as null / [] for schema compatibility with the v0.1 contract.
Yelp-specific empirical findings (preserved as institutional learning)
BUYPROXIES94952 proxy group (datacenter, 27 available)
403 + DataDome challenge
StaticUS3 proxy group (3 static IPs)
403 + DataDome challenge
DATACENTER proxy group
407 (group not available on this plan)
DataDome on Apify's standard proxy infrastructure in 2026 is unbeatable with code alone.
v0.1 — Initial Yelp release (superseded)
Architecturally complete actor targeting Yelp with PPE, dual-input, embedded business metadata, Yelp-host-validated photos, and run-level summary record. Functionally non-functional in production due to the DataDome block above. See v0.2 entry for the pivot rationale.