Introducing the Save API: turn any URL into clean Markdown
For two years, Save has done one thing well: turn a messy web page into clean Markdown with a single click. Today that same engine is available as an API.
If you build with LLMs, you already know the problem. Models read Markdown, not HTML. But the web ships HTML wrapped in navigation, ads, cookie banners, and JavaScript. Turning a URL into clean context is a surprisingly deep problem, and most teams end up maintaining a brittle pile of fetchers, headless browsers, and readability hacks to solve it.
The Save API solves it with one call.
One request, clean Markdown back
curl -X POST https://api.savemarkdown.co/v1/convert \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/article"}'
You get back the article as Markdown — headings, lists, links, images and code preserved, everything else stripped:
{
"markdown": "📄 Title: Example Article\n🔗 Source: ...\n\n---\n\n## Heading\n\nClean body...",
"meta": { "tier": 1, "cached": false, "domain": "example.com", "template": "markdown" },
"usage": { "credits": 1 }
}
No DOM library to ship. No headless browser to babysit. No readability heuristics to tune.
A tiered engine that only spends what it must
The API doesn’t brute-force every page through an expensive pipeline. It escalates only when it has to:
- Fetch — a server-side request with a real browser fingerprint and a strict SSRF guard. Static and server-rendered pages stop here. This is the fast, cheap path that handles most of the web.
- Render — if a page turns out to be a JavaScript shell with no real content, the request escalates to a headless render, then extracts. This happens automatically, only when the cheap path comes back thin.
- Extract — navigation, ads, cookie banners and boilerplate are removed. You keep the content that matters.
You can force or disable rendering per request with render: "always" | "never" | "auto". The response always tells you which tier handled the page, so there are no billing surprises.
Optional AI formatting
By default you get faithful Markdown extraction with no LLM in the loop — which is why it’s cheap and fast. When you want more than raw extraction, pass a template (clean, summary, outline, and more) and the API runs an LLM pass to reshape the content. That tier is token-metered, like the Claude API, so you only pay for the formatting you actually use.
Pricing that makes sense
| Tier | Price |
|---|---|
| Markdown (fetch + extract, no LLM) | $2 / 1,000 pages |
| Rendered (JavaScript pages) | $8 / 1,000 pages |
| AI-formatted (templates) | $3 / $25 per 1M input / output tokens |
Start with a free trial of 500 pages, then pay as you go. No seats, no minimums.
Built to be called by agents
Save has always been agent-friendly, and the API is discoverable the same way: it’s listed in our llms.txt, our agent-skills index (skill id save.api.url-to-markdown), and our API catalog. Point an agent at a URL and it gets back tokens worth keeping.
## Continue reading
The URL-to-Markdown API built for AI agents and RAG
LLMs read Markdown, not HTML. Here's how to feed your agents and RAG pipelines clean web content with one API call — and why a tiered fetch engine beats DIY scraping.
How to Save API Documentation as Markdown for Offline Reference
Save API docs, technical documentation, and developer guides as Markdown. Build an offline reference library. Perfect for developers and technical writers.
How the Save API renders JavaScript pages to Markdown
A look inside the tiered fetch engine: cheap server-side fetch first, headless render only when a page is a JS shell, then boilerplate stripped. How we keep quality high and cost near zero.
Save API vs Firecrawl vs Jina Reader: choosing a URL-to-Markdown API
A practical comparison of three URL-to-Markdown APIs for AI agents and RAG. How pricing, JavaScript rendering, and the cheap-vs-AI split actually differ — and when to pick each.
Written by
Jean-Sébastien Wallez
I've been making internet products for 10+ years. Built Save on weekends because I wanted my own reading library in clean markdown for Claude and Obsidian. Write here about web clipping, AI workflows, and the small things that make a personal knowledge base actually useful.