Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in

MCP Web Scraper: 11 Pages, 96% Fewer Tokens

Tokens for the same 11 web pages, measured 29 September 2026: raw HTML 852,229, full Markdown 97,586, smart 63,374, article 49,610, smart without link targets 37,039
Tokens for the same 11 web pages, measured 29 September 2026: raw HTML 852,229, full Markdown 97,586, smart 63,374, article 49,610, smart without link targets 37,039

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.

PageRaw HTMLFullSmartSmart, no linksArticle
The Verge home229,07314,89411,3934,7926,208
Allrecipes recipe158,26510,6186,3164,3341,199
BBC News home96,7605,7523,5681,9044,483
GitHub repo (MCP servers)88,1875,2533,2551,8022,381
MCP docs, introduction78,8071,568769601704
Wikipedia article58,99515,83412,2217,40711,299
Python docs page54,13120,50618,60413,10718,473
MDN reference page52,40714,9791,082495601
GOV.UK VAT rates16,0321,888322255198
arXiv abstract10,9112,4772,0451,159491
Hacker News front page8,6633,8173,7991,1833,573
Total, 11 pages852,22997,58663,37437,03949,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.

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 highlights when 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 readsTokens, 11 pagesModel input costPer 1,000 pages
Raw HTML852,229$1.70$154.96
Markdown, full97,586$0.20$17.74
Markdown, smart63,374$0.13$11.52
Smart, no link URLs37,039$0.07$6.73
The fetch itself11 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:

  1. Scope control on every read: content mode, link handling, a token cap and a query filter, as measured above.
  2. Search that returns results, not a page: a SERP as structured organic results, so the agent picks sources before it reads them. search_and_read does both in one call.
  3. Map before crawl: a site's URL list with per-section counts, so the agent crawls the 40 pages it needs, not 4,000.
  4. Async jobs for anything long: crawl and batch return a job id and are polled, so a 500-page crawl never blocks the conversation.
  5. 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-mcp and QUANTICDATA_API_KEY set, or the hosted endpoint at https://api.quanticdata.io/mcp. Residential proxies sit underneath every fetch; you do not configure them.
  • Fetch mode: engine: "tls" or the default auto. All 11 pages in the table came back over plain HTTP; a browser is only needed when a page builds its text in JavaScript, and auto escalates on its own.
  • Scope: content_mode: "smart" with links_mode: "strip" for reading, 37,039 tokens for our 11 pages; article for news prose; max_tokens on 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

FAQ

Quick answers on mcp web scraper.

Something else? Ask us

What is an MCP web scraper?

It is an MCP server whose tools fetch web pages and return them to an AI model, usually as Markdown or JSON. The model calls the tool on its own mid-conversation. The difference between servers is what they return: in our 29 September 2026 test the same 11 pages were 852,229 tokens as raw HTML and 37,039 as smart Markdown without link URLs.

How many tokens does a web page cost an AI agent?

Across 11 public pages we measured a median of about 59,000 tokens of raw HTML per page and 3,568 tokens as smart Markdown. The range is wide: the Hacker News front page was 3,799 tokens in smart mode, a Python documentation page 18,604. Tokens were estimated as characters divided by 4.

Which content mode should an MCP scraper use?

Smart by default, article for news and blog prose, full only for debugging. On our set smart gave 63,374 tokens, article 49,610 and full 97,586. Article mode lost the ingredient quantities of a recipe page (one mention of a cup against seven in smart), so do not use it where the value is in a list or a table.

Does stripping links from scraped pages save tokens?

Yes, 42% on our 11 pages: from 63,374 to 37,039 tokens with the anchor text kept and the URLs removed. On the Hacker News front page the cut was 69%, from 3,799 to 1,183 tokens. Keep links only on calls where the agent must choose the next page to open.

Is there a free web scraping MCP server?

Our MCP package is free and open, and every account gets $2 of free API usage per month, which is 10,000 plain-HTTP page fetches at $0.0002 each. Model input is billed by your model provider, not by us.

Do I need a headless browser in an MCP scraper?

Not for most pages: all 11 pages in our table returned their full text over plain HTTP, with no browser. Rendering costs $0.001 per page against $0.0002 over plain HTTP, five times more, so let the default auto engine decide and escalate only the pages that build their text in JavaScript.

Give your agent 37K tokens instead of 852K

Our MCP server returned the same 11 pages at 96% fewer tokens than raw HTML, over plain HTTP. Every account gets $2 of free API usage each month, and failed requests are never billed.

Related reading