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.
Every day at 09:00 UTC this val:
- Pulls the Metabase public question and gathers all distinct URLs.
- Rewrites Trustpilot
/evaluate/links →/review/. - 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. - 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 %
Rendering mermaid diagram...
| File | Role |
|---|---|
daily.ts | Cron trigger (09:00 UTC). Change to 0 7 * * * for 9 AM Paris in winter. |
app.ts | HTTP dashboard — set this as the val's HTTP preview. Routes: / table, /run manual scrape, /csv export. |
runScrape.ts | Orchestrates a full daily run. |
scrape.ts | Gathers URLs from Metabase + parses Trustpilot pages. |
pivot.ts | Reshapes long rows into the wide per-day table with growth columns. |
db.ts | SQLite schema + upsert/read helpers. |
dashboard.html | Static UI shell. |
- 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.
- Timezone: crons run in UTC.
0 9 * * *= 9 AM UTC. For 9 AM Europe/Paris use0 7 * * *(summer) or0 8 * * *(winter). - Non-Trustpilot platforms (Google, Trustedshops, Verified-Reviews…) are recorded with
platform != trustpilotand aneeds guidancenote — 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.