Cloudflare Turnstile
widget- Where you see it
- A widget inside a page or form
- What it returns
- A token in
cf-turnstile-response - CapMonster page
- Cloudflare Turnstile Solver
cf_clearance cookie, so your automation continues without a manual step.Last updated:
A Cloudflare Challenge and a Turnstile widget can look the same. A Challenge is not always a separate “Just a moment…” page: it can be styled, embedded into the site or made to look like a regular Turnstile widget, so you cannot tell them apart by appearance.
cf-turnstile-responsechallenge-form with __cf_chl_f_tk=cf_clearance cookieIf these signs are present, it is a Cloudflare Challenge: use the Cloudflare Challenge solver on this page, which returns a token or a cf_clearance cookie. Otherwise, use the Cloudflare Turnstile solver.
The table lists price per 1000 solves, average solving time and solving success rate for four Cloudflare Challenge solving services.
| Parameter | CapMonster Cloud | 2Captcha | Anti-Captcha | BestCaptchaSolver |
|---|---|---|---|---|
Price per 1000 solves | $ 1.30 | $1.45 | $2.00 | $1.80 |
Average solving time | 12 – 14 s | 14 – 18 s | 18 – 22 s | 22 – 30 s |
Solving success rate | 99% | 97% | 95% | 80% |
Cloudflare Turnstile price as listed by the provider; Cloudflare Challenge is not listed separately.
2Captcha, Anti-Captcha, and BestCaptchaSolver are trademarks of their respective owners. CapMonster Cloud is not affiliated with these entities. Performance metrics are based on internal benchmarking conducted on 26.08.2026. Pricing comparisons are based on publicly available data as of 30.09.2026.
99% successful passes. Test the stability on your own target sites right now. We do not guarantee a 100% success rate: CAPTCHA types and target-site configuration may change at any time.
$0.10
New users get $0.10 in test balance to try CapMonster Cloud.
1. Register at CapMonster Cloud.
2. Message support via live chat or support@capmonster.cloud with the email tied to your account.
Run sign-up, checkout and form flows in CI/CD with Playwright, Puppeteer or Selenium on pages you own or are allowed to test.
Check that pages behind Cloudflare Challenge stay reachable after releases and rule changes.
Collect publicly available data from open pages protected by a Cloudflare Challenge.
Support automated assistive workflows on sites that show a verification page before loading.
Let an agent request a token or a cf_clearance cookie through MCP when a workflow reaches a challenge.
Use CapMonster Cloud for publicly available data and on sites you own or are authorized to test. Collecting third-party data behind a login or paywall without permission is prohibited.
Cloudflare serves three types of challenge pages: JS Challenge, Managed Challenge and Interactive Challenge. Whether a challenge is shown is decided by WAF rules or Bot Management. CapMonster Cloud covers the three challenge types below; WAF / Bot Management is a broader product and is listed separately.
Sources: Cloudflare documentation — How challenges work · Interstitial challenge pages · Under Attack mode
“5-second challenge”
A non-interactive interstitial test: the browser runs JavaScript and Cloudflare grades the result before the page loads. No user action is required.
cf_clearance cookie (default)incl. Under Attack Mode
With Cloudflare Managed Challenge, Cloudflare picks the check dynamically from request characteristics and browser signals. Under Attack Mode uses Managed Challenge.
cf_clearance cookie (default)widget on interstitial page
Interactive Challenge Pages require a visitor to interact with the challenge to pass.
cf_clearance cookie (default)Rule and scoring layer that decides when a Cloudflare bot challenge is served. Cloudflare computes this decision using detection engines, including:
Broader than the three challenge types and not a synonym for them.
Sources: Bot scores · Bot detection engines · JavaScript detections
The browser requests a protected page. Cloudflare Bot Management scores the request by TLS fingerprint, IP reputation and behavioral signals.
The Heuristics, JS Detections and Machine Learning engines produce the Bot Score from 1 to 99, and WAF rules decide whether to serve a challenge.
If the request looks suspicious, Cloudflare returns the “Just a moment…” page with status code 403 and runs JS Challenge, Managed Challenge or Interactive Challenge.
When the check passes, Cloudflare issues a cf_clearance cookie tied to the visitor and device and valid for a limited time.
The browser loads the original page with the cookie. Cloudflare keeps reassessing session behavior (Precursor clearance) and may serve a new challenge.
cf_clearance is the cookie Cloudflare issues after a visitor passes a Cloudflare Challenge. The browser sends it with the following requests to the protected site, and the page opens without a repeated challenge.
Properties of the cookie, according to Cloudflare's documentation:
Tied to the visitor and device it was issued to.
Valid for a limited time (30 minutes by default; the site sets it with Challenge Passage): a long-running script must pass the check again once it expires.
Not a guarantee on its own: Precursor clearance keeps reassessing session behavior and can trigger a repeated challenge even if the cookie has not expired.
Access is reset: the cookie is tied to the visitor and device it was issued to
The cookie stops working; the script must pass the check again
Cloudflare can lower or reset the clearance level and serve a repeated challenge if traffic looks suspicious
The cloudflareTaskType parameter of TurnstileTask decides what CapMonster Cloud returns. Choose the option depending on what the target site requires: a token for the challenge callback on the page, or a cf_clearance cookie for your further requests.
| Parameter | Token | cf_clearance |
|---|---|---|
cloudflareTaskType | token | cf_clearance |
| Proxy | Optionalruns on CapMonster Cloud proxies by default | Requiredyour own proxy |
websiteKey | Cloudflare Challenge key, e.g. 0x4AAAAAAABUYP0XeMJF0xoy | Any string, e.g. xxxxxx |
| Page data | pageAction, data (cData), pageData (chlPageData) | htmlPageBase64 — Base64 of the 403 “Just a moment” page |
| Result | solution.token | solution.cf_clearance |
| Where to use it | The challenge callback on the page | Cookie: cf_clearance=<value> header or the browser context |
| proxyType | Description |
|---|---|
http | Regular HTTP proxy |
https | Use for some custom proxies |
socks4 | SOCKS4 proxy |
socks5 | SOCKS5 proxy |
Full parameter reference: Cloudflare Challenge Task documentation.
The CapMonster Cloud API acts as a cf_clearance solver: it accepts the task parameters, processes them on its servers and returns a token or a cf_clearance cookie. Solving a Cloudflare Challenge takes four steps: get an API key, send the task, poll the result, and use the returned token or cookie in your own requests.
clientKey parameter in your requests.Call createTask with type TurnstileTask. The cloudflareTaskType parameter decides what you get back: a token or a cf_clearance cookie. Choose the option depending on what the target site requires. See How to distinguish Challenge from Turnstile.
Option 1 · Challenge (token) — runs on CapMonster Cloud proxies by default. Required fields:
| Parameter | Description |
|---|---|
| type | TurnstileTask |
| websiteURL | URL of the page where the challenge is solved |
| websiteKey | Cloudflare Challenge key, e.g. 0x4AAAAAAABUYP0XeMJF0xoy |
| cloudflareTaskType | token |
| pageAction | The action field from the captcha callback, usually managed or non-interactive |
| userAgent | Current UA supported by CapMonster Cloud. You can get the latest value at https://capmonster.cloud/api/useragent/actual. |
| data | Value of the cData parameter |
| pageData | Value of the chlPageData parameter |
Optional: apiJsUrl and the proxy fields. Own proxies are only needed when the site does not accept the token or built-in services are restricted; with IP authorization, whitelist 65.21.190.34.
Request example:
{
"clientKey": "API_KEY",
"task": {
"type": "TurnstileTask",
"websiteURL": "https://yourwebsite.com/page-with-cf-challenge",
"websiteKey": "your-website-key",
"cloudflareTaskType": "token",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
"pageAction": "your-page-action",
"pageData": "your-page-data",
"data": "your-data"
}
}Option 2 · Challenge (cookie) — requires your own proxy. Required fields:
| Parameter | Description |
|---|---|
| type | TurnstileTask |
| websiteURL | URL of the page where the challenge is solved |
| websiteKey | Any string may be passed, e.g. xxxxxx |
| cloudflareTaskType | cf_clearance |
| htmlPageBase64 | Base64 of the “Just a moment” page returned with status 403 |
| userAgent | Current UA supported by CapMonster Cloud. You can get the latest value at https://capmonster.cloud/api/useragent/actual. |
| proxyType | http, https (for some custom proxies), socks4, socks5 |
| proxyAddress, proxyPort, proxyLogin, proxyPassword | Your proxy. Transparent and local-machine proxies are not allowed. |
Request example:
{
"clientKey": "API_KEY",
"task": {
"type": "TurnstileTask",
"websiteURL": "https://yourwebsite.com/page-with-cf-challenge",
"websiteKey": "xxxxxxxxxx",
"cloudflareTaskType": "cf_clearance",
"htmlPageBase64": "PCFET0NUWVBFIGh0...vYm9keT48L2h0bWw+",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
"proxyType": "your-proxy-type",
"proxyAddress": "your-proxy-address",
"proxyPort": 1234,
"proxyLogin": "your-proxy-login",
"proxyPassword": "your-proxy-password"
}
}Endpoint and response — the same for both options:
POST https://api.capmonster.cloud/createTask
{
"errorId": 0,
"taskId": 407533072,
"errorCode": null,
"errorDescription": null
}Poll getTaskResult with the taskId until status becomes ready. The request is identical for both options; the solution object carries whichever result you asked for.
Endpoint and request:
POST https://api.capmonster.cloud/getTaskResult
{
"clientKey": "API_KEY",
"taskId": 407533072,
"errorCode": null,
"errorDescription": null
}Option 1 · Challenge (token) — solution.token
{
"errorId": 0,
"status": "ready",
"solution": {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
"token": "0.iGX3xsyFCkbGePM3jP4P4khLo6TrLukt8ZzBvwuQOvbC...f61f3082"
}
}Use the token when calling the callback function on the page.
Option 2 · Challenge (cookie) — solution.cf_clearance
{
"errorId": 0,
"status": "ready",
"solution": {
"cf_clearance": "1tarGvbY2_ZhQdYxpSBloao.FoOn9VtcJtmb_IQ_hCE-1761217338-1.2.1.1-vyVPoLYIGX0...ZHi.w"
}
}Special Cloudflare cookie that you add to your browser or send with raw HTTP requests.
If you use the cookie, pass its value in the Cookie: cf_clearance=<value> header on raw HTTP requests, or set it in the browser context before requesting the protected URL again.
If you use the token, pass it to the challenge callback on the page.
The token option needs the values the page passes to turnstile.render when the challenge starts: sitekey (websiteKey), action (pageAction), cData (data) and chlPageData (pageData). The cookie option needs the HTML of the challenge page in htmlPageBase64; websiteKey can be any string.
createTask and retrieve the result with getTaskResult using our client libraries.For low-code workflows, use the official CapMonster Cloud n8n node.
GET https://example.com/protected-page
User-Agent: <userAgent from the task>
Cookie: cf_clearance=<value>Pass the returned value in the Cookie: cf_clearance=<value> header on raw HTTP requests, or set it in the browser context before requesting the protected URL again. In the official examples, the same proxy and the same User-Agent are used to load the page, solve the task and send the request with the cookie.
In Selenium, Playwright or Puppeteer, set the cookie with the framework's own method before navigating to the protected URL — the browser then opens the page without a repeated challenge. If you requested a token, pass it to the challenge callback on the page instead.
cf_clearance cookie, a proxy the service does not accept, or outdated page parameters. Each card below names the error and the fix.cf_clearance cookie, the cookie has expired, or Cloudflare re-checked the session (Precursor clearance). Request a new cookie.userAgent as in the task when requesting the protected page, as in the official examples. Cloudflare also notes that a Managed Challenge solved from a different IP than the one it was issued to is not valid and can cause a challenge loop — see the Cloudflare documentation.http, https, socks4 or socks5.Cloudflare Challenge is an intermediate check that Cloudflare displays before granting access to a protected page when a WAF rule, Bot Management or rate limiting deems the request suspicious (for example, based on TLS fingerprint, IP reputation, or behavioral signals). While the check is in progress, the visitor sees an intermediate "Just a moment…" page. If the check is passed successfully, Cloudflare issues a cf_clearance cookie — it is tied to the visitor and device and is valid for a limited time — after which the browser gains access to the original page.
All three rely on client-side signals from the browser. JS Challenge (non-interactive) runs in the background, typically in less than five seconds; if it is not passed, Cloudflare shows another challenge page. Managed Challenge lets Cloudflare choose the check dynamically from request characteristics and browser signals, up to an interactive step. Turnstile is an embeddable widget that returns a token to be validated through the Siteverify API; with the optional pre-clearance it can also issue a cf_clearance cookie.
A repeated challenge or a 403 means the request has no valid cf_clearance cookie, the cookie has expired, or the request comes from a different visitor or device than the one the cookie was issued to. Even a valid cookie does not guarantee access: Cloudflare maintains Precursor clearance — a continuous reassessment of session behavior that can lower or reset the clearance level and trigger a repeated challenge if the traffic pattern starts to look suspicious.
CapMonster Cloud solves the task asynchronously through two API calls: createTask with the task parameters, followed by polling getTaskResult until the solution is ready. Depending on the task type, the service returns either a token — which is inserted into the callback without a proxy — or a cf_clearance cookie, for which a proxy is mandatory. You then pass the resulting value in the Cookie: cf_clearance=<value> header of regular HTTP requests, or set it in the browser context — after which the protected page opens without manually passing the check.
Send a POST request to createTask with your clientKey (API key) and the task parameters, wait for the result to be ready by polling getTaskResult (until the status is ready), then use the resulting token or cookie in your HTTP client or browser automation. For ready-made integrations, use the official SDKs in the CapMonster Cloud repositories on GitHub — they wrap the createTask / getTaskResult cycle into a single call.
A proxy is mandatory only for the task that returns a cf_clearance cookie. In the official examples the same proxy is then used for the following requests. For a token result no proxy is required — CapMonster Cloud uses its built-in proxies by default (if you whitelist by IP, add 65.21.190.34). Supported types: http, https, socks4, socks5; transparent proxies and proxies on local machines are not allowed.
Yes. For n8n, there is an official CapMonster Cloud node — installed from the interface or via npm install @zennolab_com/n8n-nodes-capmonstercloud on self-hosted instances. In other cases, your code first makes a regular HTTP request to the CapMonster API (via requests, axios, or any other HTTP client), and then the result is passed to the browser framework (Selenium, Playwright, Puppeteer, etc.) using its own method. The cf_clearance cookie needs to be set with this method before navigating to the protected URL — then the browser will open the page with an already valid check, without a repeated challenge.
Solving Cloudflare Challenge is a technical operation, and its lawfulness depends on how the resulting access is used, not on the tool itself. CapMonster Cloud is intended for legal automation — testing, monitoring, and collecting publicly available data — while responsibility for compliance with the law and with the target resource's Terms of Use rests with the user.
We do not guarantee a 100% success rate: CAPTCHA types and target-site configuration may change at any time. Actual solving speed and success rate vary depending on the target site, server load, and network conditions.
Cloudflare is a trademark of Cloudflare, Inc. CapMonster Cloud is not affiliated with or endorsed by Cloudflare. The Service is intended for publicly available data, testing your own or authorized websites, image recognition and accessibility. Collecting third-party data behind a login or paywall without permission is prohibited; your own accounts are not affected. You determine the legal status of your data before starting work.