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).


datadomeVersion (inside metadata)<string>optional

DataDome solving method version. If set to "new", the updated solving method is used with support for both i.js and c.js scripts (see details below). If the parameter is not specified, the legacy solving method is applied, which supports only i.js.


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

During page loading, DataDome may use one of two scripts: c.js or i.js. 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",
"datadomeVersion": "new"
},
"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);