LLMs do better with Markdown than with raw HTML. HTML burns tokens on div soup, inline styles and tracking scripts. Markdown carries the same meaning in a fraction of the space.
The scrape call fetches a URL, renders it, finds the main content and converts it to Markdown. Navigation menus, cookie banners, footers and sidebars are left out, which is the part people usually spend a week tuning.
What stays
Headings keep their levels. Lists stay lists. Tables become Markdown tables. Links keep their targets so an agent can follow them. Code blocks stay code blocks. That structure is what lets a model answer “what does section 3 say” without rereading the whole page.
Why not write your own
You can. A fetch plus an HTML-to-Markdown library gets you 70 percent of the way. The rest is where the time goes: pages that render client-side, sites that block bots, content hidden in tabs, boilerplate that differs per template. We run that so you do not maintain it.
Where it fits
- Feeding documentation into a retrieval or fine-tuning pipeline.
- Moving content off an old CMS during a site migration.
- Letting an agent read a link a user pasted, through the MCP server.
Pricing
A scrape costs one page. The Free plan includes 100 a month, and Starter is 5,000 for $19. If you want a whole site once, skip the account: run the tool on the home page and buy an export from $9.
What a good conversion looks like
Open the result next to the page and check four things. The title and headings should match the visible outline of the page. The body text should be complete, with no paragraph missing from the middle. Links should still point somewhere useful, and images should either carry their alt text or be left out cleanly. If a page matches on those four, it is ready for whatever comes next. If it does not, the page probably uses an unusual layout, and it is worth looking at that page by hand before you run a batch of similar ones.
Chunking Markdown for retrieval
The reason people convert to Markdown is usually retrieval, so it is worth saying how to chunk it. Split on headings first. A section under a second-level heading is usually a coherent unit, with a title that tells you what it is about. If a section is too long, split it on paragraphs, and carry the heading text into every chunk so the chunk still makes sense when it is read alone. Store the page URL and the heading path with each chunk. Those two fields are what let you show a source and what let you re-crawl a page later and replace only the chunks that changed.
Pages that need extra thought
Not every page is an article. A pricing table converts to a Markdown table, which models read well, but a page built entirely from images will convert to very little text. A single-page app that loads its content after a login will return the login screen. A page with the same boilerplate in several languages will convert all of them. None of these are surprises once you have seen them, and a quick sample of your own URLs will show you which ones you have.
Turning one page into many
A single scrape is the building block. Run it on a list of URLs you already have, such as the pages in a sitemap, or hand the whole job to the crawl call when you do not have the list. Both return the same Markdown, so the code that consumes it does not care which route produced it.
Respecting the source
Only convert pages you may read. Public content is fine for research, migration of your own site and building tools for yourself. Do not republish someone else’s text as your own, and check the acceptable use policy if you are not sure.