Skip to content
TierGauge

Scraper attempts, transparent

What the extractors actually did, last run.

Every scrape attempt against every tool is appended to a per-tool JSONL log. This page surfaces the most-recent event per tool with outcome, plans found, and any warnings the extractor flagged. Useful when /status says "manual-only" but the extractor is actually running and silently falling back to prior verified data.

Companion to /freshness (when data was last verified) and /status (persisted extractor state). Raw machine-readable feed: /api/scrape-runs.json.

Tools tracked
37
With attempts
0
Last run: ok
0
Stale-preserved
0
Failures
0

All tools, most-recent attempt first

Tools that have never been attempted appear at the bottom. A scrape attempt records an event regardless of whether it produced a successful write; this is the audit trail of every cron and manual run.

How to read this page

Each tool has a per-attempt JSONL log at data/scrape-runs/<slug>.jsonl. Every event records run timestamp, outcome, plans found, warnings, and error message on failure. Six possible outcomes:

ok
Extractor succeeded, merge produced a confident write.
stale-preserved
Extractor ran but the merge layer judged the scraped price low confidence; prior verified data was preserved. Tool ends up with scraper_status=stale.
extractor-threw
Playwright crashed or the extractor raised. A screenshot is saved to data/scraped/ for diagnosis.
validation-failed
Merged data did not pass the canonical Zod schema. The most likely cause is an editorial field shape mismatch.
no-extractor
No module at scripts/scrape/extractors/<slug>.ts. Should never happen for a tool in the spine; if it does, see the dry-run gate.
no-tool-json
Extractor exists but no tool JSON stub. Run npm run seed first.