DataDome CAPTCHA Solving Service

Supports invisible verification, slider CAPTCHA, device verification and all DataDome verification modes with intelligent recognition and automatic handling

Active Smart Recognition All Modes Supported
πŸš€ Get Free API Key
Register NoCaptcha.io Now β†’
Professional CAPTCHA Solutions | High Success Rate | Fast Response | 24/7 Support

πŸ”₯ Product Advantages

Why Choose Our DataDome Solution

  • 🌐 Full Mode Support: Supports invisible verification, slider CAPTCHA, device verification and all DataDome verification modes
  • ⚑ Smart Recognition: Automatically identifies verification types without manual judgment
  • πŸ”„ Stable & Reliable: Timely updates to provide stable support for your business
  • 🎯 High Success Rate: Professional algorithm optimization ensures high pass rates

πŸ“‹ DataDome Verification Modes

πŸ” How to Identify DataDome Verification

When you see datadome in cookies, it indicates the presence of DataDome verification. There are three scenarios:

1️⃣ Invisible Verification Mode (Status Code 200)

Characteristics: The target page returns status code 200, and F12 shows an interface ending with /js/ with the following response:

{
  "status": 200,
  "cookie": "datadome=66wPBABk21P4x28BLuVse__8_z141EPJEjbgi1HBvNGBcHmX91OT1Z9Z63G4x_suPlRPQ_tgwljYmI5mWxpmkMJ3pKrcnAVKHZs2ymS_2O4nM5wEblvP~~nK3orSol0W; Max-Age=31536000; Domain=.soundcloud.com; Path=/; Secure; SameSite=Lax"
}

Handling: Must pass the js_url parameter, and the interface will return a did parameter for subsequent verification

Invisible Verification Example

2️⃣ Device Verification Mode (Status Code 403)

Characteristics: Direct redirect to device verification page or redirect after slider verification

Handling: Set interstitial: true parameter

Device Verification Example

3️⃣ Slider CAPTCHA Mode (Status Code 403)

Characteristics: Direct redirect to slider verification page

Slider Verification Example

πŸ”„ Verification Flow Example

// Request target page
const response = await fetch(href);

if (response.status === 200) {
    // Invisible verification mode
    // Need to pass js_url and js_key parameters
} else if (response.status === 403) {
    // CAPTCHA mode
    // Set interstitial: true to handle all verification types
}

πŸ”— API Information

Request URL (POST)

Version Type API Endpoint
Universal http://api.nocaptcha.io/api/wanda/datadome/universal

Request Headers

Parameter Description Required
User-Token User token, get from dashboard βœ…
Content-Type application/json βœ…
Developer-Id Developer ID for developer users, string from invite link (e.g., xxx/register?c=abcdef, then abcdef is Developer ID) ❌

POST Parameters (JSON Format)

Parameter Type Description Required
href String 🚨Target page URL that triggers DataDome verification βœ…
proxy String Proxy address, recommend overseas proxy, format: ip:port or usr:pwd@ip:port βœ…
js_url String Required for JS mode, interface ending with /js/ that returns datadome cookie ❌
js_key String Required for JS mode, search for ddjskey value in F12 ❌
captcha_url String CAPTCHA URL triggered by POST interface ❌
interstitial Boolean Whether to trigger device verification mode, default false ❌
user_agent String Custom User-Agent, must be consistent ❌
did String Fingerprint ID returned by JS mode, required for subsequent verification ❌
cookies String Current page cookies ❌
timeout Integer Verification timeout in seconds ❌

πŸ“€ Response Format

Parameter Type Description
status Integer Call status: 1=success, 0=failure
msg String Call result description
id String Unique request ID (for record query)
data.datadome String Datadome cookie returned upon successful verification
cost String Verification time (milliseconds)

Response Example

{
  "status": 1,
  "msg": "Verification successful",
  "id": "639e056b-49bd-4895-94ab-68d59e00873e",
  "cost": "4635.12ms",
  "data": {
    "datadome": "HYvnTVSxppxMMrSk_Z_MOHoSKkQRd2ppQr~pOeo2nDlL7Lg7QBwb2ew5OYQxSSSH1CR9NzO78A25KHM7kLV6OydtvwvJZ773Jil1mPC7ZoFSQQDrDYVeHZtjq_BWUai6"
  }
}

πŸ’» Code Examples

CURL Command

curl -L 'http://api.nocaptcha.io/api/wanda/datadome/universal' \
 -H 'User-Token: xxx' \
 -H 'Developer-Id: hqLmMS' \
 -H 'Content-Type: application/json' \
 --data-raw '{"href": "https://soundcloud.com/", "js_url": "https://dwt.soundcloud.com/js/", "proxy": "user:pass@ip:port"}'

Python Examples

Install Dependencies

pip install -U pynocaptcha -i https://pypi.python.org/simple

Basic Usage

from pynocaptcha import DatadomeCracker

# DataDome CAPTCHA solving
cracker = DatadomeCracker(
    user_token="your_user_token_here",
    developer_id="hqLmMS",  # Developer ID
    href="https://soundcloud.com/",
    js_url="https://dwt.soundcloud.com/js/",
    proxy="user:pass@ip:port",
    debug=True
)
result = cracker.crack()
print(f"Result: {result}")

Complete Flow Example

import requests
from pynocaptcha import DatadomeCracker

def handle_datadome_verification(href, user_agent, proxy):
    """Complete DataDome verification handling flow"""
    
    # 1. First request target page to determine verification type
    response = requests.get(href, headers={"User-Agent": user_agent})
    
    if response.status_code == 200:
        # Invisible verification mode
        cracker = DatadomeCracker(
            user_token="your_user_token_here",
            developer_id="hqLmMS",
            href=href,
            user_agent=user_agent,
            js_url="https://example.com/js/",  # Get from F12
            js_key="E6EAF460AA2A8322D66B42C85B62F9",  # Search ddjskey
            proxy=proxy
        )
    elif response.status_code == 403:
        # CAPTCHA mode
        cracker = DatadomeCracker(
            user_token="your_user_token_here",
            developer_id="hqLmMS",
            href=href,
            user_agent=user_agent,
            interstitial=True,  # Handle all verification types
            proxy=proxy
        )
    
    return cracker.crack()

# Usage example
result = handle_datadome_verification(
    href="https://www.vinted.com/",
    user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    proxy="user:pass@ip:port"
)
print(f"Verification result: {result}")