revolution/salvager
Revolution Salvager is a Laravel package for salvaging recoverable data from failed or interrupted operations, helping you capture what would otherwise be lost and restore it cleanly. Lightweight, configurable, and built to fit existing Laravel workflows.
Consider it when all of these hold:
spatie/crawler, HTTP client + DOM parser) is insufficient.Look elsewhere when:
spatie/crawler plus an HTTP client covers the static case; a mature crawler framework covers the rest.For executives: This is a small, MIT-licensed Laravel package that lets our existing application read web pages that require a real browser to render — the kind of modern site where a simple HTTP request returns an empty shell. It's a low-cost way to test whether a data-driven feature (pricing intelligence, catalog enrichment, content ingestion) is worth building, without funding a new service or a scraping vendor contract. The trade-off is maturity: it's an early-stage, single-maintainer project, so we'd pilot it behind an internal interface and keep a managed-service fallback priced and ready. Total downside if it doesn't work out: a few days of engineering, not a re-architecture.
For engineering: Thin wrapper over Playwright invoked from Laravel; the value is the integration, not novel technology. Adopt it only behind an internal PageFetcher-style contract so we can swap in an HTTP client for static pages and a hosted browser service for scale. Requirements: Node + Playwright in the runtime image, jobs isolated on their own queue with strict timeouts and memory limits, and a pinned version with the source read and vendored if necessary. Do not use it for high-concurrency or adversarial scraping, and do not let it become the de facto crawling framework — its scope is "render this page and give me the HTML."
How can I help you explore Laravel packages today?