Ferret
a web scraping system
aiming to simplify data extraction
from the web
Declarative
ferret uses a declarative query language so you focus on the data you need, not the code to get it.Dynamic pages support
ferret handles javascript-rendered pages, page events, and user interactions out of the box.Embeddable
ferret is designed as a library first and embeds cleanly into any go application.Declarative web data extraction
ferret is a declarative language for extracting structured data from the web.
you focus on what data you want - lists, fields, transformations - while Ferret takes care of browsers, async loading, retries, and HTML quirks.
the result is concise, readable queries that scale from small experiments to production pipelines.
Dynamic pages, no extra work
modern websites rely heavily on JavaScript. Ferret handles that for you.
by running pages in a real browser via Chrome DevTools Protocol, Ferret lets you extract data from dynamic sites without custom scripts or brittle workarounds.
No plugins. No macros. Just Go.
ferret exposes a minimal, explicit extension API that lets you bind Go functions and types into the query runtime.
this makes it easy to keep domain-specific logic in Go while using Ferret for data selection and transformation.