See why you're
blocked. Walk through.
A 403 tells you nothing. Send the request through every wall, find the one that stopped it, and flip the flags that turn it into a 200.
fingerprint
challenge
reputation
behavior
Stopped at TLS fingerprint — the handshake from a plain client matches no real browser.
curl "https://api.zenrows.com/v1/?url=protected.example/data"
Whatever's guarding it,
we've read it before.
The run knows each major wall and the flags that walk through it. Teal is the move.
js_render + premium_proxyjs_render + residential proxyjs_render + session_idjs_render + wait_forjs_render + premium_proxyjs_render + wait_for=.solvedNot a guess.
A read.
The run doesn't just retry until something works. It returns exactly which wall stopped you and the flags that clear it, so the fix is the next request, not the next week.
{
"url": "protected.example/data",
"blocked_by": "tls_fingerprint",
"signals": {
"tls": "fail · not a real browser",
"js_challenge": "fail · never executed",
"ip_reputation": "flag · datacenter range",
"behavior": "ok"
},
"suggested": ["js_render", "premium_proxy"],
"status_after_fix": 200
}
If a browser loads it,
so can you.
No browser farm, no proxy contracts. The diagnosis points at the walls; the flags walk you through. Same URL, real Chrome, clean residential IP.
Stop guessing
at the 403.
Run the request, read the wall that stopped it, flip the flags. The same scraper that failed comes back with a 200.
10,000 credits/month for free, always.