How-to · 3 steps

How to give an agent a browser
with Monid.

Give this to your agent
$set up https://monid.ai/SKILL.md, then read <url> for me and show the cost of each step

and let it take it from there.

›read this page for me
#JobWhat came backCost
1A page JS buildsall ten items, rendered
2The paid twinidentical bytes to curl
3Search the web10 results, 10 snippets
4The paid search10 results, no snippets
5A picture of it1920x1698, fully rendered
6Typed fields10/10, tags survived
7A walled site, freean honest 403
8The same wall, paida challenge page, billed
9Through the wall1.2 MB of real markup
10Totalfourteen billed runs
one JS page · one wall · reading is the free partagent running$0.0814

Real run, 2026-09-25, against production.

Step 1

Set up Monid.

One line. It installs the CLI and asks for an API key from app.monid.ai. New accounts start with $1.00.

Say this to your agent
>set up https://monid.ai/SKILL.md
Step 2

Pick what you need. Say it in one sentence.

Click a job. Paste the sentence, fill in the brackets.

Read a page that JavaScript builds

Say this to your agent
>read <url> with tinyfish on monid and give me the items on it. it is a page where nothing is in the html until javascript runs, so tell me how many items came back with real values in them. do not judge it by the byte count or by the status: judge it by whether the fields are populated
What the agent runsdone
tinyfish /fetch$0.00
context.dev /web/extract$0.009
context.dev /web/scrape/markdown$0.0009
x402.browserbase.com /fetch$0.011
What came backone JS-built page · 2026-09-25
Same url, same minute, four routesitems actually rendered, of ten
tinyfish · $0.0010
context.dev extract · $0.00910, typed
plain curl · $0.000
browserbase · $0.0110
the comparisonon one page the $0.011 route and plain curl returned the same 5,806 bytes and a string equality check said true; on another the bytes differed by 367 and nothing had rendered either way
what that meansthe script that builds the page was still sitting there unexecuted, so an agent that strips tags and reads text gets nothing back
the free onereturned all ten items as 1,080 bytes of clean markdown, which is the whole job, for $0.0000
do not diff the bytesthat 367-byte gap was a CDN performance beacon injected because the request looked like a browser, so on any fronted site the byte check reports a difference that means nothing
the rulecount the populated fields. Both routes answered HTTP 200 on both pages, and on two different targets the paid one rendered 0 of 12 and 0 of 10
$0.00ten items, rendered

When the free read comes back empty

Say this to your agent
>read <url> with tinyfish on monid first, then check whether the fields i asked for actually came back with values. escalate to mrscraper with browserRendering and super set to true whenever they did not, whether that is a 403, a challenge page, or a 200 whose values are still placeholders. do not send every url through the stealth route: escalate on an empty answer, not on the batch
What the agent runsdone
tinyfish /fetch$0.00
mrscraper /scrape/htmlfrom $0.001 / result
context.dev /web/scrape/markdown$0.0009
x402.browserbase.com /fetch$0.011
What came backone JS-built page · 2026-09-25
A hundred pages, ten of them walledUS dollars
free first, escalate on a thin answer$0.12
everything through stealth$1.20
the honest failureon one walled site the free route returned a 403 inside an errors array with no results and billed $0.0000, which is exactly the signal an escalation needs
the failure with no signalon another it walked through the wall and answered 200 with an empty errors array, a real page title and a real result count, and one listing where there were sixty-two prices, the rest still reading Loading
so check the yielda status code cannot tell those two apart; only counting the values you asked for can, which is why the sentence escalates on an empty answer rather than on a 403
what got throughthe stealth route returned the real page both times, 1.2 MB on one and 62 prices against 9 listings on the other
what it really costsits listed $0.001 per result is a token unit, not an estimate: two runs billed $0.012 and $0.034, so budget an order of magnitude above the sticker
$0.012only on the ones that block

Take a picture of the page

Say this to your agent
>screenshot <url> with context.dev on monid at full page. it returns a hosted image url rather than the bytes, so fetch that url separately if you need the file itself
What the agent runsdone
context.dev /web/screenshot$0.0045
mrscraper /scrape/screenshot · not run$0.001 / result
tinyfish /fetch$0.00
What came backone JS-built page · 2026-09-25
what came backa 1920 by 1698 full-page PNG with the JavaScript-built cards fully drawn, which is independent proof that a real browser ran
what you get in the response329 bytes of JSON holding a url on a third-party CDN, not the image; the file itself was 163,588 bytes on a second, unbilled fetch
the retentionno stated lifetime on that hosted url, so download it in the same run if you need to keep it
the aisle it is not inthe browser aisle has no screenshot endpoint at all; this one lives next door
$0.0045one full-page capture

Typed values, or a regex over free text

Say this to your agent
>extract <fields> from <url> with context.dev on monid, passing a json schema and factCheck true. use this when you want typed values and a stable shape rather than text you have to pattern-match; if a four-line regex over the free markdown already gets you the fields, take the free one
What the agent runsdone
context.dev /web/extract$0.009
tinyfish /fetch$0.00
context.dev /web/scrape/markdown$0.0009
What came backone JS-built page · 2026-09-25
what it gives youevery item in exactly the requested shape with the numbers as numbers, so a price is 52 rather than the string $52.00, and the shape does not move when the page's layout does
when the free route is enoughon one page markdown flattening dropped every tag array; on another it kept all twelve items and both fields, and four lines of adjacency matching recovered them exactly. Check before you pay
the honest price$0.009 a call whatever the schema. The thing you are buying is not completeness, it is not having to write and keep a pattern per site
the grounding flagfactCheck true forces every value back to text that is actually on the page, which is the difference between extraction and invention
$0.009per call, any schema size

Search the live web and read the results

Say this to your agent
>search the web for <query> with tinyfish on monid and give me the results with their snippets, then fetch the ones worth reading in one call rather than one call each
What the agent runsdone
tinyfish /search$0.00
x402.browserbase.com /search$0.011
tinyfish /fetch$0.00
What came backone JS-built page · 2026-09-25
Same query, two search endpointsresults carrying a snippet, of ten
tinyfish · $0.0010
browserbase · $0.0110
the differenceone returned a position, a site name, a snippet, a title and a url on every row; the other returned an id, a url and a title, with two titles empty
why the snippet decides itwithout one you have to fetch all ten urls to know which is worth reading, and the second half of the job is reading them
what that coststhe paid search plus ten paid fetches is $0.121 a query; the free search plus a free multi-url fetch is $0.0000
the batchingthe free fetch takes up to ten urls in a single call, so a hundred pages is ten calls, still free
$0.00ten results with snippets

Click, type and log in

Say this to your agent
>create a browserbase session with monid and connect to the connectUrl ONCE, with playwright's connectOverCDP, and do all your work in that one attach. do not test the socket first and do not close and reopen: the session dies on the first detach and the paid time left on it is forfeit
What the agent runsdone
x402.browserbase.com /browser/session/create$0.011
tinyfish /fetch$0.00
mrscraper /scrape/htmlfrom $0.001 / result
What came backone JS-built page · 2026-09-25
it is a real browsera WebSocket handshake answers HTTP 101 and Playwright's connectOverCDP drives it, twelve items off a JavaScript page on the first attach
what Monid sells youthe browser, not the driving: the session comes with a live view url and an auth token, and the steps are yours to write
one attach, not five minutesafter a clean close, reconnecting 4 minutes 41 seconds before the stated expiry answered 410 Gone, session not running. Even a bare handshake to check the socket burns it. Connect once and stay
it is not a way past a walla browser you drive yourself got the same 403 on a protected site that everything else did; a real browser and a stealth route are different products
$0.011five paid minutes
Step 3

Take the cheapest route with Monid.

Read it free first. Escalate on the block, not on the batch, and open a real browser only when you need to click something.

Read it free · $0.0000
Free fetch$0.00renders the page
Free search$0.00ten results, snippets
Only if that was not enough
As markdown$0.0009
Typed fields$0.009
A live browser$0.011
Through the wall$0.012
Did it render
Count what came back$0.00
Picture of it$0.0045only if you need to see it
Back to you
rowread bycost
1the free read$0.00
2the free read$0.00
3Through the wall$0.0329
4the free read$0.00
5Typed fields$0.0099
5 of 5 rows$0.0428
Say this to your agent
>read these pages for me, free route first, and escalate any that come back blocked OR that answer 200 with the values missing: <paste urls>
“count the values”two routes both answered 200, and one of them rendered nothing on either page we tried
“escalate on an empty answer”one wall answered 200 with no error and handed back placeholders where sixty-two prices should have been
“connect to a session once”reconnecting after a clean close answered 410 Gone with almost five paid minutes left
“pass maxAgeMs zero”the scrape endpoints default to a day of cache, so a live read can be served stale

One key. 1,700+ tools.

Reading a page is free here. A browser you can click in is the paid part.

Read a page, renderedtinyfish · $0.00 / call
Search and read the resultstinyfish · $0.00 / call
A page as markdowncontext.dev · $0.0009 / call
A picture of the pagecontext.dev · $0.0045 / call
Typed fields, not prosecontext.dev · $0.009 / call
Through the bot wallmrscraper · from $0.001 / result
A real browser you drivebrowserbase · $0.011 / session

+ 1,700 more across 55 providers

Browse the catalog →