An MCP web scraper decides how many tokens your model reads, and the gap is 23 to one. On 29 September 2026 we fetched 11 public pages four ways: the raw HTML came to about 852,229 tokens, smart Markdown to 63,374, and smart Markdown without link URLs to 37,039. Same pages, same facts, 96% fewer tokens.
That ratio is the whole buying decision for a scraping tool inside Claude, Cursor or any agent. The fetch costs fractions of a cent; the model reading the result costs dollars, and a page that does not fit the context window costs you the answer. This post shows the per-page numbers, what each content mode keeps and drops, and the exact settings to use.
Raw HTML is 13 times bigger than clean Markdown
We took 20 public URLs across docs, news, reference, recipes, commerce and the MCP spec itself, and fetched each through the QuanticData batch endpoint, which is the code path behind the MCP scrape tool: plain HTTP, US residential exit. Eleven URLs came back 200 in all four passes, and those 11 are the table. Tokens are estimated as characters divided by 4, the same estimate the API returns as quality.tokens.
| Page | Raw HTML | Full | Smart | Smart, no links | Article |
|---|---|---|---|---|---|
| The Verge home | 229,073 | 14,894 | 11,393 | 4,792 | 6,208 |
| Allrecipes recipe | 158,265 | 10,618 | 6,316 | 4,334 | 1,199 |
| BBC News home | 96,760 | 5,752 | 3,568 | 1,904 | 4,483 |
| GitHub repo (MCP servers) | 88,187 | 5,253 | 3,255 | 1,802 | 2,381 |
| MCP docs, introduction | 78,807 | 1,568 | 769 | 601 | 704 |
| Wikipedia article | 58,995 | 15,834 | 12,221 | 7,407 | 11,299 |
| Python docs page | 54,131 | 20,506 | 18,604 | 13,107 | 18,473 |
| MDN reference page | 52,407 | 14,979 | 1,082 | 495 | 601 |
| GOV.UK VAT rates | 16,032 | 1,888 | 322 | 255 | 198 |
| arXiv abstract | 10,911 | 2,477 | 2,045 | 1,159 | 491 |
| Hacker News front page | 8,663 | 3,817 | 3,799 | 1,183 | 3,573 |
| Total, 11 pages | 852,229 | 97,586 | 63,374 | 37,039 | 49,610 |
Raw HTML against smart Markdown is 13.4 to one across the set, and the spread per page runs from 2.3 (Hacker News, which is almost all text) to 102 (the MCP documentation page, 315 KB of HTML around 769 tokens of prose). A generic fetch tool that returns the page source hands the model scripts, inline styles, tracking markup and serialized app state. None of it is an answer.
Two of these pages do not fit a 200,000-token window as HTML
The Verge home page is about 229,073 tokens of HTML. Allrecipes is 158,265, which leaves room for almost nothing else in a 200,000-token context. As smart Markdown the two pages are 11,393 and 6,316 tokens, and an agent can hold both plus its instructions, the conversation and ten more pages.
This is the problem the top Reddit thread for the keyword describes in plain words: a developer migrating a site asked which MCP to give Claude Code because a browser automation server "eats up a lot of tokens". The fix is not a smaller model or a bigger window. It is a tool that converts the page before the model sees it and lets you choose the scope.
Link URLs are 42% of a clean page
Smart Markdown keeps every link as [text](url). On link-heavy pages the URLs outweigh the words: removing the targets and keeping the anchor text took the 11 pages from 63,374 to 37,039 tokens, a 42% cut. Hacker News fell from 3,799 to 1,183, The Verge from 11,393 to 4,792.
The MCP scrape tool does this on the server with links_mode: "strip", or moves the URLs to a numbered list at the end with links_mode: "footnote". Strip when the agent needs to read and answer; keep links, or ask for include_links as a separate array, when the agent needs to decide the next page to open. Deciding which of the two jobs a call is doing is the single cheapest optimisation in an agent that browses.
Article mode is shorter, and it drops lists
The article content mode runs a readability pass and keeps the main text only. Over the set it produced 49,610 tokens, 22% below smart. It is the right mode for news and blog prose. It is the wrong mode for anything whose value sits in a list or a table: on the Allrecipes page it returned 1,199 tokens and mentions a cup once, where the smart output mentions it seven times: the ingredient quantities are gone. Smart kept them in 6,316 tokens. On the arXiv page it kept 491 tokens against 2,045.
The full mode goes the other way and keeps navigation, sidebars and footers. On MDN that is the difference between 1,082 tokens (smart) and 14,979 (full), almost 14 times more for the same reference entry. Use full only to debug what a page serves. The working rule for an agent:
- smart by default: the page minus navigation, footer and cookie chrome, tables kept as GitHub Markdown.
- article for news and blog posts where you want the story, not the recipe card or the spec table.
- full only when you are investigating the page itself.
- query plus
highlightswhen the agent needs one fact from a long page: the tool keeps only the relevant sections instead of the whole document. - max_tokens as a hard cap: the output is cut at a section boundary, never inside a table or code block, with a note saying how much was left out.
The model's reading bill is 34 times the fetch bill
Price the same 11 pages as model input at $2 per million input tokens, the rate OpenRouter listed for Claude Sonnet 5.5 on 29 September 2026. Fetch costs are from our web scraping API price list: $0.0002 per page over plain HTTP.
| What the model reads | Tokens, 11 pages | Model input cost | Per 1,000 pages |
|---|---|---|---|
| Raw HTML | 852,229 | $1.70 | $154.96 |
| Markdown, full | 97,586 | $0.20 | $17.74 |
| Markdown, smart | 63,374 | $0.13 | $11.52 |
| Smart, no link URLs | 37,039 | $0.07 | $6.73 |
| The fetch itself | 11 requests | $0.0022 | $0.20 |
Even in the leanest mode, reading costs 34 times more than fetching. That is why the per-page price of a scraping tool is the wrong thing to compare: a tool that is free per call and returns HTML costs about $155 per thousand pages in model input at this rate, one that returns stripped smart Markdown about $7. Pick the tool by what it hands the model, then by its price.
What an MCP web scraper should expose
An MCP server is a set of tools with typed inputs the model can call on its own; our explainer on how MCP servers work walks through one call end to end, and whether an MCP server is like an API covers the wire format. For web data, five abilities decide whether the agent finishes the job:
- Scope control on every read: content mode, link handling, a token cap and a query filter, as measured above.
- Search that returns results, not a page: a SERP as structured organic results, so the agent picks sources before it reads them.
search_and_readdoes both in one call. - Map before crawl: a site's URL list with per-section counts, so the agent crawls the 40 pages it needs, not 4,000.
- Async jobs for anything long: crawl and batch return a job id and are polled, so a 500-page crawl never blocks the conversation.
- Structured collectors: when the target has a ready-made collector, the agent gets rows, not prose, and spends almost no tokens parsing.
Our server exposes 26 tools on these lines, from scrape, search and map to crawl, batch, seo_audit and the collectors. Setup in Cursor is covered in how to use MCP in Cursor.
The setting that works for an MCP web scraper
- Server: the QuanticData MCP server, local with
npx -y quanticdata-mcpandQUANTICDATA_API_KEYset, or the hosted endpoint athttps://api.quanticdata.io/mcp. Residential proxies sit underneath every fetch; you do not configure them. - Fetch mode:
engine: "tls"or the defaultauto. All 11 pages in the table came back over plain HTTP; a browser is only needed when a page builds its text in JavaScript, andautoescalates on its own. - Scope:
content_mode: "smart"withlinks_mode: "strip"for reading, 37,039 tokens for our 11 pages;articlefor news prose;max_tokenson every call from an agent that browses. - Price: from $0.0002 per page, $0.001 with JavaScript rendering, and crawls at $0.0003 per page; failed requests are never billed.
- When a page is not enough: run a collector, for example the Google News collector at $0.0005 per delivered article, and the agent reads rows instead of pages.
- Free tier: every account gets $2 of free API usage per month.
Sources & further reading
- What is the Model Context Protocol (MCP)?, modelcontextprotocol.io (fetched 29 September 2026)
- modelcontextprotocol/servers, reference MCP servers on GitHub
- What's the best most reliable MCP to let Claude Code scrape a website?, r/ClaudeAI
- OpenRouter models API, Claude Sonnet 5.5 input price (fetched 29 September 2026)