Skip to content
../products
DataDomeDataDomeSliderTaskproxy required

DataDome Solver, solved in 12.0s.

Bypass DataDome bot protection slider / click challenges. Returns the datadome cookie.

Proxy required for DataDome Solver

Tokens are bound to the solving IP. Use DataDomeSliderTask with proxyAddress + userAgent. The *TaskProxyLess variant returns ERROR_PROXY_REQUIRED at no charge.

$4.00per 1,000
~12.0savg solve
99%+success
5/mthroughput
proxyPort: 8080…0.00s
POST/createTask type=DataDomeSliderTask
taskId tsk_d4nvso1m
POLL/getTaskResult status=processing
status ready
token 0x0a82795618555...
type: DataDomeSliderTask● running on production solvers

What is DataDome?

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 datacenter IPs almost always fail.

How it works

1

Send Task

POST your DataDomeSliderTask with the target URL and sitekey to our API. We'll queue it instantly.

2

We Solve

Capzy's proprietary solver handles DataDome's slider challenge end-to-end and returns the datadome cookie. ProxyLess is routed for you; DataDomeSliderTask uses your own proxy directly.

3

Get Token

Poll getTaskResult — when status is 'ready', the solution contains the token to inject into the target page.

Quick integration

solve.py
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": "DataDomeSliderTask",
        "proxyPort": "8080",
        "proxyType": "http",
        "proxyLogin": "user",
        "websiteURL": "https://example.com/blocked",
        "proxyAddress": "123.45.67.89",
        "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)

# 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")

Task parameters

Proxy fields below are required for this captcha — userAgent must match the one you’ll use when submitting the resulting token.
typetypestringreqyesDataDomeSliderTask
websiteURLtypestringreqyesThe page URL showing the DataDome challenge
captchaUrltypestringreqnoThe DataDome challenge URL if different from the page (skips the warm-up navigation)
proxyTypetypestringreqyesProxy protocol: http or https
proxyAddresstypestringreqyesProxy IP address or hostname
proxyPorttypenumberreqyesProxy port number
proxyLogintypestringreqnoProxy username (if auth required)
proxyPasswordtypestringreqnoProxy password (if auth required)
userAgenttypestringreqyesUser-Agent string to use. Must match the UA you use when submitting the token

Solution response

cookietypestringThe `datadome` cookie value. Set as the `datadome` cookie on your HTTP client. IP-bound — replay through the same proxy that solved.
tokentypestringAlias of `cookie` for API-shape consistency. On silent-pass solves (DataDome didn't render the slider), returns the literal string `SOLVED_CHALLENGE_PASSED` — no cookie was set but the session is cleared.

Example response

Full getTaskResult response shape. The fields in the table above describe what's inside solution — the outer envelope (errorId, status) is identical for every captcha type.

{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "token": "abc123def456ghi789.cookieValueFromDataDome.AbCdEfGhIjKlMnOpQrSt",
    "cookie": "abc123def456ghi789.cookieValueFromDataDome.AbCdEfGhIjKlMnOpQrSt"
  }
}

Error response

Failures use the same envelope with errorId: 1 plus errorCode + errorDescription. See the error-code reference for the full list.

{
  "errorId": 1,
  "errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
  "errorDescription": "Solver gave up — automatically refunded."
}

Pending response

While the solver is still working, getTaskResult returns status: "processing". Poll every 1–2 seconds until ready or failed.

{
  "errorId": 0,
  "status": "processing"
}

Features

Routed for you by default (ProxyLess)
Capzy proprietary infrastructure
Solves the slider challenge reliably
Returns the datadome cookie + matching User-Agent

task types

required: DataDomeSliderTask

Frequently asked questions

start solving datadome.

$0.10 in free credits — no card. ~250 free solves to test before you spend.