Skip to main content
Are you experiencing issues obtaining the token?
Contact support

DataDome

This type of captcha usually requires the user to solve a puzzle by moving a slider for verification.

Warning!
  • Use your own proxies to perform this task.

  • If your proxy uses IP-based authorization, you must whitelist the address 65.21.190.34.

  • After solving, you will receive special cookies that must be added to the browser.

Request parameters

type<string>required

CustomTask


class<string>required

DataDome


websiteURL<string>required

The main page URL where the captcha is solved.


captchaUrl (inside metadata)<string>required

"captchaUrl" - link to the captcha. Usually in the format: "https://geo.captcha-delivery.com/captcha/?initialCid=...".


datadomeCookie (inside metadata)<string>required

Your DataDome cookies. Can be obtained from the page using document.cookie (if cookies do not have the HttpOnly flag), in the request header Set-Cookie: "datadome=...", or directly from the HTML code initialCid (see examples on how to find datadomeCookie).


proxyType<string>required

http - standard http/https proxy;
https - use this only if "http" does not work (required for some custom proxies);
socks4 - socks4 proxy;
socks5 - socks5 proxy.


proxyAddress<string>required

IPv4/IPv6 proxy address. Not allowed:

  • transparent proxies (where the client IP is visible);
  • proxies on local machines.


proxyPort<integer>required

Proxy port.


proxyLogin<string>required

Proxy server login.


proxyPassword<string>required

Proxy server password.


userAgent<string>optional

Browser User-Agent.
Pass only a valid UA from Windows OS. Currently it is: userAgentPlaceholder


Create task method

Important

During page loading, DataDome may use one of two scripts: c.js or i.js. If c.js is used on the target site, extracted cookies may not work for verification. Before solving, check which script is loaded (DevTools → Network / HTML).

Option with c.js:

Option with i.js:

POST
https://api.capmonster.cloud/createTask

Request

{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "DataDome",
"websiteURL": "https://example.com",
"userAgent": "userAgentPlaceholder",
"metadata": {
"captchaUrl": "https://geo.captcha-delivery.com/interstitial/?initialCid=AHrlqAAAAAMA9UvsL58YLqIAXNLFPg%3D%3D&hash=C0705ACD75EBF650A07FF8291D3528&cid=7sfa5xUfDrR4bQTp1c2mhtiD7jj9TXExcQypjdNAxKVFyIi1S9tE0~_mqLa2EFpOuzxKcZloPllsNHjNnqzD9HmBA4hEv7SsEyPYEidCBvjZEaDyfRyzefFfolv0lAHM&referer=https%3A%2F%2Fwww.example.com.au%2F&s=6522&b=978936&dm=cm",
"datadomeCookie": "datadome=VYUWrgJ9ap4zmXq8Mgbp...64emvUPeON45z"
},
"proxyType": "http",
"proxyAddress": "123.45.67.89",
"proxyPort": 8080,
"proxyLogin": "proxyUsername",
"proxyPassword": "proxyPassword"
}
}

Response

{
"errorId":0,
"taskId":407533072
}

Get task result method

Use the getTaskResult method to get the solved DataDome captcha.

POST
https://api.capmonster.cloud/getTaskResult

Request

{
"clientKey":"API_KEY",
"taskId": 407533072
}

Response

{
"errorId": 0,
"status": "ready",
"solution": {
"domains": {
"www.example.com": {
"cookies": {
"datadome": "P1w0VnjFcTFslfps0J4FaPpY_QPbPBW4MeYxj4LW~pztIfJiSSuBPr8oQTUHzdrfgv137FbOBd3kCUOOgny7LhIkhm5e1qdtzYM4s2e46U_qfERK4KiCy22MOSIDsDyh"
},
"localStorage": null
}
},
"url": null,
"fingerprint": null,
"headers": null,
"data": null
}
}

How to find datadomeCookie

Using Developer Tools

Option 1:

  1. Open the DataDome-protected site in a browser (Chrome, Firefox).

  2. Press F12 → go to the Application tab → Cookies.

  3. Find the domain of the site (e.g., www.example.com).

Among the cookies, look for the datadome key — this is the required datadomeCookie.

Option 2:

  1. Open the site where the DataDome captcha triggers.

  2. Go to DevTools → Network, reload the page, and find the request loading the page with initialCid.

Example URL:

https://geo.captcha-delivery.com/interstitial/?initialCid=...&hash=...&cid=...

or:

  1. Open the Response of this request. In the HTML code, find the object:

var ddm = { ... };

  1. Inside this object, locate the cid parameter. Its value is the current datadomeCookie.

Option 3:

  1. Open the site where the DataDome captcha triggers.

  2. Go to DevTools → Network, reload the page, and find a request with 403 status.

  3. Go to the Headers → Response Headers tab. In the headers, find Set-Cookie: and copy the value of the datadome parameter (datadome=<value>).

Use SDK library

Show code (for browser)
// https://github.com/ZennoLab/capmonstercloud-client-js

import { CapMonsterCloudClientFactory, ClientOptions, DataDomeRequest } from '@zennolab_com/capmonstercloud-client';

const API_KEY = "YOUR_API_KEY"; // Specify your CapMonster Cloud API key

document.addEventListener("DOMContentLoaded", async () => {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);

// Optionally, you can check the balance
const balance = await client.getBalance();
console.log("Balance:", balance);

// DataDome can only be solved with your own proxies
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};

const datadomeRequest = new DataDomeRequest({
_class: 'DataDome',
websiteURL: "https://example.com/", // URL of the captcha page
userAgent: "userAgentPlaceholder",
proxy,
metadata: {
captchaUrl: "https://geo.captcha-delivery.com/interstitial/?initialCid=AHrlqAAAAAMA9UvsL58YLqIAXNLFPg%3D%3D&hash=C0705ACD75EBF650A07FF8291D3528&cid=7sfa5xUfDrR4bQTp1c2mhtiD7jj9TXExcQypjdNAxKVFyIi1S9tE0~_mqLa2EFpOuzxKcZloPllsNHjNnqzD9HmBA4hEv7SsEyPYEidCBvjZEaDyfRyzefFfolv0lAHM&referer=https%3A%2F%2Fwww.example.com.au%2F&s=6522&b=978936&dm=cm",
datadomeCookie: "datadome=VYUWrgJ9ap4zmXq8Mgbp...64emvUPeON45z"
}
});

const result = await client.Solve(datadomeRequest);
console.log("Solution:", result);
});
Show code (Node.js)
// https://github.com/ZennoLab/capmonstercloud-client-js

import { CapMonsterCloudClientFactory, ClientOptions, DataDomeRequest } from '@zennolab_com/capmonstercloud-client';

const API_KEY = "YOUR_API_KEY"; // Specify your CapMonster Cloud API key

async function solveDataDome() {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);

// Optionally, you can check the balance
const balance = await client.getBalance();
console.log("Balance:", balance);

// DataDome can only be solved with your own proxies
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};

const datadomeRequest = new DataDomeRequest({
_class: 'DataDome',
websiteURL: "https://example.com/", // URL of the captcha page
userAgent: "userAgentPlaceholder",
proxy,
metadata: {
captchaUrl: "https://geo.captcha-delivery.com/interstitial/?initialCid=AHrlqAAAAAMA9UvsL58YLqIAXNLFPg%3D%3D&hash=C0705ACD75EBF650A07FF8291D3528&cid=7sfa5xUfDrR4bQTp1c2mhtiD7jj9TXExcQypjdNAxKVFyIi1S9tE0~_mqLa2EFpOuzxKcZloPllsNHjNnqzD9HmBA4hEv7SsEyPYEidCBvjZEaDyfRyzefFfolv0lAHM&referer=https%3A%2F%2Fwww.example.com.au%2F&s=6522&b=978936&dm=cm",
datadomeCookie: "datadome=VYUWrgJ9ap4zmXq8Mgbp...64emvUPeON45z"
}
});

const result = await client.Solve(datadomeRequest);
console.log("Solution:", result);
}

solveDataDome().catch(console.error);