Ask a page a question. jurl prints only the part that answers it, word for word, with a link to where it says it. When the answer is pages away, it goes looking.
$ jurl --precise --follow 15 \
-q "What is the boiling point of mercury?" \
en.wikipedia.org/wiki/Tennis
629.88 K (356.73 °C, 674.11 °F)
Tennis → Kevlar → Chemical formula → Periodic table → Mercury (element)13 pages read, 8 dropped · 3.8 s
Picks, never writes.
Every line it prints is on the page as you see it. No summary, no invented URL.
Says when it isn't there.
No answer, exit code 1. A script gets an empty cell, not a wrong one.
Under a second a page.
Most pages, end to end. About $4 per 10,000 pages with your own keys.
One command, a flag for each job.
The exact answer
--precise
One value, for a spreadsheet cell or a script.
$ jurl --precise -q "what is the primary rate limit for authenticated users?" docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api
5,000 requests per hour<https://docs.github.com/en/rest/…#:~:text=rate%20limit%20of-,5%2C000%20requests%20per%20hour>
Find it on the site
--follow
Give it the bare domain. It finds the page.
$ jurl --follow --precise -q "What is the monthly price of the cheapest paid plan?" linear.app
$10 per user/month<https://linear.app/pricing#:~:text=%2410%20per%20user%2Fmonth>
A photo, by what it shows
--find
Looks at the pixels, captions or not.
$ jurl --find "a cathedral" -n 3 en.wikipedia.org/wiki/Cologne
https://thumb.wikimedia.org/…/2/27/Kdom.jpg/250px-Kdom.jpghttps://thumb.wikimedia.org/…/K%C3%B6ln_um_1890.jpg/500px-K%C3%B6ln_um_1890.jpghttps://thumb.wikimedia.org/…/Kranh%C3%A4user_Cologne%2C_April_2018_-01.jpg
Also --code for just the code, -q "…" for one answer, --pages to read a list to its end, and plain jurl <url> for the gist. Pages built with JavaScript just work. Every flag →
Never rewrites the page.
Ten documentation pages, one question each, read by jurl and by the tools agents use today.
Sign in once and jurl reads with jurl cloud: no API keys, the same flags and the same output (photos still read with your own keys). Any answer can become a sheet that jurl reads again on a schedule.
abridged
$ jurl login
To sign in to jurl cloud, open https://cloud.jurl.dev/device and enter this code:
KQ7M-PX4TSigned in as you@acme.com to Acme. Console: https://cloud.jurl.dev
$ jurl --follow --precise -q "What is the monthly price of the cheapest paid plan?" linear.app
$10 per user/monthjurl: keep it up to date in a sheet:https://cloud.jurl.dev/w/…
→
Cheapest paid planFresh · today 09:12
Site
Cheapest paid plan
Read
linear.app
$10 per user/month
09:12
+ add sites
+ read it again every day
One line to install. Then pick how it reads.
macOS, Linux$ brew install rayoplateado/tap/jurl
No Homebrew$ curl -LsSf https://github.com/rayoplateado/jurl/releases/latest/download/jurl-installer.sh | sh
A free account with a monthly allowance of page reads. Nothing to set up.
jurl login
Your own keys
A TypeSafe key, checked and saved on the first run. You pay per page.
jurl init
What leaves your machineWith your keys, the page's text goes to TypeSafe, and with --vision or --find its photos go to Cloudflare. With jurl cloud, jurl's servers read the page.
What it can't readPages behind a login: jurl never sends your cookies.
Lightpanda, which jurl downloads for JavaScript pages, is a separate program under AGPL-3.0.