
A blazing fast, coroutine-first, undetectable web scraping / browser automation library for Kotlin
This project is a Kotlin port of Python library zendriver, built to bring the same simplicity and power of CDP-based automation to the Kotlin and Java/JVM world.
kdriver is a blazing fast, coroutine-first, undetectable web scraping / browser automation library for Kotlin. It uses the Chrome DevTools Protocol (CDP) under the hood to interact with real Chrome instances, offering a sleek alternative to heavy tools like Selenium or Puppeteer — all without relying on WebDriver.
We chose Kotlin for this port because:
To use kdriver, add the following to your build.gradle.kts:
dependencies {
implementation("dev.kdriver:core:0.5.7")
}Make sure you have Maven Central configured:
repositories {
mavenCentral()
}Visit a website and do something on it:
fun main() = runBlocking {
val browser = createBrowser(this)
val page = browser.get("https://www.browserscan.net/bot-detection")
page.saveScreenshot(Path("browserscan.png"))
browser.stop()
}More examples can be found on the tutorial section of the documentation.
Huge thanks to @stephanlensky for creating zendriver, a brilliantly designed and maintained library that inspired this port. If you're using Python, we highly recommend checking out the original project!
The purpose of kdriver is to provide a clean, coroutine-native API for browser automation in Kotlin, while staying true to the goals of zendriver:
This library is still in early development — feedback and contributions are very welcome!
We welcome contributions of all kinds — feel free to open issues, report bugs, or submit pull requests.
This project is a Kotlin port of Python library zendriver, built to bring the same simplicity and power of CDP-based automation to the Kotlin and Java/JVM world.
kdriver is a blazing fast, coroutine-first, undetectable web scraping / browser automation library for Kotlin. It uses the Chrome DevTools Protocol (CDP) under the hood to interact with real Chrome instances, offering a sleek alternative to heavy tools like Selenium or Puppeteer — all without relying on WebDriver.
We chose Kotlin for this port because:
To use kdriver, add the following to your build.gradle.kts:
dependencies {
implementation("dev.kdriver:core:0.5.7")
}Make sure you have Maven Central configured:
repositories {
mavenCentral()
}Visit a website and do something on it:
fun main() = runBlocking {
val browser = createBrowser(this)
val page = browser.get("https://www.browserscan.net/bot-detection")
page.saveScreenshot(Path("browserscan.png"))
browser.stop()
}More examples can be found on the tutorial section of the documentation.
Huge thanks to @stephanlensky for creating zendriver, a brilliantly designed and maintained library that inspired this port. If you're using Python, we highly recommend checking out the original project!
The purpose of kdriver is to provide a clean, coroutine-native API for browser automation in Kotlin, while staying true to the goals of zendriver:
This library is still in early development — feedback and contributions are very welcome!
We welcome contributions of all kinds — feel free to open issues, report bugs, or submit pull requests.