Public
Daily Trustpilot trust score scraper
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

⭐ Trustpilot Tracker

Every day at 09:00 UTC this val:

  1. Pulls the Metabase public question and gathers all distinct URLs.
  2. Rewrites Trustpilot /evaluate/ links → /review/.
  3. Visits each Trustpilot page and scrapes the trust score (e.g. 4.1) and review count (e.g. 45 reviews), plus the date of the most recent review.
  4. Saves a row per tenant per day into SQLite.

The dashboard pivots everything into the wide shape you asked for:

Tenant | Link | Score DayX | Reviews DayX | LastReview DayX | Score DayY | Reviews DayY | … | Δ Score | Δ Reviews | Δ Reviews %

Files

Rendering mermaid diagram...
FileRole
daily.tsCron trigger (09:00 UTC). Change to 0 7 * * * for 9 AM Paris in winter.
app.tsHTTP dashboard — set this as the val's HTTP preview. Routes: / table, /run manual scrape, /csv export.
runScrape.tsOrchestrates a full daily run.
scrape.tsGathers URLs from Metabase + parses Trustpilot pages.
pivot.tsReshapes long rows into the wide per-day table with growth columns.
db.tsSQLite schema + upsert/read helpers.
dashboard.htmlStatic UI shell.

Usage

  • Open the dashboard and click ▶ Run scrape now to do the first pull immediately (don't wait for 9 AM).
  • ⬇ Download CSV exports the full wide table.

Notes & next steps

  • Timezone: crons run in UTC. 0 9 * * * = 9 AM UTC. For 9 AM Europe/Paris use 0 7 * * * (summer) or 0 8 * * * (winter).
  • Non-Trustpilot platforms (Google, Trustedshops, Verified-Reviews…) are recorded with platform != trustpilot and a needs guidance note — share their structure and I'll add parsers.
  • Metabase access: the URL is …internal.bigblue.co. If it requires VPN/auth that Val Town can't reach, the scraper will get nothing — in that case we'll need an auth token or to mirror the question's results somewhere fetchable.