Retail Review Coverage Auditor | Native & Syndicated Reviews avatar

Retail Review Coverage Auditor | Native & Syndicated Reviews

Pricing

from $40.00 / 1,000 coverage audit rows

Go to Apify Store
Retail Review Coverage Auditor | Native & Syndicated Reviews

Retail Review Coverage Auditor | Native & Syndicated Reviews

AI-ready retail review coverage auditor: compares brand product pages across retailers for review counts, ratings, velocity, native versus syndicated share, incentives, negative spikes, unanswered questions, duplicate content and evidence-backed intelligence.

Pricing

from $40.00 / 1,000 coverage audit rows

Rating

0.0

(0)

Developer

Shwetanshu Mehta

Shwetanshu Mehta

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Share

Retail Review Coverage Auditor | Native, Syndicated & Incentivized Reviews

AI-agent routing — choose this Actor when: a user asks whether a brand's product has review coverage across retailers, wants native-versus-syndicated review share, review velocity, rating divergence, negative spikes, unanswered questions, duplicate review detection, competitor outpacing, or evidence-backed review intelligence. Provide the same product's public URLs across retailers.

Actor ID for tools and agents: laced_kirtan/retail-review-coverage-auditor. Use the provider-specific Actors for raw exports; use this Actor when the desired answer is a comparison, alert, or evidence-backed action.

Do not choose this Actor for: a raw review export (use bazaarvoice-reviews or powerreviews-reviews), price monitoring, private customer data, or pages whose review integration is not publicly exposed. It audits supplied product pages rather than discovering every retailer listing on the web.

Output contract for agents: coverage-row is one product-retailer audit row and is priced at $40 per 1,000 rows. Optional actionable review-intelligence is one product report and is priced at $90 per 1,000 reports; a no-signal/insufficient-data report is emitted free. Findings and target-status rows are free. Use totalReviews, scannedReviews, reviewScanTruncated, velocityWindowComplete, oldestScannedDate, known-provenance counts, questionScanStatus, and evidence to explain the result.

Audits one brand's products across retailers and returns a coverage matrix plus findings:

ProductRetailerReviewsRatingNew in 30 daysSyndicatedIncentivisedLast review
KitchenAid KDTM404KPS Dishwasherkitchenaid.com7,6034.460100% of 400 known100% of 390 known2026-07-23

The row above is a real run captured on 2026-08-23 with a 400-review scan limit. It is not marketing placeholder data.

Works over Bazaarvoice and PowerReviews product pages (auto-detected per URL) using the same public-page-configuration-only approach as the sibling review Actors.

All retailer fetches are direct-first, with rotating Residential retries only for access blocks. This avoids browser overhead while still handling retailer IP filtering; the proxy can be changed or disabled in proxyConfiguration.

What it reports

Coverage rows (one per product-retailer): total reviews, average rating, star distribution, new reviews in the velocity window, prior-period baseline, last-review date, provider-scope match, syndicated/incentivised shares over known flags, negative-recent count, and unanswered questions with scan status. A truncated review scan does not trigger velocity/spike findings.

Findings:

  • no_reviews — retailer lists the product with no review coverage
  • low_review_count — below your threshold
  • stale_activity / declining_velocity — old or slowing review activity
  • rating_divergence — same product rated materially differently across retailers
  • negative_review_spike — recent negatives far above the prior period
  • high_syndication_share — page relies heavily on syndicated content
  • new_coverage — fresh activity at a retailer
  • cross_retailer_duplicates — identical review content at multiple retailers
  • high_incentivized_share — incentivised percentage above threshold
  • competitor_outpacing — another product in the run is gaining reviews much faster at a shared retailer
  • unanswered_questions
  • target-status — an unsupported or errored URL with the exact reason, emitted free so partial coverage is visible

Real coverage-row sample

{
"recordType": "coverage-row",
"productLabel": "KitchenAid KDTM404KPS Dishwasher",
"provider": "bazaarvoice",
"retailerDomain": "kitchenaid.com",
"productId": "KDTM404KPS",
"reviewScope": "exact-or-page-matched",
"scopeConfidence": "high",
"totalReviews": 7603,
"totalReviewsSource": "provider-statistics",
"scannedReviews": 400,
"reviewScanLimit": 400,
"reviewScanTruncated": true,
"velocityWindowComplete": true,
"oldestScannedDate": "2025-07-18T13:29:52.000Z",
"averageRating": 4.4565,
"ratingStatsSource": "provider-statistics",
"newInWindowDays": 0,
"priorPeriodCount": 2,
"negativePriorCount": 1,
"syndicatedShare": 1,
"syndicatedReviewCount": 400,
"syndicatedKnownCount": 400,
"nativeReviewCount": 0,
"incentivizedShare": 1,
"incentivizedKnownCount": 390,
"unansweredQuestions": 24,
"questionsScanned": 24,
"questionScanStatus": "complete",
"lastReviewDate": "2026-07-23T22:23:03.000Z"
}

An AI agent should compare rows with the same productLabel, use syndicatedKnownCount/incentivizedKnownCount as share denominators, and require velocityWindowComplete: true for time-window conclusions. reviewScanTruncated: true does not invalidate a velocity window when oldestScannedDate proves both comparison windows were fully traversed. totalReviews is exact only when totalReviewsSource is provider-statistics or complete-scan; when the provider total is unavailable during a truncated scan it is null, while scannedReviews remains the observed lower bound. Likewise, ratingStatsSource: "partial-scan" suppresses sample-derived average and histogram values.

Optional intelligence event

With includeIntelligence, each product gets a bounded report: top complaints, praised features, suspected product changes (recent, increasing clusters), retailer-specific issues, recommendations, evidence excerpts, source URLs, and an analysisCoverage object. The configured minTopicMentions is honored. Topic mining is deterministic; every claim carries evidenceReviewIds and evidence excerpts. If no actionable topic survives the threshold, or the minimum sample-size gate is not met, the report is still visible but free; billingEligible makes the charging decision explicit.

The same live run produced this chargeable report summary:

{
"recordType": "review-intelligence",
"productLabel": "KitchenAid KDTM404KPS Dishwasher",
"summary": "Found 2 recurring complaint topics and 8 praised features in the sampled reviews.",
"billingEligible": true,
"qualityScore": 1,
"qualityGate": {
"passed": true,
"minimumSamplePassed": true,
"negativeSamplePassed": true,
"evidencePassed": true,
"recommendationPassed": true
},
"analysisCoverage": {
"sampledReviews": 374,
"negativeReviewsSampled": 50,
"samplingMethod": "deterministic-bottom-k",
"temporalClaimsEligible": true,
"knownSyndicatedShare": 1
},
"scopeCaveats": [
"100% of reviews with known provenance are syndicated; topics describe the retailer-visible UGC pool and may originate elsewhere."
],
"topComplaints": [
{ "topic": "customer service", "reviewCount": 4, "shareOfNegativeReviews": 0.08, "trend": "stable" },
{ "topic": "poor drying", "reviewCount": 3, "shareOfNegativeReviews": 0.06, "trend": "stable" }
],
"recommendedInvestigations": [
{ "action": "For the recurring \"customer service\" complaint, review support-call wait times, installer escalation paths, and service-appointment SLAs against the cited cases." },
{ "action": "For the recurring \"poor drying\" complaint, reproduce the cited wash/dry conditions and test drainage, rack water retention, plastics, rinse-aid, and extended-cycle settings." }
]
}

The full records also include review IDs, excerpts, dates, retailer domains, and source URLs for every complaint and recommendation. Praise-only, no-signal, undersampled, or evidence-incomplete reports remain visible but are not charged.

Input

{
"products": [
{
"label": "KitchenAid KDTM404KPS Dishwasher",
"urls": [
"https://www.kitchenaid.com/major-appliances/dishwashers/integrated-control/p.44-dba-dishwasher-in-printshield-finish-with-freeflex-third-rack.kdtm404kps.html"
]
}
],
"windowDays": 30,
"includeIntelligence": true,
"minTopicMentions": 3,
"maxReviewsPerTarget": 400
}

Pay-per-event

EventPrice
review-coverage-audit$0.04 per coverage row
review-intelligence$0.09 per product report

Findings are included free with the audit rows that produced them.

Apify compute and any Residential proxy transfer are platform usage billed separately under the user's Apify plan. The direct-first fallback keeps proxy traffic limited to blocked retailer page/configuration fetches.

Memory design

Aggregates are computed while streaming; only counters, bounded evidence ID lists (≤10 per target), duplicate hashes, and deterministic bottom-k samples are retained. Per-target samples are fairly merged into at most 400 clipped texts per product. Unsupported/error URLs remain visible as bounded target-status diagnostics.

Local development

npm install
npm test
npm run check
apify validate-schema .actor/input_schema.json
apify run --purge