A JavaScript library with a high-level API for controlling Chrome or Firefox over DevTools Protocol or WebDriver BiDi, headless by default.
go-rod/rod
A Go library that drives Chrome through the DevTools Protocol for web automation and scraping, with auto-waiting and browser download.
- Stars
- 7,136
- Forks
- 489
- Open issues
- 216
- Last commit
- 3 months ago
What is it?
Rod is a high-level driver built directly on the Chrome DevTools Protocol, aimed at web automation and scraping in Go. It offers a chained, context-based API so long-running tasks can be easily timed out or cancelled, and elements are waited on automatically before actions run.
Beyond basic control, Rod includes higher-level helpers such as WaitStable, WaitRequestIdle, HijackRequests and WaitDownload. It can correctly handle nested iframes and shadow DOMs, and it can find or download a browser automatically through its launcher package. The library is documented as thread-safe, and its low-level packages can be used to build custom tooling.
Rod's maintainers note 100% test coverage enforced in CI, and a leakless mechanism is used so that a crash does not leave browser processes behind. Documentation, an API reference and a Chinese API doc are provided.
Key features
- 01Chained context API for setting timeouts and cancelling long-running tasks.
- 02Automatically waits for elements to be ready before acting on them.
- 03Finds or downloads a browser automatically via the launcher package.
- 04Helpers for request hijacking, download waiting and stable-page detection.
- 05Handles nested iframes and shadow DOMs.
- 06Avoids leftover browser processes after a crash.
Use cases
- Scraping data from JavaScript-heavy websites in a Go service.
- Writing end-to-end browser tests in Go.
- Automating repetitive web workflows such as form filling or downloads.
- Building custom browser automation tools on top of the low-level CDP packages.
In collections
Topics
FAQ
- What is rod?
- A Go library that drives Chrome through the DevTools Protocol for web automation and scraping, with auto-waiting and browser download. Rod is a high-level driver built directly on the Chrome DevTools Protocol, aimed at web automation and scraping in Go. It offers a chained, context-based API so long-running tasks can be easily timed out or cancelled, and elements are waited on automatically before actions run.
- Is rod free to use? What license does it have?
- rod is open source under the MIT license. Check the license terms before using it in commercial products.
- Is rod still maintained?
- Updated within 6 months. The last commit to rod was on Aug 11, 2026.
- What can I use rod for?
- Scraping data from JavaScript-heavy websites in a Go service. Writing end-to-end browser tests in Go. Automating repetitive web workflows such as form filling or downloads. Building custom browser automation tools on top of the low-level CDP packages.
- Where can I get rod?
- The source code and installation instructions are on GitHub: https://github.com/go-rod/rod
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Go HTTP server that gives AI agents token-efficient control over Chrome, with multi-instance orchestration and a live dashboard.
A small Rust CLI that drives a real Chrome browser over the Chrome DevTools Protocol, designed for shell-based coding agents.
A headless browser written in Zig from scratch for AI agents and automation, with CDP and WebDriver BiDi servers.
An Agent Skill that gives local AI agents like Claude Code full web access via tiered tool routing, a CDP browser proxy, and per-site experience notes.
An AI-native browser engine for autonomous agents, intelligent data extraction and large-scale web automation, with a Rust CLI and MCP support.