Pydoll
Python library that automates Chromium browsers over the Chrome DevTools Protocol without a WebDriver, with humanized input and fingerprint injection.
At a Glance
Pydoll core library released under the MIT License; free to use in personal or commercial projects.
Engagement
Available On
Alternatives
Listed Oct 2026
About Pydoll
Pydoll is an open-source Python library from autoscrape-labs for automating Chrome or Edge directly over the Chrome DevTools Protocol. It offers both synchronous and asynchronous APIs, and it is used for scraping data, testing web applications, and automating real browser workflows. The project is MIT licensed and its latest listed release is 3.0.0.
What It Is
Pydoll drives the Chrome or Edge browser already installed on the machine, so there is no WebDriver binary, no driver version matching, and no browser download. Scripts find elements by tag, name, text or id, then click, type, scroll and navigate. Async code imports from pydoll, and blocking code imports from pydoll.sync with the same names and methods.
Stealth and Humanized Behavior
Because there is no WebDriver layer, the usual markers such as navigator.webdriver are absent. Passing humanize=True makes mouse movement follow Bezier curves with realistic timing, and typing uses a variable rhythm. tab.apply_fingerprint() overrides User-Agent, Client Hints, navigator, WebGL, canvas, screen, fonts, timezone and locale as one consistent identity. Pydoll does not ship fingerprint profiles; users supply their own. The project also detects and clicks Cloudflare Turnstile widgets. The docs state that this is not a guaranteed bypass and that success depends on IP reputation and profile consistency.
Data Extraction and Network Control
Users declare a Pydantic-based ExtractionModel with CSS or XPath selectors and call tab.extract_all() to get typed, validated objects. Network features include request interception, traffic monitoring, HAR 1.2 recording, and authenticated HTTP requests that inherit the browser session. Other documented capabilities:
- Shadow DOM support, including closed roots
- Cross-origin iframes
- Page bundles saved as zip files
- Multi-tab concurrency with asyncio
- Browser contexts and remote connections
- A retry decorator with exponential backoff
Playwright Compatibility
An existing Playwright script can run on Pydoll by changing one import to pydoll.playwright.sync_api or pydoll.playwright.async_api. Locators, get_by_role, auto-waiting, routes, dialogs and downloads keep their Playwright semantics. expect() assertions, fixtures, tracing and the test runner are out of scope.
Current Status
The README says Pydoll 3 added the synchronous API, the Playwright layer and new waiting methods, along with some breaking changes covered in an upgrade guide. The maintainer notes the project is maintained by one person, and that Firefox support is planned once the repository reaches 10k stars.
Community Discussions
Be the first to start a conversation about Pydoll
Share your experience with Pydoll, ask questions, or help others learn from your insights.
Pricing
Open Source (MIT)
Pydoll core library released under the MIT License; free to use in personal or commercial projects.
- MIT licensed
- Direct CDP connection, no WebDriver binary
- Fingerprint injection via apply_fingerprint()
- Humanized interactions
- Sync and async API
Capabilities
Key Features
- Direct Chrome DevTools Protocol connection with no WebDriver
- Synchronous and asynchronous APIs
- Humanized mouse movement and typing
- Fingerprint injection via apply_fingerprint()
- Cloudflare Turnstile detection and click handling
- Playwright-compatible layer via one import change
- Typed structured extraction with Pydantic models
- Network interception and monitoring
- HAR 1.2 network recording
- Shadow DOM and cross-origin iframe support
- Page bundle export
- Hybrid UI and API requests inheriting the browser session
- Concurrent multi-tab and browser context automation
- Retry decorator with exponential backoff
