Unified signal, less noise
Query allowed engines concurrently, normalize and merge URLs, then rerank agreement without exposing source-engine policy to callers.
Scorch gives applications one guarded service for search, scraping, mapping, and crawling—without a database, broker, browser farm, or worker fleet.
API · 127.0.0.1:33000 / Renderer · Obscura
$ scorch search "rust web extraction" --limit 3
provider: metasearch · elapsed: 842ms
01 Rust web scraping patterns
https://example.org/rust-scraping
02 Reliable HTML extraction
https://example.net/extraction
▊
Pipeline
One guarded runtime
One deliberate surface
Runtime and routing policy remain on the server. API, CLI, and MCP callers get a compact contract without gaining access to forbidden engines or backends.
Query allowed engines concurrently, normalize and merge URLs, then rerank agreement without exposing source-engine policy to callers.
Fetch inexpensive static pages directly. Escalate JavaScript pages and screenshots to embedded Obscura or an allowed Chromium backend.
Discover sitemaps and same-site links, then run robots-aware crawl jobs with pagination, cancellation, retained-byte limits, and expiry.
Why self-contained
Operationally compact
The client only speaks HTTP. The service owns execution, isolation, policy, and ephemeral crawl state.
Strictly separated executables
Shared guarded egress policy
Durable services required
Enter the reproducible environment, build two optimized binaries,
start scorchd, and connect through the CLI, JSON API, or
MCP.
The constraints that matter before putting Scorch to work.
No. Crawl jobs live in bounded memory and expire. Restarting scorchd removes them, so Scorch is not a durable crawl archive.
No. Search engines are server policy. A scrape may request a backend
only when it appears in SCORCH_ALLOWED_BROWSERS.
Not in the local-first release. Keep the loopback bind, or place an authenticated TLS gateway in front of the API.
No. It is embedded in scorchd as a Rust library, with fresh
context, page, and JavaScript state per request.
Build Scorch, start scorchd, and make the first request
through a runtime you control.