The stealth-first browser automation library for Python.
No WebDriver, no navigator.webdriver flag, humanized clicks and typing.
Documentation · Getting Started · Features · Support
You have probably watched a scraper work on your machine, then hit a wall of captchas and Cloudflare challenges the moment it ran for real. That wall is what Pydoll is built around. It drives Chrome directly over the DevTools Protocol, so there is no WebDriver binary and no navigator.webdriver flag to give you away, and it clicks, types, and scrolls like a real person. That is often enough to get past the bot protection that stops ordinary automation, all behind an async, fully typed API.
Why Pydoll?
- Fingerprint injection: Make the browser report a fully consistent identity with
tab.apply_fingerprint(): User-Agent, Client Hints,navigator, WebGL, canvas, screen, fonts, timezone and locale, all aligned. The injected overrides survivetoStringand prototype introspection and propagate into Web Workers, so lie-detection checks like CreepJS's don't flag them. - Humanized interactions: Mouse movement along Bezier curves, realistic typing, and scroll physics. Often enough to pass behavioral challenges like Cloudflare Turnstile or reCAPTCHA v3, depending on your browser and IP reputation.
- Zero WebDrivers: A direct CDP connection over WebSocket. No driver binary, no
navigator.webdriverflag, no version-matching headaches. - Async and typed: Built on
asyncio, type-checked withmypy. Full IDE autocompletion and static error checking. - Network control: Intercept requests to block ads/trackers, monitor traffic for API discovery, and make authenticated HTTP requests that inherit the browser session.
- Shadow DOM and iframes: Full support for shadow roots (including closed) and cross-origin iframes. Discover, query, and interact with elements inside them using the same API.
- Structured extraction: Define a Pydantic model, call
tab.extract(), and get typed, validated data back. No manual element-by-element querying.
[!NOTE] A word from the maintainer. Pydoll is currently maintained by a single person, and I'm a bit stretched at the moment, so new releases and replies to issues may take a little longer than usual. To be clear: the project is not dead, and it is not going anywhere. Development continues; it's just moving at a calmer pace for now.
A goal to aim for: once the project reaches 10k stars, I plan to ship Firefox support, a big step that opens up a whole new range of possibilities for the library. Momentum like that is exactly the kind of incentive that makes a feature this large worth taking on, so if you'd like to see it happen, that's the push it needs.
Top Sponsors
|
SerpApi Web Search API for your AI apps. Available in Markdown and JSON for any integration. |
|
IPcook Residential proxies for stealth browser automation: 55M+ IPs in 185+ locations, rotating & sticky sessions, city-level targeting, HTTP & SOCKS5, 99.99% uptime, sub-0.5s responses, pay-as-you-go traffic that never expires. Use WELCOME20 for 20% off.
|
|
The Web Scraping Club The #1 newsletter dedicated to web scraping. Read their full, independent review of Pydoll. |
|
NodeMaven The most efficient proxy provider for web scraping and automation: ZIP targeting, 99.9% uptime, filtered high-quality IPs, no KYC. Use PYDOLL35 for 35% off Mobile & Residential, or PYDOLL40 for 40% off ISP (Static) proxies.
|
|
NiuProxy Rotating residential proxies with a special deal for Pydoll users: 10TB at $0.35/GB or 1TB at $0.50/GB. Use PAY2 for 10% off your recharge.
|
Sponsors
PYDOLL 15% off
|
1GB free via our link |
AI-native testing cloud |
Proxies for automation |
➕ Your logo here
Become a sponsor |
Learn more about our sponsors · Become a sponsor
Installation
pip install pydoll-python
No WebDriver binaries or external dependencies required.
Getting Started
1. Stealthy Automation
The impera




