How-to · 3 steps
How to read any web page
with Monid.
Give this to your agent
$set up https://monid.ai/SKILL.md, then read <url> for me and keep the code samples intact
and let it take it from there.
#JobWhat came backCost
1Docs, cheap15,312 chars, code intact$0.0009 ✓
2Docs, 66x9,948 chars, code stripped$0.0594 ✓
3Newsfull article, not blocked$0.0009 ✓
4Search and readten pages in one call$0.0009 ✓
5Crawlfive of five, but off target$0.0045 ✓
6Schema17 rows, one honestly blank$0.009 ✓
7Free-text55 rows, some invented$0.038 ✓
8Brandcolours, logos, socials$0.009 ✓
9Totalnine runs, none retried$0.1236 ✓
four pages · two providers each · one price that lostagent running$0.1236
Real run, 2026-09-24. Public pages only.
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.
One URL as clean markdown
Say this to your agent
>read <url> as markdown with context.dev on monid and keep the code blocks, then count the fenced blocks against the page and tell me the number. do not judge it by the character count: link syntax and page chrome are included by default and can make the output larger than the visible text
What the agent runsdone
context.dev /web/scrape/markdown$0.0009
octen /extract$0.001 / result
mrscraper /scrape/markdown · not run$0.001 / result
firecrawl /scrape · not run$0.0002
api.strale.io /x402/url-to-markdown$0.0594
What came backfour real pages · 2026-09-24
Same docs page, two providerscharacters returned
the cheap one15,312 characters with all three code samples intact, plus the page metadata
the 66x one9,948 characters and every code fence stripped to prose
what that meanson a documentation page, the expensive extractor lost exactly the part you came for
count blocks, not characterson a second page all 32 code blocks came back and twenty sampled ones were verbatim, while the character count was 74% larger than the visible text because link markup and chrome are on by default and made up two fifths of the output
and the length field is bytesthe endpoint's own content length is counted in utf-8 bytes rather than characters, so it will not match a character count either
the tieon a news article the cheap one and a near-free one returned the same text, neither blocked
$0.0009per page
Search, then read the top sources
Say this to your agent
>search for <question> with context.dev on monid and read the top ten results in the same call, turning the markdown option on explicitly. without it the response carries ten results and not one character of page text, and it bills the same. tell me which came back empty so i know what i paid for
What the agent runsdone
context.dev /web/search$0.00009 / result
tinyfish /search · not run$0.00
litescrape /google/search · not run$0.00015
exa /search · not run$0.002
What came backfour real pages · 2026-09-24
the flowten results found and their pages read in one call, from 11 characters to 50,718
the noisetwo of the ten were empty in practice: an eleven-character stub and a login wall
billed anywayboth empty results were charged as normal hits, so about a fifth of the spend bought nothing
off by default, and it bills anywaywithout the markdown option the ten results came back with a null body and a not-requested code, zero characters of text, at the same $0.0009
the surprisereading the pages was not metered separately from the search, despite the catalog note
$0.0009ten results, searched and read
Crawl a section of a site
Say this to your agent
>crawl <url> with context.dev on monid, five pages maximum, AND pass a url pattern restricting it to that path. without one it leaves the section on the first hop and still reports every page as a success. then read back the urls it actually fetched
What the agent runsdone
context.dev /web/crawl$0.0009 / result
context.dev /web/scrape/sitemap · not run$0.0009
firecrawl /crawl · not run$0.001 / result
ahrefs /site-explorer/crawled-pages · not run$0.018 / result
What came backfour real pages · 2026-09-24
the resultfive of five pages fetched, none failed, between 4,530 and 15,823 characters each
it leaves on the first hopon a second site a naive five-page crawl fetched the seed and then four pages outside the path, none of them in the section asked for, and reported five succeeded and none failed
the parameter that fixes ita url pattern keeps all five inside the prefix; it is not in any of these sentences by default and it is fiddly to quote on a shell, so pass it from a file
the driftthe docs domain had migrated, so one hop out the crawl left the section entirely
what to docap the pages, then read back the urls before trusting the set
the cheaper stepif you only need the list of urls, the sitemap call is one flat $0.0009
$0.0045five pages
Turn a page into structured fields
Say this to your agent
>extract <schema> from <url> with context.dev on monid with maxPages set to 1, and do NOT turn fact checking on: with it off an absent field came back empty, and with it on the same field came back as a string and a missing price came back as zero. check the cache age before you trust anything, and treat any zero as unverified
What the agent runsdone
context.dev /web/extract$0.009
mrscraper /scrape/extract$0.001 / result
api.strale.io /x402/web-extract · not run$0.1782
What came backfour real pages · 2026-09-24
Same pricing page, two approachesrows returned
fact checking does not do what it saysasked for two fields a page genuinely does not contain, it returned a five-character string where a phone number should be and a zero where a free-trial count should be, both of which read as real values downstream
and a zero price is the dangerous oneit reported a monthly price of 0 for an enterprise plan whose own page says the price is custom; re-running with the cache disabled produced the identical invention, so it is not a stale answer
off is safer than onwith the flag omitted the same absent field came back as an empty string, which is the honest answer; turning it on is what produced the fabrications
the schema way17 rows, one of them left blank on purpose because the page did not support a value
the prompt way55 rows with invented identifiers and duplicates no field could tell apart
the hidden pricethat one billed $0.038 against a $0.001 catalog rate, because browser rendering was on
it crawls, it does not read one pagethis endpoint defaults to five pages and follows links, so a second run's analysed urls included two product pages nobody asked for and the field list filled with rows from them; set the page count to one if you mean one page
the cachethe clean answer came from a cache almost six days old, with no warning a normal caller would see
$0.009flat, per page
A brand's identity from its domain
Say this to your agent
>get the brand profile for <domain> with context.dev on monid: name, description, colours, logos and socials. tell me which fields came back empty
What the agent runsdone
context.dev /brand/retrieve$0.009
hunterio /companies/find · not run$0.004784
contactout /v1/domain/enrich · not run$0.02 / result
ploid /socials · not run$0.10 / result
What came backfour real pages · 2026-09-24
what came backthe title, description, slogan, four brand colours and two logo variants with their own palettes
and morea head office country, three social profiles and a headcount both as a range and an exact figure
it can invent a contacton a second domain the email field came back as a plausible address at that company's domain, assembled from a demo persona the company publishes with a different domain; treat any contact from here as unverified
and it cannot be read freshthis endpoint's cache defaults to three months and clamps to a one-day floor, so there is no way to ask it for today
the gapsthe email came back as an empty string and three link fields were null, though all three pages exist
the usethis is the cheapest way to skin a page or a deck in someone else's brand without asking them for a kit
$0.009per domain
Step 3
Take the cheapest route with Monid.
Try the cheap extractor first and check what came back. The expensive one only earns its price on a page the cheap one actually failed.
Cheap read · $0.0009 a page
Scrape markdown$0.000915,312 chars
Fetch$0.00no key, no install
Harder pages · cheapest first
Octen extract$0.001
Firecrawl scrape$0.001
Schema extract$0.009
Browser render$0.038
Strale markdown$0.0594
Check what you got
Count the characters$0.00
Brand profile$0.009if you need the identity too
Back to you
rowread bycost
1already readable$0.0009
2Octen extract$0.0019
3Schema extract$0.0099
4already readable$0.0009
5Browser render$0.0479
5 of 5 rows$0.0615
Say this to your agent
>read these pages for me, cheapest extractor first, and tell me the character count and cost per page: <paste urls>
“count the code blocks”character counts include link markup and chrome, which made one output 74% larger than the page itself
“cheap first, always”price did not predict quality on any of the four pages tested
“watch the options”turning on browser rendering took a $0.001 rate to a $0.038 bill
“leave fact checking off”with it on, an absent phone became a string and a custom price became a zero
One key. 1,700+ tools.
Extraction is one aisle.
Read, search, crawl, extractcontext.dev · from $0.00009
Extract with metadataocten · $0.001 to $0.01
Browser renderingmrscraper · from $0.001
Scrape and crawlfirecrawl · from $0.0002
Search and fetchtinyfish · $0.00
The results pagelitescrape · $0.00015 / query
Neural searchexa · $0.002 to $0.01
A real browser sessionbrowserbase · per session
URL to markdownstrale · $0.0594 / call
Pages a crawler foundahrefs · $0.018 / result
Company from a domainhunterio · $0.004784 / call
Enrich a domaincontactout · $0.02 / result
+ 1,700 more across 55 providers
Browse the catalog →Read more
View all →
Extract page content for RAG
The same job aimed at a retrieval index, with the chunking decisions spelled out.

When the site will not let you in
A browser that signs in and clicks, for the pages no extractor can reach.

Bing Search API retired: the alternatives
Before you read a page you have to find it. What each search endpoint charges.








