Markdown API
One POST, up to 50 URLs, clean Markdown back — built for pipelines that feed LLMs.
Quickstart
Create an API key in your dashboard, then POST a list of URLs. Each result carries the converted Markdown plus token counts for the original HTML and the output, so you can measure what the cleanup saved.
curl -X POST https://web2md.org/api/v1/batch \
-H "Authorization: Bearer w2m_your_key" \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com/a","https://example.com/b"]}'Up to 50 URLs per request. Responses stream back per URL, so one slow page does not block the rest.
Why an API instead of a scraper plus a converter
Fetching HTML is the easy half. The hard half is deciding what on the page is the article and what is navigation, cookie banners, related-posts rails, and inline scripts — then keeping headings, lists, tables, and code blocks intact through the conversion. A generic HTML-to-Markdown library gives you Markdown-shaped noise.
The other half is the pages that refuse to be fetched. Reddit blocks datacenter IPs and renders comments in a React shadow DOM; many docs and dashboards render client-side. This API reads Reddit through its JSON endpoints and falls back across old.reddit.com, api.reddit.com, and www.reddit.com so a thread comes back with its comment tree rather than an empty shell.
And it reports the number that justifies the whole exercise: tokens before and after. A long article routinely drops by an order of magnitude once the markup is gone, which is the difference between fitting three sources in a context window and fitting thirty.
Who uses it this way
- SEO and content teams mining Reddit, Quora, and forum threads for what real people actually ask — then feeding the cleaned text to a model for clustering or summarising.
- Ecommerce and sourcing teams pulling product and listing pages in bulk to compare specs, pricing, and copy.
- RAG pipelines that need clean chunks. splitByTokens-style chunking is easier when the input is already structured Markdown rather than tag soup.
- Agents and coding assistants that need to read a list of URLs as part of a task, without a human clicking through each one.
Or let the agent call it directly (MCP)
If your workflow lives in Claude Desktop, Cursor, or another MCP client, skip the HTTP layer. The MCP server exposes conversion as a tool the agent can call on its own, including batch conversion, so you describe the job in plain language instead of writing the loop.
npx web2md-mcp-serverMarkdown API — FAQ
How many URLs can one request take?
50. Beyond that the request is rejected rather than silently truncated, so you always know what was processed. For larger jobs, chunk your list — each request is independent.
How does authentication work?
A bearer token: Authorization: Bearer w2m_your_key. Keys are created and revoked from your dashboard, and usage is counted against your plan rather than per key, so you can rotate freely.
What about pages behind a login or anti-bot wall?
Server-side fetching has a hard ceiling here: if a page needs your session, no API can see it from a datacenter. Reddit and similar public-but-hostile sites are handled through dedicated fallbacks. For genuinely authenticated pages, the browser extension reads the rendered DOM inside your own session — that is the path to use, and the API is not a substitute for it.
Is it free to try?
Yes. The free plan covers 3 conversions per day, which is enough to test the shape of the response and see the token numbers on your own pages. Paid plans lift the daily cap for pipeline use.
Full endpoint reference, response shape, and error codes are in the docs.