DataDomeTagsToken
Generate DataDome tags.js telemetry and get a warmed datadome cookie that raises your session trust score.
Every real browser on a DataDome-protected site quietly POSTs telemetry ("tags") to the site's /js/ endpoint. DataDome scores that telemetry and hands back a datadome cookie carrying the session's trust level. DataDomeTagsToken produces that telemetry for you and returns the resulting cookie.
This is not a challenge solver
Tags are never served in a block page. If you are already looking at a 403, this is the wrong task. Use
DataDomeInterstitialToken for a device check (rt:'i' / i.js) or
DataDomeSliderToken for a puzzle (rt:'c' / c.js).
Finding the parameters
Load the protected page in a browser with DevTools open:
ddjskeyreads fromwindow.ddjskeyin the console. It is static per site.ddoptionsreads fromwindow.ddoptions. Pass the object through as-is; it carries the site's DataDome client config.datadomeJsUrlis the tags script the page loads, usuallyhttps://js.datadome.co/tags.js. Some sites serve it from a custom domain, so read it off the page rather than assuming.
Where it fits
Post tags before you start hitting the protected endpoints, then keep the returned cookie in your jar. A warm session gets challenged less often, and when a challenge does appear, the warmed cookie goes into the challenge link's cid parameter, so the slider or interstitial solve continues that session rather than starting cold.
Sticky proxy, matching User-Agent
A proxy is required and the cookie is bound to its exit IP. Keep the same proxy and User-Agent across the tags call and every request that replays the cookie.
If the cookie does not help
A tags cookie that never improves your success rate usually means the site needs a per-site configuration on the provider's side rather than a different request. Confirm the block you are getting is not actually a challenge page first, then contact the provider.
Supported Providers
| Provider | Price per 1,000 | Routing |
|---|---|---|
| $1.00 |
Request Schema
| Field | Type | Required | Description |
|---|---|---|---|
clientKey* | string | Yes | Your API key. Create one in the AnySolver dashboard. Example: |
task* | object | Yes | The task body. Required fields depend on the task type. See Tasks for per-task schemas. View task properties |
settings | object | No | Per-request settings for routing, auto retry, auto fallback, and proxy behavior. See Routing Strategies. |
provider | No | Specific provider to use. If omitted, automatic routing selects the best provider. Example: | |
selectionMode | No | Routing strategy for this request. Overrides the API key default. See Routing Strategies. Example: | |
keyPoolMode | No | Which provider key pool to use: Example: |
Task Object Properties
The task field accepts an object with the following properties:
| Field | Type | Required | Description |
|---|---|---|---|
type* | Yes | ||
websiteURL* | URL | Yes | Full URL of the page where the CAPTCHA is displayed. Example: |
datadomeJsUrl* | string | Yes | URL of the DataDome tags.js script the page loads. Example: |
ddjskey* | string | Yes | The DataDome JS key (ddjskey) configured for the site. Example: |
ddoptions* | Record<string, unknown> | Yes | DataDome client options (ddoptions) captured from the page. Example: |
proxy* | string | object | Yes |
Optional fields are not guaranteed across providers
Response Schema
| Field | Type | Required | Description |
|---|---|---|---|
status* | Yes | Task status: "processing", "ready", or "failed". Example: | |
errorId* | Yes | 0 = success, 1 = external error, 2 = internal error. Example: | |
taskId | string | No | Unique identifier returned when the task was created. Example: |
errorCode | No | Machine-readable error code. Example: | |
errorDescription | string | No | Human-readable error message with resolution hints. Example: |
cost | number | No | Actual cost charged for this task in USD. Example: |
taskType | No | The type of CAPTCHA task to solve. Example: | |
provider | No | Specific provider to use. If omitted, automatic routing selects the best provider. Example: | |
solution | object | No |
Solution Object Properties
The solution field contains an object with the following properties:
| Field | Type | Required | Description |
|---|---|---|---|
datadome* | string | Yes | The solved DataDome cookie value to replay on the target. Example: |
userAgent* | string | Yes | User-Agent string used during solving (if applicable). Example: |
raw* | Record<string, unknown> | Yes | Raw provider response data for advanced use cases. |