Skip to content
capzy
DataDome Tags
DataDomeTags
proxy required

DataDome Tags Solver, solved in 5.0s.

Proactively warm DataDome session trust before a slider or interstitial fires. Submits device and behavioral tags deterministically and returns a refreshed datadome cookie.

Avg Speed~5.0s
Success99%+
Cost / 1k$2.00
Throughput12/m

DataDome's JS tag continuously POSTs device + behavioral telemetry to its /js/ collector to build session trust in the background. When that trust is high enough, DataDome never escalates to a slider or interstitial. This solver assembles and submits those tags for you — deterministically, no browser — so you can warm a session up-front instead of solving a challenge after you're already blocked.

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": "DataDomeTags",
        "websiteURL": "https://example.com/",
        "ddk": "AE3F04AD3F0DEADBEEF00112233445566",
        "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

use_result.py
# 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 DataDomeTags to our processing cluster via the secure API endpoint.

2. Solving Engine

You provide the site's DataDome client key (ddk) and your current session. We assemble the tags payload and submit the two sequential collector POSTs (type='ch' then type='le'), returning the refreshed datadome cookie. No puzzle, no interstitial, no browser.

3. Get Result

Poll getTaskResult for the validated token, then finalize your automated request.

Task Parameters

API Spec
Proxy fields below are required for this captcha — userAgent must match the one you’ll use when submitting the resulting token.
typetypestringreqrequiredDataDomeTagsProxyLess or DataDomeTags
websiteURLtypestringreqrequiredThe protected page URL (used as Referer/origin)
ddktypestringreqrequiredThe DataDome client-side key (static per site). Aliases: sitekey, s.
datadomeCookietypestringreqoptionalYour current datadome cookie for session continuity. Alias: cid, or the cookies array.
userAgenttypestringreqoptionalThe User-Agent to bind the tags to. Reuse it on replay.
acceptLanguagetypestringreqoptionalAccept-Language header (default en-US,en;q=0.9).
tagsUrltypestringreqoptionalOverride the collector endpoint — some sites first-party-proxy the DataDome tags under their own domain.
proxyTypetypestringreqrequiredProxy protocol: http, https, socks4, or socks5
proxyAddresstypestringreqrequiredProxy IP address or hostname
proxyPorttypenumberreqrequiredProxy port number
proxyLogintypestringreqoptionalProxy username (if auth required)
proxyPasswordtypestringreqoptionalProxy password (if auth required)
userAgenttypestringreqoptionalUser-Agent string to use. Must match the UA you use when submitting the token

Response Shape

cookietypestringThe refreshed datadome cookie value — set it on your domain for subsequent requests from the same IP
datadometypestringAlias of cookie (same value)
userAgenttypestringThe User-Agent the tags/cookie are bound to — replay with this exact value

Example response

{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "cookie": "datadome=<refreshed datadome cookie value, IP-bound>",
    "datadome": "datadome=<same value>",
    "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

Proactive — prevents the slider/interstitial from firing at all
Deterministic tag assembly — no browser, no puzzle
Returns a refreshed datadome cookie bound to your session
Supports first-party-proxied collector endpoints (tagsUrl)

Pricing & Stats

Per 1,000 solves$2.00
Avg solve time~5.0s
Success rate99%+
Throughput12/m

Start solving datadome tags.

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

Frequently asked questions