npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

parallaxapis-sdk-playwright

v1.4.7

Published

ParallaxAPIs SDK

Downloads

195

Readme

ParallaxAPIs SDK - Playwright Library for Bot Protection Bypass (Datadome & PerimeterX)

license MIT Node.js version downloads

Discord

Playwright SDK for bypassing DataDome and PerimeterX anti-bot protection.

📖 Overview

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

🚀 Quick Start

Get started with ParallaxAPIs SDK's in under 5 minutes:

  1. Join our Discord - Connect with our community
  2. Create a ticket - Request your API key
  3. Get your free trial - Start testing immediately
  4. Install the SDK - Choose your preferred language
  5. Solve all anti-bots in seconds - Start bypassing DataDome, PerimeterX & more

📦 Installation

npm install parallaxapis-sdk-playwright

NPM Install Playwright Demo


🧑‍💻 PX Usage

⚡ SDK Initialization and usage

Initialization 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, handler, sdk, browserContext } = 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
    maxApiRetry: 5, // Optional: max retry attempts for API requests (default: 5)
  });

  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);

Checking Usage

You can check your API usage using either the handler or sdk instance:

import { PerimeterxHandler } from "parallaxapis-sdk-playwright";

async function main() {
  const { page, browser, handler, sdk } = 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/",
  });

  // Check usage via handler
  const usage = await handler.checkUsage();
  console.log("Current usage:", usage);

  // Or check usage via SDK directly
  const usageViaSdk = await sdk.checkUsage("website");
  console.log("Current usage:", usageViaSdk);

  await page.goto("https://www.website.com/");

  await browser.close();
}

main().catch(console.error);

Custom browser or context options

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, handler, sdk, browserContext } = 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",
        headless: true,
        args: ["--lang=en-US"]
        // ...... 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);

⚙️ SDK Configuration Options

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, handler, sdk, browserContext } = 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://proxy:port", {
              requestTls: { rejectUnauthorized: false }
            }) // Custom undici dispatcher (optional)
        }
    })

    await page.goto('https://www.website.com/');

    ...

    await browser.close();
}

main().catch(console.error);

Configuration Options

Core Options:

  • disableLogging (optional): Set to true to disable SDK logging output (default: false)
  • maxApiRetry (optional): Maximum number of retry attempts for API requests when solving captchas or generating cookies (default: 5)

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 Dispatcher instance for advanced HTTP client configurations (connection pooling, pipelining, etc.)

🧑‍💻 Datadome Usage

import { DatadomeHandler } from "parallaxapis-sdk-playwright";

async function main() {
  const { page, browser, handler, sdk, browserContext } = 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
    disableTagsGeneration: false,
  });

  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);

Checking Usage

You can check your API usage using either the handler or sdk instance:

import { DatadomeHandler } from "parallaxapis-sdk-playwright";

async function main() {
  const { page, browser, handler, sdk } = await DatadomeHandler.init({
    apiKey: "DD-KEY",
    apiHost: "parallaxhost.com", //optional
    proxy: `http://user:password@host:port`,
    proxyRegion: "eu",
    region: "com",
    site: "website",
  });

  // Check usage via handler
  const usage = await handler.checkUsage();
  console.log("Current usage:", usage);

  // Or check usage via SDK directly
  const usageViaSdk = await sdk.checkUsage("website");
  console.log("Current usage:", usageViaSdk);

  await page.goto("https://www.website.com/");

  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, handler, sdk, browserContext } = 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",
        headless: true,
        args: ["--lang=en-US"]
        // ...... 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);

Datadome with SDK Configuration

import { DatadomeHandler } from 'parallaxapis-sdk-playwright';
import { Agent } from 'undici';

async function main() {
    const { page, browser, handler, sdk, browserContext } = 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);

📚 Documentation & Help

🌟 Contributing

Got feedback or found a bug? Feel free to open an issue or send us a pull request!

🏢 Enterprise

Unlock enterprise-grade performance with custom solutions, expanded limits, and expert support. Contact us to learn more.

📝 License

MIT


🔑 Keywords

DataDome bypassPerimeterX bypassAnti-bot bypassBot detection bypassCAPTCHA solverPlaywright anti-botBrowser automationPlaywright web scrapingDataDome Playwright SDKPerimeterX Playwright SDKAutomated browser bypassPlaywright CAPTCHA solverBrowser fingerprinting bypassHeadless browser anti-botPlaywright automationChallenge solver PlaywrightBrowser-based bypassPlaywright bot detection