Python SDK for bypassing DataDome and PerimeterX anti-bot protection.
ParallaxAPIs provides a request-based solution for bypassing DataDome and PerimeterX anti-bot systems. Instead of relying on slow, resource-heavy browser automation, our API generates valid cookies and tokens in 200-400ms through direct HTTP requests.
What We Solve:
- β DataDome - Slider captchas, interstitial pages, cookie generation, tags payload
- β PerimeterX - Cookie generation (_px3), challenge solver, vid & cts tokens
Key Benefits:
- β‘ Lightning Fast - 200-400ms response times vs 5-10+ seconds for browsers
- π§ Simple Integration - Clean API with comprehensive documentation, no browser management required
- π Highly Scalable - Handle thousands of concurrent requests with minimal resources
- βοΈ Flexible Configuration - Custom timeouts, HTTP clients, and proxy settings
- π° Cost Effective - Lightweight infrastructure, minimal proxy usage
- π Always Updated - We handle all reverse engineering and updates for you
Get started with ParallaxAPIs SDK's in under 5 minutes:
- Join our Discord - Connect with our community
- Create a ticket - Request your API key
- Get your free trial - Start testing immediately
- Install the SDK - Choose your preferred language
- Solve all anti-bots in seconds - Start bypassing DataDome, PerimeterX & more
pip install parallaxapis-sdk-py uv add parallaxapis-sdk-pyfrom parallaxapis_sdk_py.datadome import AsyncDatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig # Basic configuration cfg = SDKConfig( host="host.com", # optional api_key="Key" ) # Advanced configuration with timeout and proxy cfg = SDKConfig( host="host.com", # optional api_key="Key", timeout=60, # Optional: request timeout in seconds (default: 30) proxy="http://user:pass@proxy.example.com:8080", # Optional: proxy URL insecure=True # Optional: configures a client to skip SSL certificate verification ) # Option 1: Context manager (Recommended) - automatic cleanup async with AsyncDatadomeSDK(cfg=cfg) as sdk: # Your code here pass # Option 2: Manual close - remember to call aclose() sdk = AsyncDatadomeSDK(cfg=cfg) try: # Your code here pass finally: await sdk.aclose()from parallaxapis_sdk_py.datadome import DatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig # Basic configuration cfg = SDKConfig( host="host.com", # optional api_key="Key" ) # Advanced configuration with timeout and proxy cfg = SDKConfig( host="host.com", # optional api_key="Key", timeout=60, # Optional: request timeout in seconds (default: 30) proxy="http://user:pass@proxy.example.com:8080" # Optional: proxy URL ) # Option 1: Context manager - automatic cleanup with DatadomeSDK(cfg=cfg) as sdk: # Your code here pass # Option 2: Manual close - call close() when done sdk = DatadomeSDK(cfg=cfg) try: # Your code here pass finally: sdk.close()from parallaxapis_sdk_py.datadome import AsyncDatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGenerateUserAgent cfg = SDKConfig(host="host.com", api_key="Key") async with AsyncDatadomeSDK(cfg=cfg) as sdk: user_agent = await sdk.generate_user_agent(TaskGenerateUserAgent( region="com", site="site", pd="optional" )) print(user_agent)from parallaxapis_sdk_py.datadome import DatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGenerateUserAgent cfg = SDKConfig(host="host.com", api_key="Key") with DatadomeSDK(cfg=cfg) as sdk: user_agent = sdk.generate_user_agent(TaskGenerateUserAgent( region="com", site="site", pd="optional" )) print(user_agent)from parallaxapis_sdk_py.datadome import AsyncDatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig cfg = SDKConfig(host="host.com", api_key="Key") async with AsyncDatadomeSDK(cfg=cfg) as sdk: challenge_url = "https://www.example.com/captcha/?initialCid=initialCid&cid=cid&referer=referer&hash=hash&t=t&s=1&e=e" cookie = "cookie_value" task_data, product_type = sdk.parse_challenge_url(challenge_url, cookie) print(task_data, product_type)from parallaxapis_sdk_py.datadome import DatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig cfg = SDKConfig(host="host.com", api_key="Key") with DatadomeSDK(cfg=cfg) as sdk: challenge_url = "https://www.example.com/captcha/?initialCid=initialCid&cid=cid&referer=referer&hash=hash&t=t&s=s&e=e" cookie = "cookie_value" task_data, product_type = sdk.parse_challenge_url(challenge_url, cookie) print(task_data, product_type)from parallaxapis_sdk_py.datadome import AsyncDatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig cfg = SDKConfig(host="host.com", api_key="Key") async with AsyncDatadomeSDK(cfg=cfg) as sdk: # HTML body containing dd object html_body = "<html><script>dd={'b':'example'}</script></html>" prev_cookie = "cookie_value" # Parse HTML challenge task_data, product_type = sdk.parse_challenge_html( html_body=html_body, datadome_cookie=prev_cookie ) print(task_data, product_type)from parallaxapis_sdk_py.datadome import DatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig cfg = SDKConfig(host="host.com", api_key="Key") with DatadomeSDK(cfg=cfg) as sdk: # HTML body containing dd object html_body = "<html><script>dd={'t':'it','s':123456,'e':'example','cid':'initialCid','b':'optional'}</script></html>" prev_cookie = "cookie_value" # Parse HTML challenge task_data, product_type = sdk.parse_challenge_html( html_body=html_body, datadome_cookie=prev_cookie ) print(task_data, product_type)from parallaxapis_sdk_py.datadome import AsyncDatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGenerateDatadomeCookie cfg = SDKConfig( host="host.com", # Optional api_key="Key", timeout=60, # Optional: custom timeout proxy="http://user:pass@proxy.example.com:8080" # Optional: SDK-level proxy ) async with AsyncDatadomeSDK(cfg=cfg) as sdk: challenge_url = "https://www.example.com/captcha/?initialCid=initialCid&cid=cid&referer=referer&hash=hash&t=t&s=s&e=e" cookie = "cookie_value" task_data, product_type = sdk.parse_challenge_url(challenge_url, cookie) cookie_response = await sdk.generate_cookie(TaskGenerateDatadomeCookie( site="site", region="com", data=task_data, pd=product_type, proxy="http://user:pas@addr:port", # Task-level proxy (for solving) proxyregion="eu" )) print(cookie_response)from parallaxapis_sdk_py.datadome import DatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGenerateDatadomeCookie cfg = SDKConfig( host="host.com", # Optional api_key="Key", timeout=60, # Optional: custom timeout proxy="http://user:pass@proxy.example.com:8080" # Optional: SDK-level proxy ) with DatadomeSDK(cfg=cfg) as sdk: challenge_url = "https://www.example.com/captcha/?initialCid=initialCid&cid=cid&referer=referer&hash=hash&t=t&s=s&e=e" cookie = "cookie_value" task_data, product_type = sdk.parse_challenge_url(challenge_url, cookie) cookie_response = sdk.generate_cookie(TaskGenerateDatadomeCookie( site="site", region="com", data=task_data, pd=product_type, proxy="http://user:pas@addr:port", # Task-level proxy (for solving) proxyregion="eu" )) print(cookie_response)from parallaxapis_sdk_py.datadome import AsyncDatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGenerateDatadomeTagsCookie, GenerateDatadomeTagsCookieData cfg = SDKConfig(host="host.com", api_key="Key") async with AsyncDatadomeSDK(cfg=cfg) as sdk: tags_cookie_response = await sdk.generate_tags_cookie(TaskGenerateDatadomeTagsCookie( site="site", region="com", data=GenerateDatadomeTagsCookieData(cid="your_datadome_cookie_value"), proxy="http://user:pas@addr:port", proxyregion="eu" )) print(tags_cookie_response)from parallaxapis_sdk_py.datadome import DatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGenerateDatadomeTagsCookie, GenerateDatadomeTagsCookieData cfg = SDKConfig(host="host.com", api_key="Key") with DatadomeSDK(cfg=cfg) as sdk: tags_cookie_response = sdk.generate_tags_cookie(TaskGenerateDatadomeTagsCookie( site="site", region="com", data=GenerateDatadomeTagsCookieData(cid="your_datadome_cookie_value"), proxy="http://user:pas@addr:port", proxyregion="eu" )) print(tags_cookie_response)from parallaxapis_sdk_py.datadome import AsyncDatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGenerateDatadomeCookie cfg = SDKConfig(host="host.com", api_key="Key") async with AsyncDatadomeSDK(cfg=cfg) as sdk: # Response body from website (could be HTML or JSON) response_body = "<html>...</html>" prev_cookie = "cookie_value" # Detect if challenge exists and parse it is_blocked, task_data, product_type = sdk.detect_challenge_and_parse( body=response_body, datadome_cookie=prev_cookie ) if is_blocked: # Generate new cookie using the parsed data cookie_resp = await sdk.generate_cookie(TaskGenerateDatadomeCookie( site="site", region="com", data=task_data, pd=product_type, proxy="http://user:pass@addr:port", proxyregion="eu" )) print(cookie_resp)from parallaxapis_sdk_py.datadome import DatadomeSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGenerateDatadomeCookie cfg = SDKConfig(host="host.com", api_key="Key") with DatadomeSDK(cfg=cfg) as sdk: # Response body from website (could be HTML or JSON) response_body = "<html>...</html>" prev_cookie = "cookie_value" # Detect if challenge exists and parse it is_blocked, task_data, product_type = sdk.detect_challenge_and_parse( body=response_body, datadome_cookie=prev_cookie ) if is_blocked: # Generate new cookie using the parsed data cookie_resp = sdk.generate_cookie(TaskGenerateDatadomeCookie( site="site", region="com", data=task_data, pd=product_type, proxy="http://user:pass@addr:port", proxyregion="eu" )) print(cookie_resp)from parallaxapis_sdk_py.perimeterx import AsyncPerimeterxSDK from parallaxapis_sdk_py.sdk import SDKConfig # Basic configuration cfg = SDKConfig( host="host.com", api_key="Key" ) # Advanced configuration with timeout and proxy cfg = SDKConfig( host="host.com", api_key="Key", timeout=60, # Optional: request timeout in seconds (default: 30) proxy="http://user:pass@proxy.example.com:8080" # Optional: proxy URL ) # Option 1: Context manager (Recommended) - automatic cleanup async with AsyncPerimeterxSDK(cfg=cfg) as sdk: # Your code here pass # Option 2: Manual close - remember to call aclose() sdk = AsyncPerimeterxSDK(cfg=cfg) try: # Your code here pass finally: await sdk.aclose()from parallaxapis_sdk_py.perimeterx import PerimeterxSDK from parallaxapis_sdk_py.sdk import SDKConfig # Basic configuration cfg = SDKConfig( host="host.com", api_key="Key" ) # Advanced configuration with timeout and proxy cfg = SDKConfig( host="host.com", api_key="Key", timeout=60, # Optional: request timeout in seconds (default: 30) proxy="http://user:pass@proxy.example.com:8080" # Optional: proxy URL ) # Option 1: Context manager - automatic cleanup with PerimeterxSDK(cfg=cfg) as sdk: # Your code here pass # Option 2: Manual close - call close() when done sdk = PerimeterxSDK(cfg=cfg) try: # Your code here pass finally: sdk.close()from parallaxapis_sdk_py.perimeterx import AsyncPerimeterxSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGeneratePXCookies, TaskGenerateHoldCaptcha cfg = SDKConfig( host="host.com", api_key="Key", timeout=60 # Optional: custom timeout ) async with AsyncPerimeterxSDK(cfg=cfg) as sdk: result = await sdk.generate_cookies(TaskGeneratePXCookies( proxy="http://user:pas@addr:port", proxyregion="eu", region="com", site="site" )) print(result) hold_captcha_result = await sdk.generate_hold_captcha(TaskGenerateHoldCaptcha( proxy="http://user:pas@addr:port", proxyregion="eu", region="com", site="site", data=result['data'], POW_PRO=None )) print(hold_captcha_result)from parallaxapis_sdk_py.perimeterx import PerimeterxSDK from parallaxapis_sdk_py.sdk import SDKConfig from parallaxapis_sdk_py.tasks import TaskGeneratePXCookies, TaskGenerateHoldCaptcha cfg = SDKConfig( host="host.com", api_key="Key", timeout=60 # Optional: custom timeout ) with PerimeterxSDK(cfg=cfg) as sdk: result = sdk.generate_cookies(TaskGeneratePXCookies( proxy="http://user:pas@addr:port", proxyregion="eu", region="com", site="site" )) print(result) hold_captcha_result = sdk.generate_hold_captcha(TaskGenerateHoldCaptcha( proxy="http://user:pas@addr:port", proxyregion="eu", region="com", site="site", data=result['data'], POW_PRO=None )) print(hold_captcha_result)- Full API docs & support: Discord
Got feedback or found a bug? Feel free to open an issue or send us a pull request!
Unlock enterprise-grade performance with custom solutions, expanded limits, and expert support. Contact us to learn more.
MIT
DataDome bypass β’ PerimeterX bypass β’ Anti-bot bypass β’ Bot detection bypass β’ CAPTCHA solver β’ Cookie generator β’ Python web scraping β’ Python bot automation β’ Async Python anti-bot β’ DataDome Python SDK β’ PerimeterX Python SDK β’ Headless browser alternative β’ Request-based bypass β’ Python automation β’ Web scraping Python β’ Bot mitigation bypass β’ Sensor data generation β’ Challenge solver β’ asyncio anti-bot β’ pip anti-bot
