pychrome
A Python Package for the Google Chrome Dev Protocol
What it is and what it does
Pychrome is a Python client for the Chrome DevTools Protocol, enabling programmatic control of a running Chrome browser instance. It lets you create tabs, navigate to URLs, intercept network requests, and respond to browser events by connecting to Chrome's remote debugging port. The package wraps the protocol's complexity into a Python API, so you can write automation scripts without manually constructing WebSocket messages.
Typical use involves starting Chrome with `--remote-debugging-port=9222`, instantiating a Browser object pointing to that port, creating or reusing tabs, and then calling protocol methods (like `Page.navigate` or `Network.enable`) or registering event listeners. The package handles the WebSocket communication and event dispatch internally. It's useful for testing, scraping, or any scenario where you need to drive a real browser from Python code.
Use it for:
- Automated testing of web applications by navigating pages and checking network requests or DOM state.
- Web scraping with JavaScript execution, where you need a real browser to render dynamic content.
- Monitoring and logging network traffic from a browser session for debugging or analytics.
- Headless browser automation for CI/CD pipelines using Docker or system Chrome with remote debugging.
- Building browser bots that interact with web pages programmatically without a GUI.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Pychrome provides a Python interface to control Google Chrome via the Chrome DevTools Protocol, allowing you to automate browser interactions, navigate pages, and listen to network events programmatically.
Yes, if you need Chrome automation and can tolerate dormant maintenance. The package is stable and has no known vulnerabilities, but it is no longer actively maintained (last release July 2023). Install it only if you are comfortable with potential incompatibilities as Chrome and its protocol evolve, or if you plan to fork/patch it yourself. For new projects requiring active support, consider alternatives that are actively maintained.
Install
pychrome on PyPI
pip
pip install pychromeuv
uv add pychromepoetry
poetry add pychromeInstalling pychrome
Before you install
Low install friction with three common dependencies (click, websocket-client, requests). The package is dormant—last release was 2023-07-10, over a year ago—so expect no active maintenance or updates to address new Chrome protocol versions.
License in practice
BSD license is permissive, allowing commercial and private use with minimal restrictions, making it safe to adopt from a licensing perspective.
Quickstart
pip install pychrome
import pychrome
browser = pychrome.Browser(url="http://127.0.0.1:9222")
tab = browser.new_tab()
tab.start()
tab.Page.navigate(url="https://example.com", _timeout=5)
tab.wait(5)
tab.stop()
browser.close_tab(tab)
Chrome must be running with remote debugging enabled (e.g., `google-chrome --remote-debugging-port=9222`) before pychrome can connect.
Verify before relying
- Whether the package works with recent Chrome versions and the current Chrome DevTools Protocol specification.
- Compatibility with Python versions beyond 3.6, given classifiers list only up to 3.6 and the package is no longer maintained.
Package facts
| License | BSD license (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — click, websocket-client, requests |
| Maintenance | dormant — 1,131 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 355,875/month — #7,287 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pychrome-0.2.4-py2.py3-none-any.whl
Keywords: pychrome
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
choreographerChoreographer provides remote control of…
unclear · top 5,000 on PyPI
mycdpMyCDP provides autogenerated Chrome DevTools…
permissive · top 15,000 on PyPI
nokapnokap captures screenshots and PDFs from web…
permissive · top 15,000 on PyPI
cdp-useGenerates type-safe Python bindings for the…
permissive · top 5,000 on PyPI
pydoll-pythonPydoll automates Chromium-based browsers via…
unclear · top 15,000 on PyPI
pyppeteerAutomates headless Chrome/Chromium browser…
permissive · top 5,000 on PyPI
browser-harnessConnects an LLM agent directly to a real…
permissive · top 5,000 on PyPI
seleniumSelenium provides Python bindings to automate…
permissive · top 1,000 on PyPI
zendriverZendriver is an async-first web automation…
agpl · top 15,000 on PyPI
PyChromecastCommunicate with Google Chromecast devices over…
permissive · top 15,000 on PyPI