Web Unlocker · DataDome
How to bypass DataDome and get the page behind the 403
DataDome answers a scraper with a 403 and a short page that says "Please enable JS and disable any ad blocker". The Web Unlocker sends the URL from a residential or mobile IP, opens a real browser when DataDome asks for its device check, and returns the page behind it in one JSON answer.
- 91.7%
- of calls to DataDome-protected pages answered with the real page, canary of 11 November 2026
- 88.9%
- across all 27 protected targets of the same run
- 4.1 s
- median response across the run
What a DataDome block looks like
The DataDome block page is tiny and always the same. Once you have seen it you recognise it in a log by its size alone.
| Where to look | What a DataDome block shows |
|---|---|
| Status code | 403 on a blocked page. An API call gets 403 with a small JSON body that carries a url on captcha-delivery.com. |
| Page text | "Please enable JS and disable any ad blocker". The whole page is under two kilobytes: that sentence and a script. |
| Script | A var dd={...} object and a script loaded from ct.captcha-delivery.com. Inside dd, the value of rt is i for the device check and c for the captcha. |
| Response headers | x-datadome: protected on answers of a protected site, and a set-cookie: datadome=... on every one. |
| What a person sees | A short screen that checks the device and clears by itself, or a slider puzzle to drag. |
| Cookie after a pass | datadome. It is refreshed on every answer and checked against the client that presents it. |
Why DataDome blocks a scraper
DataDome scores every single request, not only the first one, and it does so on its own servers before the site answers. Four things decide the score.
- The IP and its history: hosting ranges, and addresses that sent too much traffic, start with a bad score.
- The client: the TLS handshake, the HTTP/2 settings and the headers must describe one real browser. DataDome compares them with the
User-Agent. - The device check: a script collects signals from the browser and posts them back. A client that cannot run it stays on the 403.
- The cookie:
datadomebelongs to the client that earned it. Sent from a different client, even on the same IP, it is refused and the check starts again. This is why a cookie copied from your own browser into a script works for a few minutes at best.
Get the page behind DataDome with one call
Send the URL to the REST endpoint. With mode: "auto", the default, the first attempt is a browser-grade request from a residential IP. When DataDome answers with its device check, a real browser opens the page, lets the check finish and returns the page behind it.
curl -X POST https://app.quanticdata.io/api/v1/scraper/unlock \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/", "country": "us"}'
For many pages of one site, keep calling from the same account. The first call waits for the device check; the next ones reuse the session, which the answer reports in clearance.
What the answer tells you
| Field | What it says |
|---|---|
blocked | false when the real page came back. true only when every attempt met the block; the block page is then in body. |
vendor | The system the engine recognised on a blocked attempt. For this guide: datadome. |
blockClass | Usually js_challenge for the device check and captcha for the slider. |
tier_served | tls for a browser-grade request, browser when a real browser had to open the page. |
attempts, latency_ms | How many tries the call took and how long it lasted. |
cost | The bytes this call moved and what it was charged. |
Measured, with a date
In the canary of 11 November 2026, 11 of 12 calls to DataDome-protected pages came back with the real page. Across the whole run, 72 of 81 calls on 27 protected targets did, with a median response of 4.1 s.
The first request to a protected site waits for the site's own check. The next ones from the same account reuse the session: in our test of 11 November 2026, four requests in a row to the same DataDome-protected page took 12.6 s, 2.5 s, 2.9 s and 2.3 s.
A call counts only when the answer is 2xx and carries the real page, not a challenge. The list, the method and every run are on the Web Unlocker status page.
Your own scraper or the Web Unlocker
Getting past DataDome once is an afternoon. Staying past it every week is the work. This is what has to stay right, and who keeps it right.
| What has to be right | With your own scraper | With the Web Unlocker |
|---|---|---|
| The IP address | You rent residential or mobile IPs and rotate them yourself. | Residential (Premium) or mobile exits, chosen by country, state and city. |
| The browser identity | Handshake, HTTP/2 settings and headers must describe one browser, and be updated with every browser release. | A browser-grade request on the first attempt, kept current for you. |
| The JavaScript check | You run real browsers for the pages that need one, and keep them from looking automated. | A real browser opens the page only when the site asks for one. |
| After a pass | You keep the datadome cookie with the IP and the exact client that earned it, and refresh it on every answer. | The session is reused for your next calls to that site. |
| When a call still fails | You recognise the DataDome block page yourself and decide what to retry. | Retries on a fresh exit. The answer says blocked, blockClass and vendor. |
What it is for, and what it does not do
- It is for pages anyone can open in a browser without signing in: prices, listings, reviews, search results, public profiles.
- Challenges that need no human input are handled by the browser tier. An interactive captcha that asks a person to click, pick images or type is not solved: the answer comes back with
blocked: trueandblockClass: "captcha", so your code can skip the page or try later. - It does not log in for you and it does not create accounts. Pages behind a login stay behind it.
- Whether you may collect a page depends on the terms of the site and on the law that covers the data. A protection system does not change that, in either direction.
DataDome and scraping: questions people ask
What does "Please enable JS and disable any ad blocker" mean?
It is the block page of DataDome. The site passed your request to DataDome, which scored it as automated and answered 403 with a script instead of the page. In a real browser the script runs a device check or shows a slider. In a script or an HTTP client nothing runs, so the page never arrives.
Can I bypass DataDome with Python requests or cURL?
Not on a page DataDome protects. Both send a handshake that is not a browser and neither runs the device check, so the answer is the 403 page. With the Web Unlocker you still write one POST in Python or cURL; the request that reaches the site is browser-grade, and a real browser opens the page when the check is served.
Does the Web Unlocker solve the DataDome captcha?
The device check, the screen that clears by itself, is passed by the browser tier. The slider puzzle asks for a person and is not solved: the answer comes back with blocked: true and blockClass captcha, and the next call leaves from a fresh exit, so your code can simply retry.
Can I reuse the datadome cookie?
Only from the client that earned it. DataDome checks the cookie against the client that presents it and refreshes it on every answer. The Web Unlocker does this for you: after a pass, your next calls to the same site reuse the session. In our test of 11 November 2026, four calls in a row to the same DataDome-protected page took 12.6, 2.5, 2.9 and 2.3 seconds.
Does a residential proxy alone get past DataDome?
It improves the IP score, which is one input of four. A script behind a home IP still has a handshake that is not a browser and still cannot run the device check, so it meets the same 403. The Web Unlocker runs on residential and mobile exits and handles the client and the check as well.
Is it legal to scrape a site protected by DataDome?
The protection system does not decide that. What matters is the page and the data: whether the page is public, what the terms of the site say, and which law covers the data, personal data above all. The Web Unlocker fetches pages anyone can open without signing in; it does not log in and it does not create accounts.
Send the URL that DataDome blocks
Create the free account, open Web Unlocker in the dashboard and paste the URL into the test box. The answer shows the status, the tier that served the page, the attempts and the cost of the call.