Website to Markdown API in 2026
20 URLs a call, $0.80 per 1,000.
A website to Markdown API takes a URL and returns the page as clean Markdown for a model. Microlink works out to about $1.07 per 1,000 requests on Pro, APIVerve charges 10 credits a call, and Firecrawl 1 credit a page.
SpecStream's Extract API turns 1 to 20 URLs a call into Markdown at $0.0008 a page ($0.80 per 1,000). A page that gives no text is not charged, and PDF, Word and Excel files are read in the same call.
The Extract API scores 0.908 F1 on WCXB, on the benchmarks page. The same key searches the web, so a model finds the pages and reads them in the next call.
New accounts get $10 of credit, no card. It covers 12,500 pages.
Website to Markdown APIs side by side
| SpecStream | Firecrawl | Jina Reader | Microlink | APIVerve | |
|---|---|---|---|---|---|
| Price per 1,000 pages | $0.80. A page that gives no text costs nothing | 1 credit a page on a basic scrape. Standard is $99 a month for 100,000 credits | Billed by the tokens in each page's output | Pro is $49 a month for 46,000 requests, about $1.07 per 1,000 | 10 credits a call. Pro is $99.99 a month for 1,000,000 credits, so 100,000 pages |
| Pages in one call | 1 to 20 URLs, up to 20 MB a call. The same URL twice is read once | One page a scrape. Crawl and map take a whole site | One URL a request: prepend https://r.jina.ai/ to it | Any URL, SPAs and JavaScript rendered pages included | One url a call to POST /v1/urltomarkdown |
| Pages that block a plain request | Tried again as a browser would ask, then in a real browser, then from the site's own feed, then from its newest public archive capture | Higher plans add more concurrent browsers | Your own proxy through X-Proxy-Url | Automatic proxy resolution on Pro | A headless browser, then a proxy. A page that still blocks is reported as a failure |
| What comes back | text in Markdown or plain text, with title, the published and modified dates, every email address on the page and read_from | Markdown. JSON, question and highlight formats add 4 credits a page | LLM friendly text, with an OCR mode at 40 times the tokens | Markdown with metadata by default: title, description and logo | title, the Markdown, and word, image and link counts |
| Fresh or cached | Read live on every call. read_from says whether the text came from the page, the site's feed or an archive, and captured_at dates an archive copy | A cached copy up to 2 days old by default, set by maxAge | Each request fetches the URL server side | A global edge cache, with a configurable TTL on Pro | Cached for one hour per URL and option set |
| Free to start | $10 of credit, no card: 12,500 pages | 1,000 credits a month, no card | 10M free tokens with each new key, and 20 requests a minute with no key | 25 requests a day, no card | 200 credits a month for non-commercial use, so 20 pages |
Why turn websites into Markdown with SpecStream
$0.80 per 1,000 pages, no plan
Every page read costs $0.0008, from the first call. Only a page returned with status ok is charged: empty, blocked, not_found, unsupported, invalid_url and failed cost nothing, and each reply carries its own price_usd. 100,000 pages cost $80.
Twenty URLs in one call
Send 1 to 20 URLs in urls. Each comes back in data.results in the order sent, with its status, text, title and dates. Each URL gets up to 30 seconds, all at once. Pages you already hold go in pages as HTML, and are converted with nothing fetched.
import os
import requests
reply = requests.post(
"https://api.specstream.ai/v1/extract",
headers={"Authorization": f"Bearer {os.environ['SPECSTREAM_API_KEY']}"},
json={
"urls": ["https://docs.python.org/3/whatsnew/3.13.html", "https://react.dev/learn"],
"format": "markdown",
},
timeout=60,
).json()
for page in reply["data"]["results"]:
if page["status"] == "ok":
print(page["url"], page["title"])
print(page["text"][:500])
print(reply["data"]["price_usd"])Pages behind a refusal
A page that refuses a plain read is tried again as a browser would ask for it, then in a real browser, then from the site's own feed, then from its newest public archive capture. read_from names the one that gave the text. A bot check's page is never returned as text, and a site whose robots.txt asks us not to read it comes back blocked, unbilled.
PDF, Word and Excel in the same call
A URL that points to a PDF, Word, Excel or EPUB file is read like a web page, at the same $0.0008 a document. See PDF to Markdown API for the prices of the document tools.
Find the pages on the same key
The Search API finds the URLs first, at $1 per 1,000 on the fast search, with site:, filetype: and after: held on every result. Pass its sources to the Extract API and the model has Markdown two calls later.
The top published score
The SpecStream Extract API scores 0.908 F1 on WCXB. The Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks. Every score and its method is on the benchmarks page.
Rows from the whole web on the same key
Deep Search returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row, with the source URL and read time on every value and the most a run can cost approved before it starts.
Other website to Markdown APIs
Apify, Website To Markdown actor
Listed from $9.00 per 1,000 webpages, with 1,000 pages at $11.99 in its own price table. SpecStream reads 1,000 pages for $0.80.
Jina Reader
Prepend https://r.jina.ai/ to a URL and get its text, billed by the tokens in the output, with 10M free tokens on each new key. SpecStream answers the same call at https://api.specstream.ai/jina for $0.80 per 1,000 pages: see Jina Reader compatible.
Firecrawl
Scrape and crawl at 1 credit a page, with 1,000 free credits a month and Standard at $99 a month for 100,000 credits. SpecStream answers Firecrawl's own POST /v2/scrape, map and crawl at https://api.specstream.ai/firecrawl, each page one page read: see Firecrawl migration.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to turn a website into Markdown with SpecStream
1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 12,500 pages.
2. Send the URLs to POST https://api.specstream.ai/v1/extract with the key as a Bearer token. format is markdown by default, or text.
curl -X POST https://api.specstream.ai/v1/extract \
-H "Authorization: Bearer $SPECSTREAM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://react.dev/learn"], "format": "markdown"}'3. Already on Jina Reader? Change https://r.jina.ai/<page> to https://api.specstream.ai/jina/<page> and send a SpecStream key as a Bearer token. Each page is one Extract API page.
4. Already on Firecrawl? Set the base address to https://api.specstream.ai/firecrawl and keep POST /v2/scrape with {"url": "<page>"}. The reply keeps data.markdown and data.metadata.
5. For an MCP client, add the server https://api.specstream.ai/mcp with OAuth or the API key. The read_pages tool takes {"urls": ["<url>"]} at the same price.
Frequently asked questions
Something we didn't answer? Talk to a human
What is the best website to Markdown API?
How much does a website to Markdown API cost?
Does it render JavaScript pages?
Can I convert HTML I already have?
pages as {"html": "<the page's HTML>", "url": "<its address>"}. Nothing is fetched, and each page costs $0.0008.Is a failed page charged?
ok is charged. empty, blocked, not_found, unsupported, invalid_url and failed cost nothing.Can I keep my Jina Reader or Firecrawl code?
https://api.specstream.ai/jina or https://api.specstream.ai/firecrawl with a SpecStream key. Each page costs $0.0008.Sources
SpecStream wrote this page. Each figure on another product comes from that product's own page.
- Firecrawl pricingfirecrawl.dev/pricing, read Nov 12, 2026
- Firecrawl docs, faster scrapingdocs.firecrawl.dev/features/fast-scraping.md, read Nov 12, 2026
- Jina Readerjina.ai/reader, read Nov 12, 2026
- Microlink URL to Markdownmicrolink.io/tools/url-to-markdown, read Nov 12, 2026
- Microlink pricingmicrolink.io/pricing, read Nov 12, 2026
- APIVerve URL to Markdown referencedocs.apiverve.com/ref/urltomarkdown, read Nov 12, 2026
- APIVerve pricingapiverve.com/pricing, read Nov 12, 2026
- Apify, Website To Markdown actorapify.com/smart_api/website-to-markdown.md, read Nov 12, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 12, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 12, 2026




