<!-- twin of https://specstream.ai/website-to-markdown-api -->
# Website to Markdown API in 2026: 20 URLs a call, $0.80 per 1,000

Compared on Nov 12, 2026. The page: https://specstream.ai/website-to-markdown-api

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](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=website-to-markdown-api) page. The same key searches the web, so a model finds the pages and reads them in the next call.

[Get an API key](https://specstream.ai/signup?src=alternatives-website-to-markdown-api&utm_source=alternatives-md&utm_campaign=website-to-markdown-api&returnTo=%2Fworkspace%2Fagents%3Ftab%3Dkeys) 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](https://specstream.ai/pdf-to-markdown-api?utm_source=alternatives&utm_campaign=website-to-markdown-api) for the prices of the document tools.

### Find the pages on the same key

The [Search API](https://specstream.ai/search-api?utm_source=alternatives&utm_campaign=website-to-markdown-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](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=website-to-markdown-api) page.

### Rows from the whole web on the same key

[Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=website-to-markdown-api) 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](https://specstream.ai/migrate/jina?utm_source=alternatives&utm_campaign=website-to-markdown-api).

### 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](https://specstream.ai/migrate/firecrawl?utm_source=alternatives&utm_campaign=website-to-markdown-api).

## 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

### What is the best website to Markdown API?

SpecStream's Extract API, at $0.80 per 1,000 pages, 20 URLs a call and 0.908 F1 on WCXB. A page with no text costs nothing, and PDF, Word and Excel files are read in the same call.

### How much does a website to Markdown API cost?

SpecStream costs $0.80 per 1,000 pages. Microlink Pro works out to about $1.07 per 1,000 requests, APIVerve charges 10 credits a call, and Firecrawl Standard is $99 a month for 100,000 credits at 1 credit a page.

### Does it render JavaScript pages?

Yes. A page that gives no text to a plain read is tried in a real browser, then from the site's own feed, then from its newest public archive capture.

### Can I convert HTML I already have?

Yes. Send it in `pages` as `{"html": "<the page's HTML>", "url": "<its address>"}`. Nothing is fetched, and each page costs $0.0008.

### Is a failed page charged?

No. Only a page returned with status `ok` is charged. `empty`, `blocked`, `not_found`, `unsupported`, `invalid_url` and `failed` cost nothing.

### Can I keep my Jina Reader or Firecrawl code?

Yes. Point it at `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 pricing](https://www.firecrawl.dev/pricing), read Nov 12, 2026
- [Firecrawl docs, faster scraping](https://docs.firecrawl.dev/features/fast-scraping.md), read Nov 12, 2026
- [Jina Reader](https://jina.ai/reader), read Nov 12, 2026
- [Microlink URL to Markdown](https://microlink.io/tools/url-to-markdown), read Nov 12, 2026
- [Microlink pricing](https://microlink.io/pricing), read Nov 12, 2026
- [APIVerve URL to Markdown reference](https://docs.apiverve.com/ref/urltomarkdown), read Nov 12, 2026
- [APIVerve pricing](https://apiverve.com/pricing), read Nov 12, 2026
- [Apify, Website To Markdown actor](https://apify.com/smart_api/website-to-markdown.md), read Nov 12, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 12, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 12, 2026
