Tool: Cloudflare Bypass and Website Unblocker
Pricing
from $0.04 / page unblocked
Tool: Cloudflare Bypass and Website Unblocker
Return the real HTML from Cloudflare protected and geo restricted sites. Get past Just a Moment, Turnstile and 403 challenge pages. Pay a small fee per request and more only on success. Optional AI converts the page into structured JSON.
Pricing
from $0.04 / page unblocked
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
Tool: Cloudflare Bypass and Website Unblocker
Here is one real result, with every field the actor returns (the html field is truncated; the value shown is real):
{"url": "https://www.scrapingcourse.com/cloudflare-challenge","finalUrl": "https://www.scrapingcourse.com/cloudflare-challenge","success": true,"statusCode": 200,"protectionDetected": "cloudflare","pageTitle": "Cloudflare Challenge - ScrapingCourse.com","contentLength": 3854,"html": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> ... [html truncated]","json": null,"generatedSchema": null,"attempts": 6,"errorReason": null,"source": "www.scrapingcourse.com","observedAt": "2026-08-10T14:06:50.975Z"}
The most complete Cloudflare bypass and website unblocker available. It fetches a protected page, clears the Cloudflare interstitial, and returns the final unblocked HTML plus the detected protection vendor, status code, page title, content length and attempt count, with optional country targeting, JavaScript rendering, and AI extraction of the page to structured JSON.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor takes one or more URLs, fetches each one through an anti-bot ladder that clears the Cloudflare challenge, and writes one record per URL to the run's dataset. Each record carries the requested and final URL, a success flag, the HTTP status code, the detected protection vendor, the page title, the HTML content length, the full unblocked HTML, the number of attempts, and a human-readable reason when a page cannot be unblocked. You can render JavaScript for single-page apps, target a specific country, send custom headers and a POST body, and optionally convert the unblocked page to structured JSON with AI.
It clears Cloudflare and similar interstitial-style protection, and escalates the toughest high-value sites to a heavier last-resort retrieval path. Pages behind an interactive human-verification challenge (for example a hard CAPTCHA) are reported honestly with success: false and an errorReason, and are not charged any unblock fee.
Quickstart
Open the actor, paste this into the input, and press Run. It unblocks one Cloudflare-challenged demo page.
{"urls": ["https://www.scrapingcourse.com/cloudflare-challenge"],"httpMethod": "GET","renderJavaScript": false,"country": "auto","maxUrls": 25}
Pass many URLs in urls to process them in one run. Turn on renderJavaScript for JavaScript-heavy pages.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
urls | string[] | yes | ["https://www.scrapingcourse.com/cloudflare-challenge"] | One or more page URLs to fetch. One run can process many URLs. |
httpMethod | enum | no | GET | Request method for every URL: GET or POST. |
headers | object | no | (none) | Extra request headers to send with every URL, as key/value pairs. |
payload | string | no | (empty) | Request body to send when httpMethod is POST. |
renderJavaScript | boolean | no | false | Turn on for JavaScript-heavy pages and single-page apps. Off is faster for normal HTML. |
country | enum | no | auto | Country to view the page from (for example US, GB, BR, MX). auto picks the best match per URL. |
waitForMs | integer | no | (none) | Extra settle time in milliseconds for JavaScript pages before the HTML is captured (max 30000). |
maxUrls | integer | no | 25 | Maximum number of URLs to process in this run. |
extractToJson | boolean | no | false | Add-on. Convert the unblocked page to structured JSON with AI. Billed separately and only for pages that were successfully unblocked. |
jsonSchema | object | no | (none) | Optional JSON schema for the AI extraction to follow. Leave empty to let the AI infer the structure and return it in generatedSchema. Only used when extractToJson is on. |
Output reference
One dataset item per URL. Types: string, integer, boolean, object, or null when the value is absent.
| Field | Type | Description |
|---|---|---|
url | string | The requested URL. |
finalUrl | string | Final URL after redirects. |
success | boolean | true when the page was unblocked. |
statusCode | integer | HTTP status code of the fetched page. |
protectionDetected | string | Detected protection vendor, for example cloudflare, or none. |
pageTitle | string | Page title of the unblocked page, or null. |
contentLength | integer | HTML length in characters. |
html | string | The full unblocked page HTML, or null on failure. |
json | object | AI-extracted structured JSON (add-on), else null. |
generatedSchema | object | Schema the AI used when none was supplied (add-on), else null. |
attempts | integer | Number of retrieval attempts made. |
errorReason | string | Human-readable reason on failure, else null. |
source | string | Source host. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
Example output record
Real record from a live run (input {"urls":["https://www.scrapingcourse.com/cloudflare-challenge"],"maxUrls":25}). The html field is truncated; the value shown is real:
{"url": "https://www.scrapingcourse.com/cloudflare-challenge","finalUrl": "https://www.scrapingcourse.com/cloudflare-challenge","success": true,"statusCode": 200,"protectionDetected": "cloudflare","pageTitle": "Cloudflare Challenge - ScrapingCourse.com","contentLength": 3854,"html": "<!DOCTYPE html><html lang=\"en\"><head> ... [html truncated]","json": null,"generatedSchema": null,"attempts": 6,"errorReason": null,"source": "www.scrapingcourse.com","observedAt": "2026-08-10T14:06:50.975Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~cloudflare-bypass-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"urls":["https://www.scrapingcourse.com/cloudflare-challenge"],"country":"US"}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~cloudflare-bypass-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"urls":["https://example.com/a","https://example.com/b"],"renderJavaScript":true,"maxUrls":50}'
Apify CLI:
apify call scrapers_lat/cloudflare-bypass-scraper \--input '{"urls":["https://www.scrapingcourse.com/cloudflare-challenge"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per unblock. The unblock charge lands only when a page is successfully unblocked (
success: true). See the pricing tab for the current per-page events and prices. - Premium unblock. A few high-value sites can only be returned through a heavier last-resort retrieval path. When that path is what delivers the page, the run is charged the
premium-unblockevent instead of the standard unblock fee (never both, and never on failure). - No charge on a failed unblock. Pages behind an interactive human-verification challenge (for example a hard CAPTCHA) are reported with
success: falseand anerrorReason, and are not charged any unblock fee. - AI extraction billed separately. The
extractToJsonadd-on is billed only for pages that were successfully unblocked and produced usable JSON. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable pages. - Free Apify plans are capped at 10 URLs per run. Upgrade for higher
maxUrls.
FAQ and troubleshooting
A page came back with success: false. Why?
It sits behind an interactive human-verification challenge this tool does not clear (for example a hard CAPTCHA), or the challenge could not be solved in time. The errorReason explains which. Failed unblocks are not charged any unblock fee.
Which protections does it clear? Cloudflare and similar interstitial-style challenges. It does not clear interactive human-verification CAPTCHAs, Imperva/Incapsula, or PerimeterX.
When should I turn on Render JavaScript? For single-page apps and pages whose content is built in the browser. Leave it off for normal server-rendered HTML, which is faster.
How do I get geo-specific content?
Set country to the target country code (for example MX or DE). Leave it on auto to match the site automatically.
Can I get structured data instead of raw HTML?
Yes. Turn on extractToJson. Provide a jsonSchema to force a shape, or leave it empty and the AI returns the schema it inferred in generatedSchema.
Is this an official Cloudflare tool? No. This actor is independent and has no affiliation with Cloudflare. Use it only on pages you are authorized to access and in accordance with the target site terms.
Related scrapers
- Akamai Bypass Scraper: Unblock pages behind Akamai bot protection.
- DataDome Bypass Scraper: Unblock pages behind DataDome protection.
- Gen5 Website Unblocker: General-purpose website unblocker and fetcher.
- Website Tech Stack Scraper: Detect the technology stack of any website.
- Website Contacts Scraper: Extract emails and contacts from any website.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Cloudflare. Use only on pages you are authorized to access, and in accordance with the target site terms of service.



