Try it in 60 seconds
See a failover and a caught block page, with no provider account and nothing spent.
The gateway has a sandbox: a second key that answers from its own outcome table and never calls a provider. It returns the real headers, so you can see what Proxlane does before you have a provider key, and test your own client against every outcome without paying for one.
Start a gateway
docker run --rm -p 8787:8787 \
-e PROXLANE_API_KEY="$(openssl rand -hex 32)" \
-e PROXLANE_SANDBOX_KEY=sandbox \
-e SCRAPERAPI_KEY=x -e SCRAPFLY_KEY=x -e SCRAPINGBEE_KEY=x \
ghcr.io/proxlane/gateway:latest
The provider keys are placeholders. The sandbox never sends them anywhere; they only exist so the chain has three providers to walk. Leave them out and it walks one.
A page that worked
curl -sD - -o /dev/null "http://localhost:8787/v1?url=https://example.com" \
-H "Authorization: Bearer sandbox"
HTTP/1.1 200 OK
X-Outcome: OK
X-Outcome-Class: ok
X-Provider-Used: scraperapi
X-Attempts: 1
X-Chain: scraperapi:OK
X-Cost-Estimate: 0.000000
X-Proxlane-Simulated: OK
One provider, one attempt, a page. X-Proxlane-Simulated is on every sandbox response, so a
simulated 200 can never be mistaken for a real one.
A page that was blocked
curl -sD - -o /dev/null "http://localhost:8787/v1?url=https://example.com" \
-H "Authorization: Bearer sandbox" \
-H "X-Proxlane-Simulate: SOFT_BLOCK"
HTTP/1.1 502 Bad Gateway
X-Outcome: SOFT_BLOCK
X-Outcome-Class: blocked
X-Chain: scraperapi:SOFT_BLOCK>scrapfly:SOFT_BLOCK>scrapingbee:SOFT_BLOCK
X-Attempts: 3
X-Detect-Rule: cloudflare-blocked
X-Proxlane-Simulated: SOFT_BLOCK
This is what a captcha page looks like through Proxlane. A provider returned HTTP 200 with a challenge in the body; the detector caught it, the chain tried the next provider, then the next, and the answer says so instead of handing you the captcha as content. Every outcome on the outcomes page works the same way: put its name in the header.
Then with a real key
Stop the container, replace a placeholder with a real provider key, drop the sandbox key and the header, and the same request goes to the provider. Nothing else about the request changes. The quickstart has the rest, and the providers page says where to get a key and which to start with.