# tl.is — Tölvulistinn

Iceland's biggest computer store. Live price, stock, SKU and brand for any
product page, plus keyword search over the whole catalogue. Public site,
no auth:

```bash
ab-plus run tl.is/product --input '{"url":"amd-am5-ryzen-9-9950x3d-4-3ghz-5-7ghz-tray.html"}'
ab-plus run tl.is/search  --input '{"query":"rtx 5070"}'
```

## Ops

| Op | Risk | Notes |
|---|---|---|
| `product` | read-only | Price + stock from the page's embedded JSON-LD Product schema. `url` accepts a full URL or the slug. |
| `search` | read-only | Keyword search. Results render client-side (Algolia), so this op drives an agent-browser session at `catalogsearch/result?q=…` and reads the rendered grid. |

## Gotchas

- `product` is a single GET — parse `application/ld+json`, don't scrape
  display text. Availability comes from `schema.org/InStock|OutOfStock|PreOrder`.
- `search` needs an agent-browser session (it is a `dom` op): the static
  HTML of the results page contains no hits. First page only (20 hits);
  the recipe does not paginate.
- `search` opens a HEADED window by default — pass `--session <key>` to reuse
  an existing one. Prices on the grid are formatted like `219.995 kr`.
- Combine with the vaktin.is pack: `vaktin.is/prices` compares across the
  five stores (tl.is included), `tl.is/product` reads the exact stock before
  you buy.
- Respect the site: one GET per product lookup, don't crawl the catalogue.
