Decision table
| You want… | Use | Cost |
|---|---|---|
| The raw HTML / markdown / PDF of one page | /v1/scrape | 1 credit (+2 stealth) |
| Structured JSON from one page, schema-validated | /v1/smartscraper | 5 credits (+5 stealth) |
| To click, type, paginate, or wait like a real user | SmartBrowse | 2 credits per page |
Common patterns
One-shot, structured
SmartScraper. Schema in, JSON out.
I'll parse it myself
Scrape. Raw HTML or markdown, no LLM involved.
Behind a click or login
SmartBrowse. Real Chrome and replayable recipes.
Cheap retry strategy
Try Scrape first, fall back to SmartScraper or stealth on failure. Failed calls cost 0.
SmartBrowse
SmartBrowse runs a saved recipe in a real Chrome session. You build the recipe visually in the studio — click an element, scroll, type into a search box, paginate. Use it when the data is behind a login, an interaction, or a render that only fires after user input. Run flow:POST /v1/smartbrowse/recipes/{id}/run gives you back a run_id. Poll GET /v1/smartbrowse/runs/{id}, or set up a webhook from the dashboard and let us push the result.
Stealth mode
Stealth mode is a per-request flag ("stealth": true), not a separate product. Toggle it on Scrape and SmartScraper when the default fetcher hits a challenge or empty page. SmartBrowse already runs in real Chrome, so stealth is built in.