Tasks
Updated 8/6/2026
DataDome Solver API
Solve DataDome interstitial and CAPTCHA challenges with the Solverify DataDome Solver API. Create a browser-based task from the triggered DataDome captchaUrl, then retrieve the validated datadome cookie from solution.cookies.
Use this task type after a DataDome challenge URL has been generated by your authorized workflow. The challenge URL, target website, and proxy must represent the same session context.
The DataDome integration follows the standard Solverify task workflow:
- Capture the target
websiteURLand triggered DataDomecaptchaUrl. - Create a
datadometask with the proxy used for the target session. - Store the returned
taskId. - Poll
POST /getTaskResultuntil processing completes. - Read the
datadomecookie and user-agent fromsolution. - Replay the cookie with the same proxy and
solution.useragent.
Default DataDome User-Agent
DataDome tasks do not accept or require a useragent request field. The solver uses this Windows Chrome 146 user-agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36
The completed result returns this value in solution.useragent. Use that exact user-agent and the same proxy when replaying the returned cookie because DataDome cookies are bound to the solved session context.
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
clientKey | string | Yes | Your private Solverify API key. |
task.type | string | Yes | Must be datadome. |
task.websiteURL | string | Yes | Target website URL where the DataDome challenge was triggered. Maximum 2,048 characters. |
task.captchaUrl | string | Yes | Full DataDome challenge URL. Maximum 4,096 characters. |
task.proxyType | string | Yes | Proxy type. Only http is accepted. |
task.proxyAddress | string | Yes | Proxy IP address or hostname. Maximum 256 characters. |
task.proxyPort | string | Yes | Proxy port as a numeric string containing 1 to 5 digits. |
task.proxyLogin | string | No | Username for an authenticated proxy. |
task.proxyPassword | string | No | Password for an authenticated proxy. |
DataDome challenge URLs commonly use the geo.captcha-delivery.com domain and may contain session-specific query parameters. Submit the complete URL without removing or rewriting those parameters.
Create DataDome Task Request
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "datadome",
"websiteURL": "https://accounts.shutterstock.com/login",
"captchaUrl": "https://geo.captcha-delivery.com/interstitial/?initialCid=AHrlqAAAAAMA...",
"proxyType": "http",
"proxyAddress": "1.1.1.1",
"proxyPort": "8080",
"proxyLogin": "username",
"proxyPassword": "password"
}
}
Omit proxyLogin and proxyPassword when the proxy does not require authentication. Do not add a useragent field.
DataDome Solver Code Examples
These examples create a DataDome task and print the returned task ID.
curl --request POST \
--url https://solver.solverify.net/createTask \
--header "Content-Type: application/json" \
--data '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "datadome",
"websiteURL": "https://accounts.shutterstock.com/login",
"captchaUrl": "https://geo.captcha-delivery.com/interstitial/?initialCid=AHrlqAAAAAMA...",
"proxyType": "http",
"proxyAddress": "1.1.1.1",
"proxyPort": "8080"
}
}'
Create Task Response
{
"errorId": 0,
"taskId": "UUID"
}
Completed DataDome Result
{
"errorId": 0,
"status": "completed",
"solution": {
"value": "",
"cookies": {
"datadome": "3qVi5y0ySWd4RyHLMtm"
},
"useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
},
"errorCode": null,
"errorDescription": null
}
Solution Fields
| Field | Description |
|---|---|
cookies.datadome | Validated DataDome cookie returned by the solved browser session. |
useragent | Solver user-agent that must be used when replaying the cookie. |
DataDome Timeout
DataDome tasks can run for up to approximately 210 seconds before timing out internally. Configure an overall polling deadline and stop when the API returns an error.
DataDome API Errors
| Error code | Description |
|---|---|
ERROR_INVALID_REQUEST | The top-level request is missing or contains invalid JSON. |
ERROR_INVALID_TASK | The target URL, DataDome challenge URL, or proxy settings are missing or invalid. |
ERROR_INSUFFICIENT_BALANCE | The account balance is too low to create the task. |
ERROR_NO_CAPACITY | DataDome solver capacity is temporarily unavailable. |
ERROR_TASK_FAILED | The DataDome challenge could not be completed or the proxy was blocked. |
ERROR_TIMEOUT | Solving exceeded the allowed processing time. |
For recovery guidance and every supported response, see Solverify API Error Codes.
Next Steps
After creating a DataDome task, poll the Get Task Result API every 2 to 3 seconds with the returned taskId. Stop polling after completion or failure.
Frequently Asked Questions
What does the DataDome Solver API return?
The completed task returns a validated datadome cookie in solution.cookies and the solver user-agent in solution.useragent.
Do I need to send a user-agent?
No. Do not include useragent in a DataDome task. The solver uses Windows Chrome 146 and returns the exact value with the completed result.
Why must I reuse the same proxy and user-agent?
The datadome cookie is associated with the solved session. Replay it with the same proxy and solution.useragent to preserve that context.
Why is captchaUrl required?
The URL contains the DataDome challenge and session parameters generated for the target request. Submit the complete URL without modifying its query string.
What happens when the proxy is blocked?
The solver cannot produce a usable cookie when DataDome blocks the proxy IP. Use an appropriate proxy with a clean reputation and create a new task.