Fetch and crawl with frontier system one models.
MDBench Hard
v1Hard Markdown extraction benchmark
| API | Questions answered correctly | 95% confidence interval |
|---|---|---|
| Expand | 74.1% | 70.4% to 77.6% |
| Exa | 55.3% | 50.9% to 60.1% |
| Firecrawl | 27.2% | 24.2% to 30.5% |
1,094 questions on 326 hard pages. Claude Sonnet 5.5 answers from each API's Markdown, at its default settings, graded strictly. Expand is the only provider tested that includes the hidden JSON from the page, via X-Ray.
How we measured
A set of hard web extraction cases that we curated together with our customers. They span enrichment, procurement, pricing and competitive intelligence, among other areas.
It intentionally targets what existing web-to-Markdown systems get wrong.
It is a question-answering benchmark: an agent gets only the page Markdown that each API returns and answers a question about what it says.
Tested on October 8, 2026.
Paste a URL, or open one of the examples, and see what your agent gets back.
What should your agent see next?
Fetch a page, crawl a site, or subscribe to changes.
Every page comes with accurate Markdown, plus the hidden JSON and a snapshot you can cite.
Progressive disclosure
Other tools make you choose the full page or a trimmed one. Your agent reads the main content first and asks for the rest only when it needs it: nothing lost, far fewer tokens.
Lossless
Existing web-to-Markdown tools follow hard-coded rules and lose crucial details in the conversion. The web is too complex for rules.
If something is still missing, progressive disclosure has you covered.
It works out of the box without any configuration—JavaScript rendering, residential proxies, and bot protection are handled automatically for every request.
Jev for the web.
Send a URL. Get accurate Markdown, plus the hidden JSON and a snapshot you can cite.
Iris is a vision model for the web. It reads the rendered page like you do and writes the main content as accurate Markdown. Navigation and footers go to the , one call away. The rest is noise, so it goes.
Iris docsOn a pricing page, Iris preserves the pricing table as Markdown, moves the navigation and footer to the appendix, and removes promotional and cookie banners.
Token efficient
At 5 million requests a month on Sonnet 5.5, that is $2.9M a year.*
*With JSON mode off.
Other Markdown APIs
20,000 tokens a page · 100B tokens
Expand, JSON mode off
15,200 tokens a page · 76B tokens
TypeScript. Python SDK coming soon.
One call returns the page as accurate Markdown, read by Iris, plus the hidden JSON when you ask for it.
Try the platform at no cost.
10,000 free credits ($10) to explore everything below.
FAQ
It works for a news article and breaks on many other layouts. Converters guess the main content with fixed rules, the way reader mode does. On a pricing table, a product page or a dashboard, that guess drops the icons, flattens the table and misses the data the page loads. Iris looks at the rendered page instead, every element with its position, size and weight, and sorts each one into preserve, prune or appendix.
Raw HTML is mostly markup and scripts your agent pays tokens to read, and a JavaScript app arrives as an empty shell. A browser with screenshots works, but it is slow and expensive, and the tokens add up fast. Expand renders the page in a real browser for you and returns what it shows as Markdown, at API speed.
Give your agent reading glasses.
Plans and pricing
| Free | Plus | Business | |
|---|---|---|---|
| Price | $0 | $12 | Custom |
| SAML SSO | ✗ | ✓ | ✓ |
| Uptime SLA | ✗ | ✗ | ✓ |
| Audit log | ✗ |
Coordinates, flight gates and diagrams often live in JSON the page loads, not in its HTML. X-Ray, our second System 1 model, finds the parts that matter and drops the rest.
X-Ray docsLinear's pricing page contains 17,374 tokens of hidden JSON, including customer stories. X-Ray identifies the relevant information, like the fact that Commure has logged over 80,000 requests across thousands of healthcare customers.
Verify every answer precisely. Every line links back to the element on the page it came from, even after the site changes.
Hover to debug. Share to cite.
Wayback Machine docs
If your agent already knows what it's looking for, Highlights saves over 95% of tokens with no loss in accuracy. Pass a query and get back only the passages that answer it.
Faster TTFT
Zero noise
Stripe's webhooks guide as Expand captured it, with the playground's Highlights. Ask it a question and the passages that answer it are framed, a few hundred of the page's 6,800 tokens.
One API call crawls any website. Every page comes back as a full Fetch: Markdown from Iris, State JSON from X-Ray and a snapshot.
Our crawler scales to millions of pages, so you don't need to manage state or processes.
No extra cost for crawling: each page is one credit, the same as a Fetch.
Monitor a crawl for what changed, or keep a constant change feed. Every added, changed and removed page arrives in order on a durable stream you can resume from where you left off.
WebSync rechecks every page on your schedule and streams each change as an event: a page added, a page changed with its diff, a page removed with the evidence.
Monitor a site for changes
Prepaid credits, $1 per 1,000.
Pay only for what you need. No monthly commitments.
Web-scale with white-glove support at enterprise security.
| Feature | FreeTry the platform at no cost. 10,000 free credits ($10) to explore everything below. | Pay as you goPopularPrepaid credits, $1 per 1,000. Pay only for what you need. No monthly commitments. |
|---|
Each browser page fetch saves the captured page with every asset. Open expand.land/s/<snapshotId>/playground and click any line of the Markdown to see where it came from on the page, even after the site has changed. Share the link to cite it.
The data behind what a page shows, including values that never appear as text: a product's price, rating and stock, the coordinates on a map, a flight's gate. X-Ray reads that JSON, keeps the parts a question could be asked about and drops the analytics and configuration. It comes back next to the Markdown, in the same call.
No. Pass a question with the fetch and Highlights returns only the passages that answer it, ranked. That saves over 95% of tokens with no loss in accuracy, and your agent gets to its first token sooner.
That is what Stealth Mode is for, and it is on for every plan. Each fetch runs a real browser through residential proxies with state-of-the-art bot-detection avoidance, so many pages that block automated access still render. There is nothing to configure. It won't get past every bot check, CAPTCHA or login wall. When a page is blocked, you get a 403 that says why, and it costs nothing.
Yes, on the same endpoint. Send the URL and Fetch converts PDFs, images, office files, ebooks and data files into the same Markdown. A YouTube link returns the transcript, and a video without captions is transcribed from its audio.
Most pages come back in a few seconds, browser render included. Iris itself reads about 500,000 tokens a second.
Paste the setup prompt into Claude Code, Codex, Cursor or OpenCode. It connects your agent to Expand and installs the CLI when it needs one. Approve the sign-in in your browser when asked. From your own code, call the TypeScript SDK or the API.
| ✓ |
| ✓ |
Company
About
Careers
Resources
Blog
Guides
Legal
Privacy
Terms
© 2026 Meridian, Inc. All rights reserved.
appendix| Uptime SLA | ✗ | ✗ | ✓ |
| Audit log | ✗ | ✓ | ✓ |
Nav and footer → appendix.md
Banners pruned
$[2].customers[7].body[9]
"So Commure connected a Linear view for each customer to their Slack channel…"
A constant change feed
A durable stream you can resume from where you left off
Give your agent a brain on disk: a Markdown file per page, kept in sync.
GET /v1/crawls/:id/events?offset=-1&live=sse
Web-scale with white-glove support at enterprise security.
Everything below is billed in credits: 1,000 credits cost $1, and a successful Fetch is one credit. Buy them as you go; they do not expire. Failed, blocked, and empty requests cost nothing. | 10,000 free | $1 / 1,000 | Custom allocation |
|---|---|---|---|
One credit per successful Fetch, or $1 per 1,000. Asking for Highlights alongside a Fetch adds one credit. A fetch that fails costs nothing. | 1 credit | $1 / 1,000 |
| 5 |
| 2 | $50 in successful spend + 7 full days since first successful transaction | 10 |
| 3 | $200 in successful spend + 14 full days since first successful transaction | 20 |
| 4 | $500 in successful spend + 30 full days since first successful transaction | 50 |
| 5 | $1000 in successful spend + 60 full days since first successful transaction | 100 |
Example: If I have $250 in successful spend:
Need instant concurrency without waiting for the tier to upgrade?
Just $1 per browser a month, as many as you need (up to 1,000):
Nr. of browsers
40
Price per month
$40
Perfect for short or long bursts. Billed by card, separately from your credits. Adding browsers mid-month is prorated; lowering the count or cancelling takes effect at the end of the billing month, so you keep what you paid for.
Contact us for more info.
Search a page you already fetched for the exact passages you need. You get ranked, cited snippets without a re-fetch. One credit per request, or $1 per 1,000, independently of Fetch. 99% token reduction99% accuracy | 1 credit | $1 / 1,000 | Contact sales |
|---|
PDFs convert to Markdown at one credit a page, or $1 per 1,000, on top of the Fetch. Office files, ebooks, and data files convert locally and cost nothing extra. PDF, office, ebook, data | 1 credit / page | $1 / 1,000 pages | Contact sales |
|---|
A page with no usable text layer is read by a vision model, which adds five credits ($0.005) to that page. Every image is one such page. vision model | 5 credits / page | $5 / 1,000 pages | Contact sales |
|---|
A YouTube URL returns the transcript with timestamps, chapters, and a frame for every moment, for five credits ($0.005) a video on top of the Fetch, whatever its length. A video with no captions is transcribed instead and adds ten credits a minute. YouTube | 5 credits / video | $5 / 1,000 videos | Contact sales |
|---|
Audio files transcribe to Markdown at ten credits ($0.010) a minute, rounded up, with a one-minute minimum. MP3, WAV, M4A, FLAC | 10 credits / minute | $0.010 / minute | Contact sales |
|---|
Iris uses small models to keep only the high-signal fields and elements, so your agent gets the useful data without the full page JSON flooding its context. |
|---|
Main content is split from secondary regions like nav, footers, and related links. Your agent reads the main document first and pulls the appendix in only when needed. |
|---|
We handle bot-detection avoidance, proxy rotation, and browser infrastructure for you, so pages that block automated access still render. Fully managed, with nothing to configure. |
|---|
Layout-aware Markdown that preserves tables, grids, pricing pages, and icons instead of flattening them into loose paragraphs, so the structure your agent needs survives extraction. |
|---|
Concurrency | 2 | Burst up to 100 concurrent requests. | 200+ |
|---|
Storage | 7 days | 30 days | 30+ days |
|---|
Proxies |
|---|
Support | Email support only | Standard support | High priority support: opt-in Slack channels and live chats |
|---|
SSO | — | — |
|---|