What Reader can handle
stealth mode (or auto with escalation) gets you past:
- Bot-detection walls. Cloudflare’s “Checking your browser”, Akamai, PerimeterX, Datadome, similar.
- Rate-limited “come back later” pages that serve bot-looking clients a different response than humans.
- TLS fingerprinting that tries to distinguish automated clients from browsers.
- Most JavaScript challenges where the page runs a small script before letting you in.
proxyMode: "stealth" explicitly (or let auto handle it) and you’ll usually get clean content:
What Reader can’t handle
Anything that requires an authenticated session. Pages that load only when you’re logged in (your Gmail inbox, your LinkedIn feed, internal tools, most “my account” sections) are off-limits. Reader doesn’t have your credentials and doesn’t manage cookies across requests. If you need content from a page that requires login, you have two options:- Use the site’s official API if they have one (most authenticated experiences do).
- Scrape it yourself with your own session and point Reader at the public version if it has one.
Spotting a hostile site early
If your scrapes are failing withupstream_unavailable, scrape_timeout, or are returning very short markdown that doesn’t match the real page:
- Check
metadata.statusCode. A 403 or 429 from the target means a block. - Check
metadata.proxyMode. If you’re onautoand it escalated tostealthbut still failed, the site is hostile beyond what Reader handles. - Open the URL in your browser. If you see a “Checking your browser” interstitial or a CAPTCHA, Reader is seeing the same thing.
Forcing stealth from the start
When you know ahead of time a target is hostile (Amazon, LinkedIn, booking.com, ticketing sites, some news aggregators), skip the optimisticauto attempt and go straight to stealth:
- You save the wasted
standardattempt.autowould try standard first, see a block, then retry with stealth, so you pay 1 credit for the wasted attempt plus latency. - You get a cleaner error signal. If you force stealth and it still fails, you know the site is beyond Reader’s reach; you don’t have to wonder if the escalation hadn’t kicked in.
When nothing works
If you’ve triedstealth, waitForSelector, and custom extraction and the page still won’t load, the site is probably actively hostile to all non-browser traffic. Report the URL to our Discord and we’ll take a look. Sometimes we can tune our handling for a specific site, sometimes the answer is “no, this one’s out of scope.”

