Built from scratch with zero configuration complexity, Pydoll connects directly to the Chrome DevTools Protocol. No WebDrivers, no setup headaches - just async performance, intuitive API, and full type safety.
Zero Configuration
Install and automate immediately. No drivers, no PATH variables, no setup hell.
Async by Design
Built for concurrent automation with true async/await support from day one.
Full Type Safety
Complete type annotations. Your IDE knows exactly what each method returns.
Browser-context requests
Use tab.request to automatically inherit cookies, CORS and session state.
Intuitive API
Element finding feels like natural language. Simple, readable automation code.
Event-driven automation
React to page, network and runtime events …
Built from scratch with zero configuration complexity, Pydoll connects directly to the Chrome DevTools Protocol. No WebDrivers, no setup headaches - just async performance, intuitive API, and full type safety.
Zero Configuration
Install and automate immediately. No drivers, no PATH variables, no setup hell.
Async by Design
Built for concurrent automation with true async/await support from day one.
Full Type Safety
Complete type annotations. Your IDE knows exactly what each method returns.
Browser-context requests
Use tab.request to automatically inherit cookies, CORS and session state.
Intuitive API
Element finding feels like natural language. Simple, readable automation code.
Event-driven automation
React to page, network and runtime events in real-time.
Help us reach 10k stars
🚀 Your star means more features, more contributors, and a stronger community.
0 / 10,000 0%
Latest stargazers
Install and get started in seconds
No complex setup. Install, import and automate.
pip install pydoll-python
Quick example:
import asyncio
from pydoll.browser import Chrome
async def main():
async with Chrome() as browser:
tab = await browser.start()
await tab.go_to('https://google.com')
search_box = await tab.find(name='q')
await search_box.type_text('Pydoll')
await search_box.press_keyboard_key('Enter')
asyncio.run(main())
Zero to automation in seconds
Install once, automate forever. No drivers, no config, no headaches.
Async by design
Built for concurrent automation with true async/await support
Type safe
Complete type annotations - your IDE knows exactly what each method returns
CDP direct
No WebDrivers, no compatibility issues - direct Chrome connection
Intuitive API
Element finding feels like natural language - simple and readable
Frequently asked questions
Top questions about Pydoll, its features and use cases.
What is Pydoll and why doesn’t it use WebDriver?
Pydoll is a Python library that controls the browser via the Chrome DevTools Protocol (CDP), eliminating WebDrivers. This reduces layers, improves reliability and gives direct access to advanced capabilities like page events, network interception and JavaScript execution in the real tab context.
How does Pydoll’s type safety work in practice?
Every method is fully typed with precise return annotations. Your IDE knows that await tab.find(id='btn') returns WebElement, find_all=True returns list[WebElement], and raise_exc=False returns WebElement | None. This eliminates guesswork and catches errors before runtime.
What are “browser‑context requests” and when to use them?
With tab.request you perform HTTP in the same context as the tab: cookies, session, headers and CORS are automatically inherited. Ideal for hybrid automation: log in via UI and then call the app’s authenticated APIs with simplicity and speed.
What makes Pydoll’s setup so simple compared to other tools?
Just pip install pydoll-python and you’re ready. No WebDriver downloads, no PATH configuration, no version matching hell. Pydoll connects directly to Chrome via CDP, eliminating the entire driver layer that causes most automation headaches.
How does concurrent automation work with multiple tabs?
Pydoll is async-first, so you can run multiple tabs simultaneously with asyncio.gather. Create tabs with await browser.new_tab(), then process them in parallel. Each tab maintains its own session and state, giving you true concurrent automation without complexity.
Enjoying Pydoll?
Star it, contribute to the repo or sponsor the development.