Skip to content

DataDome ​

POST /v1/solve/datadome

Produces the interstitial POST body (plv2 payload and plv3). The caller POSTs data.body to data.post_url.

url alone is enough: the server opens the home page, parses var dd, and fetches the interstitial page and script. Putting interstitial HTML in payload.html skips those two steps.

payload ​

FieldAliasesMeaning
htmlInterstitial HTML. If set, home / interstitial are not fetched
ddThe var dd={...} object from the home page. Parsed from home HTML when html is missing
post_urlpostUrlSubmit URL. Defaults to https://{dd.host}/interstitial/
js_urljsUrlInterstitial script. Prefers ct.captcha-delivery.com/interstitial.*.js from the HTML

A datadome= cookie in the top-level cookie is used as cid. If the cookie is empty, it is taken from the home page Set-Cookie.

Request examples ​

Site only:

json
{
  "url": "https://www.neimanmarcus.com/",
  "timeout": 30000
}

When you already have interstitial HTML / dd, pass them directly:

json
{
  "url": "https://www.neimanmarcus.com/",
  "user_agent": "Mozilla/5.0 ... Chrome/153.0.0.0 ...",
  "timeout": 30000,
  "payload": {
    "html": "<!doctype html>...",
    "dd": { "cid": "...", "hsh": "...", "host": "geo.captcha-delivery.com", "s": 1, "e": "..." },
    "post_url": "https://geo.captcha-delivery.com/interstitial/"
  }
}

data ​

json
{
  "body": "payload=...&plv3=...",
  "payload": "...",
  "plv3": "...",
  "post_url": "https://geo.captcha-delivery.com/interstitial/",
  "cookie": "datadome=...",
  "url": "https://www.neimanmarcus.com/",
  "js_url": "https://ct.captcha-delivery.com/interstitial.1.2.3.js"
}
FieldMeaning
bodyFull application/x-www-form-urlencoded, use as POST body
payloadplv2
plv3May be an empty string
post_urlSubmit URL
js_urlInterstitial script actually run; cached by version

No var dd on the home page → SOLVE_FAILED / no var dd.
No script in the interstitial → no interstitial js.