Before you submit — these must be correct
If any of these are wrong, your token may be accepted by our solver but rejected or scored poorly by the target site.
- DataDome is the hardest anti-bot system on the market. Realistic success rate is 50-65% on enterprise sites — well below what you'd see on Akamai or Imperva. For mission-critical workflows, supply your own high-reputation proxy via DataDomeSlider.
- Send us the captchaUrl — the geo.captcha-delivery.com URL your client captured from the blocked page's iframe. That's all we need to locate and solve the challenge: the captchaUrl already carries the site as its referer, so websiteURL is optional. Capture the captchaUrl from your browser's Network tab (the request to geo.captcha-delivery.com/captcha/…) or the iframe's src when DataDome blocks you.
- Also send the datadome cookie (in the cookies array — the cid in the captchaUrl is that cookie value) and a sticky proxy on the SAME IP that was blocked. DataDome binds the challenge to that cookie + IP; without them it serves a block page instead of the slider. If the captchaUrl has t=bv the IP is hard-blocked — switch proxy.
- Cookies are IP-bound. The datadome cookie we return is tied to the exit IP it was solved on — reuse the same proxy on subsequent requests, or use DataDomeSlider with your own proxy so the cookie is valid for your client's IP.
- userAgent must match. DataDome binds the cookie to the User-Agent (and IP). Send us the SAME userAgent you'll replay your requests with. We support modern Chrome on Windows (Chrome 120–149, Windows NT 10.0); if you omit it we use a current Chrome-on-Windows UA and return it in the solution — replay with that exact value.
DataDome Solver, solved in 5.0s.
Bypass DataDome bot protection — slider/click and interstitial/device-check challenges. Returns the datadome cookie. Routed for you (ProxyLess) by default.
DataDome runs ~85,000 per-customer ML models and is widely considered the hardest anti-bot system in the industry. It scores behavior + IP reputation + TLS/JA3 fingerprint, with the slider being only the visible tip. Deployed on major e-commerce, ticketing, and travel sites where low-reputation IPs almost always fail.
Quick Integration
Send the captchaUrl your client captured from the blocked page's iframe, the datadome cookie from that session, and the userAgent you'll replay with. We embed the challenge and solve the slider.
import requests, time
API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"
# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "DataDomeSlider",
"captchaUrl": "https://geo.captcha-delivery.com/captcha/?initialCid=AHrl...&hash=789361B6...&cid=6QAEcL8coBYT...&t=fe&referer=https%3A%2F%2Fwww.example.com%2F&s=40070&e=3e531bd3...",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"cookies": [{"name":"datadome","value":"<datadome cookie from your blocked session>","domain":".example.com"}],
"proxyType": "http",
"proxyAddress": "123.45.67.89",
"proxyPort": "8080",
"proxyLogin": "user",
"proxyPassword": "pass"
}
}).json()
task_id = task["taskId"]
print(f"Task created: {task_id}")
# Step 2: Poll for result
while True:
result = requests.post(f"{API}/getTaskResult", json={
"clientKey": KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
print("Solved!", result["solution"])
break
elif result["status"] == "failed":
print("Failed:", result.get("errorDescription"))
break
time.sleep(1)
Using the result
# Step 3: Use the result — drop-in Cookie: header replay
sol = result["solution"]
headers = {
"Cookie": sol["cookie"],
"User-Agent": sol.get("userAgent", ""),
}
# IMPORTANT: route through the SAME proxy you supplied at solve time
resp = requests.get("https://target.example.com/", headers=headers, proxies={
"http": "http://USER:PASS@PROXY_HOST:PORT",
"https": "http://USER:PASS@PROXY_HOST:PORT",
})
print(resp.status_code, len(resp.text), "bytes")1. Send Payload
Dispatch your DataDomeSlider to our processing cluster via the secure API endpoint.
2. Solving Engine
Capzy's proprietary solver handles DataDome's slider challenge end-to-end. The ProxyLess path is routed for you because low-trust IPs are auto-classified before the slider even renders. DataDomeSlider uses your own proxy directly. A fast cookie path (AntiDataDomeTask) is in beta: it builds the device link, generates the signed payload, and returns the datadome cookie over HTTP — ~80% faster and ~90% less bandwidth, covering both interstitial and slider.
3. Get Result
Poll getTaskResult for the validated token, then finalize your automated request.
Task Parameters
API SpectypetypestringreqyesDataDomeSlider for the slider/click puzzle, or DataDomeInterstitial for the interstitial / device-check page (no user interaction — we run DataDome's challenge in a real browser and return the cookie).captchaUrltypestringreqyesThe DataDome challenge URL (geo.captcha-delivery.com/captcha/?initialCid=...&cid=...&hash=...&t=fe&referer=...&s=...&e=...) captured from the blocked page's iframe. This is the primary input — we embed it and solve the slider. It already contains the site (referer), the challenge params, and the cid (your datadome cookie). Pair it with a sticky proxy on the IP that was blocked. If t=bv the IP is hard-blocked — switch proxy.websiteURLtypestringreqnoOptional. The site the challenge appeared on. We derive this from the captchaUrl's referer automatically; only pass it to override that.userAgenttypestringreqyesThe User-Agent you will replay your requests with. DataDome binds the cookie to it, so it MUST match exactly. Supported: modern Chrome on Windows (Chrome 120–149, Windows NT 10.0).cookiestypearrayreqnoThe datadome cookie from your blocked session: [{ name: "datadome", value: "...", domain: ".yoursite.com" }]. Strongly recommended — without it DataDome may serve a block page instead of the slider. (If omitted, we fall back to the cid embedded in the captchaUrl.)proxyTypetypestringreqyesProxy protocol: http, https, socks4, or socks5proxyAddresstypestringreqyesProxy IP address or hostnameproxyPorttypenumberreqyesProxy port numberproxyLogintypestringreqnoProxy username (if auth required)proxyPasswordtypestringreqnoProxy password (if auth required)userAgenttypestringreqnoUser-Agent string to use. Must match the UA you use when submitting the tokenResponse Shape
cookietypestringThe full Set-Cookie string: datadome=VALUE; Max-Age=31536000; Domain=; Path=/; Secure; SameSite=Lax. Set it on your HTTP client for the target domain. IP-bound — replay from the same proxy IP.tokentypestringThe bare datadome cookie VALUE (no attributes) — for integrations that read a generic .token field.userAgenttypestringThe User-Agent the cookie is bound to. You MUST replay your requests with this exact User-Agent (and the same proxy IP) or DataDome rejects the cookie.Example response
{
"errorId": 0,
"status": "ready",
"solution": {
"cookie": "datadome=<long opaque value>; Max-Age=31536000; Domain=; Path=/; Secure; SameSite=Lax",
"token": "<long opaque datadome cookie value, IP-bound>",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
}
}Error response
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "Solver gave up."
}Features
Pricing & Stats
Start solving datadome.
$0.10 in free credits — no card. ~250 free solves to test before you spend.