skillfed

zendriver

A blazing fast, async-first, undetectable webscraping/web automation framework

zendriver v0.15.5 119.2K downloads/30d#12,084 on PyPI
AGPL license GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this… (full text in the JSON record) Active released

What it is and what it does

Zendriver is a Python web automation library built on Chrome DevTools Protocol (CDP) rather than Selenium/WebDriver. It provides an async-first API for visiting websites, scraping content, executing JavaScript, and taking screenshots using a real Chrome browser. The package is a maintained fork of nodriver, created to incorporate unmerged bugfixes and enable community contributions.

The library targets developers who need browser automation with lower detection risk and async support. It handles element lookup by selector or text (including iframe content), automatic cookie and profile management, and includes Docker support for containerized deployments. Dependencies include asyncio-atexit, deprecated, emoji, grapheme, mss, and websockets. It requires Python 3.10 or later and a system Chrome/Chromium installation.

Use it for:

  • Scrape JavaScript-heavy websites where static HTTP requests fail or return incomplete content.
  • Automate login flows and session management by saving and reloading cookies across runs.
  • Test web applications by simulating user interactions and verifying rendered output.
  • Extract data from sites with anti-bot detection that blocks Selenium/WebDriver.
  • Run browser automation in Docker containers with GPU-accelerated Chrome.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Zendriver is an async-first web automation framework using Chrome DevTools Protocol to scrape content, run JavaScript, and interact with websites in a real browser without Selenium or WebDriver.

Yes, with conditions. Install if you need async browser automation with lower detection risk and can accept AGPL v3 licensing constraints. The low install friction, active maintenance, and zero known vulnerabilities are strong signals. However, Alpha status means the API may change; verify that the current feature set and stability match your production requirements before committing to it in a long-lived project.

Install

zendriver on PyPI

pip

pip install zendriver

uv

uv add zendriver

poetry

poetry add zendriver

Installing zendriver

Before you install

Low install friction with a pure-Python wheel and six runtime dependencies. Actively maintained with a release 30 days ago. Marked as Alpha status, so expect ongoing API changes.

License in practice

Licensed under GNU AGPL v3, which requires that if you modify zendriver or run it as a network service, you must make your modified source code available to users. This is a copyleft obligation stricter than permissive licenses; internal-only use is not restricted.

Quickstart

import asyncio
import zendriver as zd

async def main():
    browser = await zd.start()
    page = await browser.get("https://example.com")
    await page.save_screenshot("example.png")
    await browser.stop()

asyncio.run(main())

Requires Chrome/Chromium browser installed on the system; Python 3.10 or later.

Verify before relying

  • Actual detection evasion effectiveness against specific anti-bot solutions (claimed as 'almost impossible to detect').
  • Performance benchmarks comparing to Selenium/WebDriver to verify 'much faster' claim.
  • Stability and API maturity given Alpha development status and recent fork from nodriver.

Package facts

License GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this… (full text in the JSON record) (agpl)
Python support supports the current Python release (>=3.10)
Install friction low — pure-Python wheel
Runtime dependencies 6 — asyncio-atexit, deprecated, emoji, grapheme, mss, websockets
Maintenance actively maintained — 30 days since the last release
First released
Downloads 119,167/month — #12,084 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: zendriver-0.15.5-py3-none-any.whl

Development Status :: 3 - AlphaIntended Audience :: DevelopersLicense :: OSI Approved :: GNU Affero General Public License v3Programming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Topic :: Internet :: WWW/HTTP :: Browsers

Tags

web scraping automationbrowser automation pythonchrome devtools protocolasync web automationundetectable web scrapingjavascript execution browserheadless browser alternative
browser-automationweb-scrapingasync-first

More Browsers packages