Use case
The page comes back.
The wall stays invisible.
Blocks aren't an edge case. They're the steady state of scraping at any scale. gottem treats them as routing events: when a vendor returns a CAPTCHA, 403, or Cloudflare wall, the Cost Ladder escalates through residential proxies, smart unblockers, real browser sessions, and challenge solving until one route lands, all inside the same request.
Escalation you don't have to build
The ladder runs from $0.001 HTTP rungs through residential-proxy tiers (ZenRows, ScrapingBee, Spider), smart unblockers (Bright Data Web Unlocker, Zyte), stealth browser sessions (Browserbase, Browserless), and 2Captcha challenge solving at the top. You'd need a dozen vendor contracts to assemble it yourself; here it's the default behavior of one endpoint.
A 200 isn't proof
Anti-bot systems increasingly return clean-looking 200s wrapping a challenge page. Hit Detection, gottem's content-quality gate, classifies every response body, so a Cloudflare wall dressed as success still triggers escalation instead of reaching your parser.
You pay for the rung that worked
Failed attempts on the way up bill at the $0.000001 minimum, effectively free. The receipt shows every attempt, and Save State remembers the winning route per domain so the next fetch skips the climb.
Start with a curl.
curl -sS "$GOTTEM_BASE_URL/scrape" \
-H "Authorization: Bearer $GOTTEM_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://hard-target.example"}'Questions.
- Do I have to configure the escalation path?
- No. mode: "ladder" is the default, lowest-cost-first with automatic escalation on block. You can cap it, race routes in parallel, or pin a vendor with force_provider when you need to.
- What does a blocked attempt cost?
- The $0.000001 minimum, effectively free. Only the route that actually returned the page bills at its page rate.