Tool: DataDome Bypass and Website Unblocker avatar

Tool: DataDome Bypass and Website Unblocker

Pricing

from $0.04 / page unblocked

Go to Apify Store
Tool: DataDome Bypass and Website Unblocker

Tool: DataDome Bypass and Website Unblocker

Return the real HTML from DataDome protected and geo restricted sites. Get past the device check and block screens. 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

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 days ago

Last modified

Share

Tool: DataDome Bypass and Website Unblocker

Tool: DataDome Bypass and Website Unblocker

Here is one real result, with every field the actor returns (html trimmed for length; all other values are exactly as returned):

{
"url": "https://www.scrapingcourse.com/",
"finalUrl": "https://www.scrapingcourse.com/",
"success": true,
"statusCode": 200,
"protectionDetected": "cloudflare",
"pageTitle": "Learn Web Scraping with Challenges & Test Sites - ScrapingCourse.com",
"contentLength": 8719,
"html": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> ...[trimmed to 8719 chars total]",
"json": null,
"generatedSchema": null,
"attempts": 1,
"errorReason": null,
"source": "www.scrapingcourse.com",
"observedAt": "2026-08-15T03:55:12.880Z"
}

A website unblocker for pages fronted by DataDome and other common protections. It fetches each URL you pass, detects the protection in front of it, returns the unblocked HTML (or a structured JSON extraction), and reports exactly what happened per URL so you always know whether the page cleared. It gives you method, headers, country, JavaScript rendering and AI extraction controls to fetch exactly the pages you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor fetches each URL you pass, routing the request through a residential-proxy and challenge-solving pipeline, and writes one record per URL to the run's dataset. It detects the protection in front of the page (protectionDetected), returns the fetched HTML with its status code and title, and sets a clear success flag so you can tell cleared pages from blocked ones. You can send custom headers, use POST with a body, render JavaScript for single-page apps, choose a target country for geo-specific content, and optionally convert the unblocked page to structured JSON with AI.

Honest scope: the unblocker clears Cloudflare and AWS-WAF style challenges. It does not clear interactive human-verification challenges (CAPTCHA), and pages behind those are returned with success: false and an errorReason explaining why. You are never charged for a page that did not clear.

Quickstart

Open the actor, paste this into the input, and press Run. It fetches a Cloudflare-fronted test page.

{
"urls": ["https://www.scrapingcourse.com/cloudflare-challenge"],
"httpMethod": "GET",
"renderJavaScript": false,
"country": "auto",
"maxUrls": 25
}

Add more URLs to process many in one run. Turn on renderJavaScript for single-page apps. Default maxUrls is 25.

Input reference

FieldTypeRequiredDefaultDescription
urlsstring[]no["https://www.scrapingcourse.com/cloudflare-challenge"]One or more page URLs to fetch. One run can process many URLs.
httpMethodenumnoGETRequest method for every URL: GET or POST.
headersobjectno(none)Extra request headers to send with every URL, as key/value pairs.
payloadstringno(empty)Request body to send when httpMethod is POST (JSON or form-encoded).
renderJavaScriptbooleannofalseTurn on for JavaScript-heavy pages and single-page apps. Off is faster for normal HTML.
countryenumnoautoCountry to view the page from, for geo-specific content. auto picks the best match per URL. Supports US, GB, CA, AU, DE, FR, ES, IT, NL, BR, MX, AR, CL, CO, PE, JP, KR, IN, SG, HK, AE, ZA.
waitForMsintegerno(none)Extra settle time in milliseconds for JavaScript pages before the HTML is captured (max 30000).
maxUrlsintegerno25Maximum number of URLs to process in this run.
extractToJsonbooleannofalseAdd-on. Convert the unblocked page to structured JSON with AI. Billed separately and only for pages that were successfully unblocked.
jsonSchemaobjectno(none)Optional JSON schema for the AI extraction to follow. Leave empty and the AI infers the structure and returns 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.

FieldTypeDescription
urlstringThe URL you requested.
finalUrlstringThe final URL after any redirects.
successbooleantrue when the page was unblocked and returned, false when it could not be cleared.
statusCodeintegerHTTP status code of the fetched page.
protectionDetectedstringProtection detected in front of the page, for example cloudflare, none.
pageTitlestringThe page <title>, else null.
contentLengthintegerLength of the returned HTML in characters.
htmlstringThe unblocked page HTML. null when the page did not clear.
jsonobjectAI-structured extraction of the page. null unless extractToJson is enabled and succeeded.
generatedSchemaobjectThe JSON schema the AI used, when extractToJson inferred one. Else null.
attemptsintegerNumber of fetch attempts made for this URL.
errorReasonstringWhy a page did not clear, or null on success.
sourcestringHost of the requested URL.
observedAtstringISO 8601 timestamp of when the record was collected.

Example output record

Real record from a live run (input {"urls":["https://www.scrapingcourse.com/"],"maxUrls":2}), with html trimmed for length:

{
"url": "https://www.scrapingcourse.com/",
"finalUrl": "https://www.scrapingcourse.com/",
"success": true,
"statusCode": 200,
"protectionDetected": "cloudflare",
"pageTitle": "Learn Web Scraping with Challenges & Test Sites - ScrapingCourse.com",
"contentLength": 8719,
"html": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\"> ...[trimmed]",
"json": null,
"generatedSchema": null,
"attempts": 1,
"errorReason": null,
"source": "www.scrapingcourse.com",
"observedAt": "2026-08-15T03:55:12.880Z"
}

A page behind an interactive CAPTCHA returns success: false, html: null, and a populated errorReason, and is not charged.

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~datadome-bypass-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"urls":["https://www.scrapingcourse.com/"],"renderJavaScript":false,"country":"US"}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~datadome-bypass-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com/a","https://example.com/b"],"extractToJson":true,"maxUrls":50}'

Apify CLI:

apify call scrapers_lat/datadome-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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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 unblocked page. You are charged only when the real page HTML is returned. Most protections (Cloudflare, AWS-WAF and similar) are billed as a standard page-unblocked event. See the pricing tab for current prices.
  • Premium unblock. The most demanding protections, such as DataDome and Akamai, are cleared through a premium last-resort retrieval path and billed as a separate premium-unblock event. It is charged instead of the standard unblock fee (never both for the same page) and only when the page is actually returned.
  • Page request. A small page-requested fee is charged once per URL for each retrieval attempt, whether or not the page is returned.
  • No charge on failure. A page that could not be cleared is returned with success: false and an errorReason, and is not charged any unblock fee (only the small page request fee applies).
  • AI extraction add-on. extractToJson is billed as a separate event and only for pages that were successfully unblocked.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 URLs per run. Upgrade for higher maxUrls.

FAQ and troubleshooting

Which protections can it clear? DataDome, Cloudflare, AWS-WAF, Akamai and similar bot-protection and device-check screens. It does not clear interactive human-verification challenges (reCAPTCHA, hCaptcha), login walls, or similar. Pages behind those return success: false with an explanation.

How do I know if a page cleared? Check success. When true, html and statusCode are populated. When false, html is null and errorReason explains why, and you are not charged.

The page is a single-page app and came back empty. What do I do? Turn on renderJavaScript and optionally set waitForMs to give the app time to render before the HTML is captured.

Can I get structured data instead of raw HTML? Yes. Turn on extractToJson. Provide a jsonSchema to control the shape, or leave it empty and the AI infers one and returns it in generatedSchema.

Can I target a specific country? Yes. Set country to any supported code, or leave it on auto to match each site automatically.

Is bypassing a site legal? This tool fetches publicly reachable pages on your behalf. You are responsible for complying with each site's terms of service and applicable law. Do not use it to access private, paywalled, or login-gated content you are not authorized to view.

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. Fetches only publicly reachable pages on your behalf. You are responsible for complying with each site's terms of service and applicable law.