FlareSolverr Not Working in 2026? Why It Times Out, and What to Use Instead
FlareSolverr used to be the easy answer: run a container, POST a URL, get back cookies and HTML. In 2026 you're more likely to get Challenge not detected, a timeout, or a response that's still the "Just a moment…" page. The approach itself, driving a real browser through the challenge, is the thing that's breaking. Here's why, and what actually gets you the token.
The short version
FlareSolverr solves the old interstitial by loading it in a headless browser and waiting for the redirect. Cloudflare Turnstile and the managed challenge now fingerprint the browser and score the IP, and a headless browser on a datacenter address fails both checks, so the redirect never comes and FlareSolverr times out.
Why the browser approach breaks
- It waits for a redirect that no longer happens. FlareSolverr's model is "open the challenge page, wait for Cloudflare to clear it." Turnstile is an interactive widget, not a wait-and-redirect page, so there's nothing for it to wait on.
- Headless fingerprints get flagged. Cloudflare reads canvas, WebGL, audio, and behavioral signals. A stock headless Chrome, even a patched one, leaves tells the challenge is specifically looking for.
- Datacenter IPs score badly. Even a perfect browser gets a low trust score from a datacenter or flagged IP, and the challenge stays up.
- Maintenance lags Cloudflare. FlareSolverr depends on browser-patching projects keeping pace with detection changes. When Cloudflare ships an update, there's a window where everything downstream returns timeouts.
How to confirm it's the challenge, not your setup
If the FlareSolverr response solution.response still contains cf-turnstile or Just a moment, the browser didn't pass. No amount of longer maxTimeout will fix that, because it's not a timing problem. It's a detection problem.
The fix: skip the browser fleet, get the token from an API
Instead of maintaining a headless browser and hoping its fingerprint holds, send the sitekey and your proxy to a solve API and get the cf-turnstile-response token back. One request, about a second, and the browser work happens on the solver's side:
curl -X POST https://api.peak.fo/solve \
-H "X-API-Key: pk_your_key" \
-H "Content-Type: application/json" \
-d '{"task_type":"turnstiletask","url":"https://target.example/","sitekey":"0x4AAA...","proxy":"http://user:pass@ip:port"}'
# -> {"success": true, "data": {"token": "0.abc..."}, "cost": 0.0009}You inject that token into the form's cf-turnstile-response field (or send it to the site's verify endpoint) and continue. Passing your own proxy matters: Cloudflare ties clearance to the requesting IP, so the solve runs from the same address as your crawl.
For the managed 5-second challenge, the same API returns a cf_clearance cookie and the matching user-agent instead of a widget token. Set both on your session and re-request.
If you'd rather keep it in your existing tooling
You don't have to call the API directly. If your scraper is built on a common library, a wrapper does the detect-solve-inject for you:
- playwright-turnstile and selenium-turnstile for browser automation
- cloudscraper-turnstile and turnstile-curl for HTTP clients
- scrapy-turnstile for Scrapy
Under the hood they all call the same one-request Peak API, so you get the token without running or patching a browser.
What it costs vs. a self-hosted fleet
FlareSolverr is free to install but not free to run. You pay in servers, residential proxies, and the hours spent chasing detection updates. A solve API is pay-per-success: from $0.90 per 1,000 down to $0.35 at volume, and failed solves cost nothing. New accounts get 1,000 free solves, no card, so you can measure the success rate on your own target before switching anything.
Get a free key · Turnstile docs · 5s challenge docs
Use this for automation, QA, monitoring, and scraping public data you're authorized to access. Respect each site's Terms of Service and robots.txt.