runo
Extract structured, typed JSON from any URL using a schema you define.
Runo extracts structured JSON from any web page using an AI model and a simple schema you define, instead of writing custom scraping code.
Runo pulls structured data out of any web page and turns it into clean JSON, using a schema you describe rather than writing code to find each piece on the page. You tell it a field name, a data type, and an example value, and it fetches the page, renders JavaScript if the page needs it, and uses a large language model to read the page and fill in the fields you asked for. Because the AI reads for meaning instead of looking for a specific spot in the page's code, your setup keeps working even after a site gets redesigned. If a field cannot be found, it comes back as null instead of being silently left out.
The project started as a closed-source paid service and was later made open source. It runs entirely on your own machine and needs a Google Gemini API key, which is its main requirement. Before calling the AI model, Runo first checks faster, cheaper sources of structured data already on the page, such as JSON-LD, OpenGraph, and Twitter Card tags, and only renders a full headless browser when the page truly needs JavaScript to display its content.
It offers three ways to use it: as a command-line tool, as a Python library you can import into your own code, or as a small local HTTP server with a JSON-based API. It also supports three modes of operation: pulling data from a single URL, running the same schema across a list of many URLs at once, and crawling a site by following links from a starting page. Output values are strictly converted to the type you asked for, whether that is text, a whole number, a decimal, true or false, a standard date format, or a list of values.
Setup requires Python 3.11 or newer, installing the package with pip, and a one-time download of a headless browser through Playwright. The project is licensed under Apache 2.0, a permissive license that allows free use, modification, and redistribution, including in commercial products, as long as you keep the required notices.
Where it fits
- Pull structured fields like title, price, and stock status from a product page without writing selectors.
- Run one extraction schema across a batch of URLs at once.
- Crawl a website following link patterns and extract the same fields from every matching page.