// the find
geziyor/geziyor
Geziyor, blazing fast web crawling & scraping framework for Go. Supports JS rendering.
Geziyor is a Go library for crawling and scraping websites, with first-class support for JS-rendered pages via headless Chrome, concurrent request handling, caching, and automatic exporters. It's aimed at Go developers who want something like Scrapy's structure without reaching for Python, especially if they need rendered pages without duct-taping a separate browser automation layer on top.
The package is split cleanly into client, cache, export, middleware, and metrics - you can swap a cache backend or add a middleware without touching the crawl loop. JS rendering is a real method (GetRendered), not an afterthought, and it supports pointing at a remote Chrome instance via BrowserEndpoint instead of forcing a local browser on every machine that runs it. It ships with Prometheus metrics and three cache backends (memory, disk, LevelDB) out of the box, which most scraping libraries leave as homework. There's also real test coverage - a codecov badge backed by per-package _test.go files, not just a README promise.
JS rendering still needs a local Chrome install unless you stand up a separate browser service yourself, which is an operational dependency a lot of Go-only teams won't want. The headline benchmark (8748 req/s) is from a 2016 MacBook Pro and the README presents it as current proof of speed, with nothing newer and nothing at all for the JS-rendering path, which is where people actually hit walls. Exporting works through an unbuffered-looking channel (g.Exports) and the docs never explain what happens if your exporter stalls or you forget to wire one up. There's also no built-in way to distribute crawling across processes or machines - concurrency limits are strictly in-process, so anything beyond single-box scraping is on you.