Weekly Trustpilot reviews of competitors to Google Sheets
New and changed reviews of a competitor list every Monday, a weekly TrustScore snapshot per company and a weekly digest row. Uses Trustpilot Reviews Scraper.
Every Monday this workflow runs Trustpilot Reviews Scraper (arcadium/trustpilot-reviews) for a list of competitor domains, in watch mode. New and changed reviews go to one tab; each competitor's TrustScore, star rating and review count go to a second tab as a weekly snapshot; the free weekly digest row (counts, new 1-star reviews, the biggest TrustScore and review-count moves, a one-line summary) goes to a third tab.
Schedule (Mon 06:00) → Apify: Run actor and get dataset ─┬→ Code: review rows → Google Sheets: append to "Reviews"
├→ Code: company rows → Google Sheets: append to "TrustScores"
└→ Code: digest row → Google Sheets: append to "Digest"
File: workflow.json (n8n workflow export format).
What you need
| Credential | Where | Placeholder in the file |
|---|---|---|
| Apify API token | Apify Console → Settings → API & Integrations | REPLACE_WITH_YOUR_APIFY_CREDENTIAL_ID (credential type Apify API) |
| Google Sheets | n8n's Google Sheets OAuth2 credential | REPLACE_WITH_YOUR_GOOGLE_SHEETS_CREDENTIAL_ID |
| A spreadsheet | Your Google Drive | REPLACE_WITH_YOUR_SPREADSHEET_ID in the sheet URL (all three Sheets nodes) |
The Apify node is Apify's official n8n node, package @apify/n8n-nodes-apify (checked against version 0.9.0, node version 2, operation Run actor and get dataset). On n8n Cloud search for "Apify" in the nodes panel. On self-hosted n8n: Settings → Community nodes → Install → @apify/n8n-nodes-apify.
Import
- Create a Google Sheet with three tabs and these header rows (the Sheets nodes map columns by name). Reviews:
reviewId | date | company | rating | title | text | companyReply | verified | language | country | edited | url | scrapedAt; TrustScores:week | company | trustScore | stars | reviewCount | replyPercentage | primaryCategory | url; Digest:digestAt | windowStart | windowEnd | runs | newReviews | changedReviews | goneReviews | newOneStar | summary - n8n → Workflows → Import from File →
workflow.json. - Run Trustpilot Reviews: pick your Apify credential and edit the JSON input.
companies: your competitors' domains (bestbuy.com) or Trustpilot review page links.maxReviewsPerCompany: cap per company and run (100 in the template).watchKey: keep it stable. The actor keeps a snapshot under this name, so each run returns only reviews that are new or changed since the last run.digest: trueadds the weekly digest row;digestDayssets its window (7). - Append reviews, Append TrustScores and Append digest: pick your Google credential and paste your sheet URL.
- Execute once, check the tabs, then Activate. The first run saves the baseline; its digest row says so, and changes are counted from the second run on.
Cost per run
Pay per event. Prices are the actor's Store pricing at the time of writing (Free plan; paid Apify plans pay less). The live price is on the Store page.
| Event | Price | In this template |
|---|---|---|
| Actor start | $0.001 | 1 per run |
| Review delivered | $0.00052 ($0.52 per 1,000) | first run: up to 3 companies × 100 = 300 reviews, at most $0.16; later runs only new and changed reviews |
Unchanged review checked (watch-check) | $0.00006 ($0.06 per 1,000) | later runs: at most 300, at most $0.02 |
| Company row, error rows, watch-summary and watch-digest rows | free |
The node sets maxTotalChargeUsd to $1, a hard cap per run. Raise it if you add many companies or a higher per-company cap.
What to expect
- A review whose stars, text or company reply changed after delivery comes back once more with
edited = true. - A domain that is not on Trustpilot produces a free error row in the Apify run; it is skipped here.
- The output has no reviewer names.