DataDome

Bot management

Also known as: captcha-delivery, DataDome Bot Protection

Blocks and challenges on 403, and is the easiest vendor in this glossary to attribute thanks to an explicit x-datadome header and a captcha-delivery.com bootstrap in the body.

DataDome runs as a module or edge worker in front of the application, calling its Protection API on each request. The documented contract is precise: the module reads an X-DataDomeResponse header from the API and treats 200 as allow, treats anything else as an instruction to return DataDome's response verbatim without contacting the backend, and treats a missing header as a signal to fail open so that a fault in the detection path does not take the site down.

DataDome offers nine response types, which is the widest published set here. Alongside Allow, Block, and Captcha, it documents Device Check (a silent interstitial that verifies the environment without user interaction), Timeboxing (allow during configured hours, enforce outside them), Rate Limiting (allow below a volume threshold, enforce above it), Custom (allow the request but tag it with a header so the application can decide), and Monetize (hand compliant bot and LLM traffic to a partner workflow rather than refusing it).

That last group matters for anyone building legitimate automation, because it means a DataDome site can be configured to admit declared bots on commercial terms rather than block them. The block is a policy choice, not a technical inevitability.

How to identify it

Headers

Cookies

Status codes

403 Block or challenge page

Blocked. Documented by the vendor.

DataDome enforced a response. Both hard blocks and CAPTCHA challenges arrive as 403, and the body distinguishes them.

What triggers it

How to confirm it

What to do about it

HTTP/2 403
x-datadome: protected
x-dd-b: 2
x-datadome-cid: AHrlqAAAAAMAZc-WcMV57acAoE9qgA==
set-cookie: datadome=GLGPOXLEKAsX3BfQ8z5GnmEH2y01g0APdCcQa6O7...; Max-Age=31536000; Path=/; Secure; SameSite=Lax

<html lang="en"><head><title>example.com</title></head><body style="margin:0">
<p id="cmsg">Please enable JS and disable any ad blocker</p>
<script data-cfasync="false">var dd={'rt':'c','cid':'AHrlqAAAAAMA...','t':'bv',
'host':'geo.captcha-delivery.com','cookie':'...'}</script>
<script data-cfasync="false" src="https://ct.captcha-delivery.com/c.js"></script></body></html>

200 Device Check interstitial

Challenge. Documented by the vendor.

A silent verification page was served in place of the resource. DataDome documents Device Check as an interstitial that runs without any user interaction and then redirects to the requested resource if the client is legitimate.

What triggers it

How to confirm it

What to do about it

403 Slider CAPTCHA

Challenge. Documented by the vendor.

An interactive challenge was served. DataDome's is a slider puzzle with an audio alternative.

What triggers it

How to confirm it

What to do about it

429 Rate limiting response

Rate limited. Documented by the vendor.

A Rate Limiting rule's volume threshold was crossed. DataDome documents this response as allowing traffic below a threshold over an hour or a day, then applying a CAPTCHA, Block, or Device Check above it.

What triggers it

How to confirm it

What to do about it

200 Custom response tag

Allowed. Documented by the vendor.

The request was allowed through but tagged with an HTTP header so the application can apply its own logic, such as serving alternate content.

What triggers it

How to confirm it

What to do about it

If you run a site behind it

If your traffic is being caught by it

Documentation

See also