Ask any chat model for the cheapest detergent and it will answer confidently, invent a product link, and compare a three-pack against a single bottle. Scout opens the pages, reads the real prices, and does the maths in Rust.
The cheapest sticker price is the worst deal of the three. Scout compares landed cost — item plus shipping — and then the price per wash, because a bigger bottle is only cheaper if it is actually cheaper per wash.
€15.17 with €16.98 shipping loses to €35.25 delivered. Offers that don't state shipping still compete, but their prices are labelled item-only.
Per wash, per litre, per 100g. A three-pack and a single bottle are only comparable once they're in the same units, and that division happens in Rust.
Prices come from the page's structured data for the exact URL opened — never from page text, where a “related items” strip becomes your quote.
“always check 123schoon.nl for cleaning products”
Small shops never rank organically, even under their product's exact name. Tell Scout
once which shops you trust and for what, and it queries them directly with a
site: search on every relevant question — scoped by category, so a
cleaning-products shop isn't consulted about a laptop.
The same goes for the rest of your profile: delivery country, sizes, languages. Scout searches in your languages as well as English in one call, because “laundry detergent” finds nothing on a Dutch shop and “wasmiddel” does.
The eBay Browse API, with developer credentials and OAuth. Current prices and stock straight from eBay, no page reading involved. Needs your own key — without one, eBay results still arrive through ordinary search.
The same JSON endpoint marktplaats.nl's own front end calls to fill its results page. Not scraping rendered HTML, but not a public API either: it can change shape without warning, and when it does Scout falls back to normal search rather than reporting nothing. Sold and deleted listings are filtered out.
The Catalog API, if you have an approved affiliate account — and they do reject applications. Optional, like the rest.
Found by search, then opened and read. Pages that block a plain HTTP client get re-opened in headless Chrome, which clears the challenge shops put in front of them. When a page can't be verified, Scout says so rather than guessing.
| Four Amazon links, all fabricated. An invented product URL looks perfectly real and always 404s. | Every link is probed before sending. Dead ones trigger a correction turn, then get struck from the text. |
| €640 for a €6.48 bottle of cola. The shop published the price twice — once in euros, once in cents — and we picked the wrong one. | A price with decimals beats a bare integer, and anything exactly 100× the page's other price is corrected. |
| Recommended something marked “out of stock”. The page returns HTTP 200, so nothing looked wrong. | Stock comes from the page's markup, not its prose — that page said “unavailable” once and “add to basket” seven times. |
Scout can search live fares and draw a multi-city trip on one line
(AMS 20:15 15.09 ✈ PVG 3h 20m ✈ HKG 20:35 16.09), with every price
labelled by whether you can actually book it. It works, and it is early — thinner
and less proven than the shopping side, which is what Scout is really for today.