Playwright SDK for bypassing DataDome and PerimeterX anti-bot protection.
ParallaxAPIs Playwright SDK provides seamless browser automation without anti-bot barriers. While browser automation is required, we handle all the complexity of bypassing DataDome and PerimeterX protection systems automatically, so you can focus on your automation logic.
What We Solve:
- β DataDome - Slider captchas, interstitial pages, automatic cookie injection
- β PerimeterX - Automatic cookie generation and injection (_px3), challenge solving
Key Benefits:
- β‘ Seamless Integration - Effortlessly plug in handlers that work out of the box with your existing Playwright setup
- π Best of Both Worlds - Bridge between browser automation and request-based anti-bot solutions
- π§ Simple API - Clean interface with comprehensive documentation
- π Full Browser Context - Real browser environment for JavaScript-heavy sites
- βοΈ Flexible Configuration - Custom browser options, contexts, and proxy settings
- πͺ Automatic Cookie Handling - Set it and forget it - we inject cookies seamlessly
- π 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
npm install parallaxapis-sdk-playwrightInitialization methods within the SDK will establish a browser environment and configure the necessary solvers. Once you've created these components with our SDK, you're fully prepared to proceed.
import { PerimeterxHandler } from "parallaxapis-sdk-playwright";
async function main() {
const [page, browser] = await PerimeterxHandler.init({
apiKey: "PX-KEY",
apiHost: "parallaxhost.com", //optional
proxy: `http://user:password@host:port`,
proxyRegion: "eu",
region: "com",
site: "website",
websiteUrl: "https://www.website.com/",
disableLogging: true, // Optional: disable SDK logging
});
await page.goto("https://www.website.com/");
/*
You can use your browser solution however you want, ParallaxAPIs
will handle the rest for you.
*/
await browser.close();
}
main().catch(console.error);Additionally, you have the flexibility to provide your own browser configuration and context options as needed.
import { PerimeterxHandler } from "parallaxapis-sdk-playwright";
async function main() {
const [page, browser] = await PerimeterxHandler.init(
{
apiKey: "PX-KEY",
apiHost: "parallaxhost.com", //optional
proxy: `http://user:password@host:port`,
proxyRegion: "eu",
region: "com",
site: "website",
websiteUrl: "https://www.website.com/",
},
{
browserLaunchOptions: {
executablePath: "/home/user/chrome/executable",
// ...... More options
},
contextLaunchOptions: {
isMobile: true,
// ...... More options
},
},
);
await page.goto("https://www.website.com/");
/*
You can use your browser solution however you want, ParallaxAPIs
will handle the rest for you.
*/
await browser.close();
}
main().catch(console.error);You can configure SDK-level settings using the sdkConfig option in the initialization config. This allows you to customize request timeouts and use custom dispatchers.
import { PerimeterxHandler } from 'parallaxapis-sdk-playwright';
import { ProxyAgent } from 'undici';
async function main() {
const [page, browser] = await PerimeterxHandler.init({
apiKey: "PX-KEY",
apiHost: "parallaxhost.com", //optional
proxy: `http://user:password@host:port`,
proxyRegion: "eu",
region: "com",
site: "website",
websiteUrl: "https://www.website.com/",
sdkConfig: {
timeout: 30000, // Request timeout in milliseconds (optional)
bodyTimeout: 10000, // Body timeout in milliseconds (optional)
dispatcher: new ProxyAgent('http://custom-proxy:8080') // Custom proxy dispatcher (optional)
}
})
await page.goto('https://www.website.com/');
...
await browser.close();
}
main().catch(console.error);Core Options:
- disableLogging (optional): Set to
trueto disable SDK logging output (default:false)
SDK Config Options:
- timeout (optional): Maximum time in milliseconds for the entire request to complete
- bodyTimeout (optional): Maximum time in milliseconds to wait for the response body
- dispatcher (optional): Custom undici
Dispatcherinstance for advanced HTTP client configurations (connection pooling, pipelining, etc.)
import { DatadomeHandler } from "parallaxapis-sdk-playwright";
async function main() {
const [page, browser] = await DatadomeHandler.init({
apiKey: "DD-KEY",
apiHost: "parallaxhost.com", //optional
proxy: `http://user:password@host:port`,
proxyRegion: "eu",
region: "com",
site: "website",
disableLogging: true, // Optional: disable SDK logging
});
await page.goto("https://www.website.com/");
/*
You can use your browser solution however you want, ParallaxAPIs
will handle the rest for you.
*/
await browser.close();
}
main().catch(console.error);The system supports providing custom browser implementations and context options tailored to your requirements.
import { DatadomeHandler } from "parallaxapis-sdk-playwright";
async function main() {
const [page, browser] = await DatadomeHandler.init(
{
apiKey: "DD-KEY",
apiHost: "parallaxhost.com", //optional
proxy: `http://user:password@host:port`,
proxyRegion: "eu",
region: "com",
site: "website",
},
{
browserLaunchOptions: {
executablePath: "/home/user/chrome/executable",
// ...... More options
},
contextLaunchOptions: {
isMobile: true,
// ...... More options
},
},
);
await page.goto("https://www.website.com/");
/*
You can use your browser solution however you want, ParallaxAPIs
will handle the rest for you.
*/
await browser.close();
}
main().catch(console.error);import { DatadomeHandler } from 'parallaxapis-sdk-playwright';
import { Agent } from 'undici';
async function main() {
const [page, browser] = await DatadomeHandler.init({
apiKey: "DD-KEY",
apiHost: "parallaxhost.com", //optional
proxy: `http://user:password@host:port`,
proxyRegion: "eu",
region: "com",
site: "website",
sdkConfig: {
timeout: 30000, // Request timeout in milliseconds
bodyTimeout: 10000, // Body timeout in milliseconds
dispatcher: new Agent({
connections: 100,
pipelining: 10
})
}
}, {
browserLaunchOptions: {
executablePath: "/home/user/chrome/executable"
},
contextLaunchOptions: {
isMobile: true
}
})
await page.goto('https://www.website.com/');
...
await browser.close();
}
main().catch(console.error);- 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 β’ Playwright anti-bot β’ Browser automation β’ Playwright web scraping β’ DataDome Playwright SDK β’ PerimeterX Playwright SDK β’ Automated browser bypass β’ Playwright CAPTCHA solver β’ Browser fingerprinting bypass β’ Headless browser anti-bot β’ Playwright automation β’ Challenge solver Playwright β’ Browser-based bypass β’ Playwright bot detection
