<!-- twin of https://specstream.ai/pdf-to-markdown-api -->
# PDF to Markdown API in 2026: one price per document, $0.0008

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

Most PDF to Markdown APIs bill by the page or by the call. Firecrawl takes 1 credit per PDF page, pdfRest bills each call over its plan at $0.06 to $0.115, and the Apify actor adds $0.00012 for every page.

SpecStream's Extract API reads a PDF, Word, Excel or EPUB file at its URL and returns its text, in Markdown by default, at $0.0008 a document ($0.80 per 1,000). One call takes 20 URLs, and a file with no text is not charged.

The Extract API scores 0.908 F1 on WCXB, on the [benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=pdf-to-markdown-api) page. The same key searches the web, so an agent finds a PDF with `filetype:pdf` and reads it in the next call.

[Get an API key](https://specstream.ai/signup?src=alternatives-pdf-to-markdown-api&utm_source=alternatives-md&utm_campaign=pdf-to-markdown-api&returnTo=%2Fworkspace%2Fagents%3Ftab%3Dkeys) New accounts get $10 of credit, no card. It covers 12,500 documents.

## PDF to Markdown APIs side by side

| | SpecStream | Firecrawl /parse | pdfRest | Apify PDF to Markdown actor |
|---|---|---|---|---|
| Price | $0.0008 a document, $0.80 per 1,000. A file that gives no text costs nothing | 1 credit per PDF page, scanned pages included. Standard is $99 a month for 100,000 credits | Per call. Premium is $9.99 a month for 600 calls, then $0.115 a call. Pro is $99.99 for 5,000, then $0.06 | $0.0011 a document plus $0.00012 a page |
| 1,000 PDFs of 20 pages | $0.80 | 20,000 credits, inside the $99 Standard plan | $55.99 on Premium: $9.99 plus 400 calls at $0.115 | $3.50: $1.10 in document fees and $2.40 in page fees |
| What you send | Up to 20 `http` or `https` URLs in one call, up to 20 MB a call | A file upload, up to 50 MB. For a public document URL, Firecrawl points you to `/scrape` | A file upload as `file=@/path/to/your_document.pdf` | PDF URLs or an uploaded file, up to 500 pages per document |
| Files it reads | PDF, Word, Excel, EPUB, images and web pages, in the same call | PDF, DOCX, XLSX and more | PDF | PDF only |
| What comes back | `text` in Markdown or plain text, with `title`, the `published` and `modified` dates and every email address the file carries | Markdown, per-page content, typed layout blocks or structured JSON | A Markdown file | Markdown, plain text or JSON chunks with page numbers |
| Free to start | $10 of credit, no card: 12,500 documents | 1,000 credits every month | 100 calls a month, with watermarked output | Pay per event, no monthly fee |

## Why read PDFs through SpecStream

### One price per document

A PDF read by the Extract API is one page read: $0.0008, the same as a web page. Firecrawl and the Apify actor count every page of the file, and pdfRest counts every call against a monthly plan. A file that gives no text comes back as `empty`, and a site that refuses the read comes back as `blocked`. Neither is charged.

### Twenty files in one call

Send 1 to 20 URLs in `urls`, PDF, Word, Excel, EPUB, images and web pages mixed. Each comes back in `data.results` in the order sent, with its `status`, `text`, `title` and dates. The same URL twice is read once.

```
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://arxiv.org/pdf/1706.03762"], "format": "markdown"},
    timeout=60,
).json()

for doc in reply["data"]["results"]:
    if doc["status"] == "ok":
        print(doc["title"], doc["text"][:500])
print(reply["data"]["price_usd"])
```

### Find the PDF and read it on one key

The [Search API](https://specstream.ai/search-api?utm_source=alternatives&utm_campaign=pdf-to-markdown-api) honors `filetype:pdf`, `site:` and `after:` in the query, and marks each PDF result with `file_type`. A fast search costs $1 per 1,000. Pass the PDF URLs to the Extract API and the agent has the text two calls later.

```
import os
import requests

H = {"Authorization": f"Bearer {os.environ['SPECSTREAM_API_KEY']}"}

found = requests.get(
    "https://api.specstream.ai/v1/web-search",
    params={"q": "EU AI Act guidelines filetype:pdf", "speed": "fast"},
    headers=H,
).json()
pdfs = [s["url"] for s in found["data"]["sources"] if s.get("file_type") == "pdf"]

read = requests.post(
    "https://api.specstream.ai/v1/extract", json={"urls": pdfs[:20]}, headers=H, timeout=60
).json()
```

### Files behind a refusal

A site 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` says which one gave the text, and `captured_at` dates an archive copy.

### 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=pdf-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=pdf-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 PDF to Markdown APIs

### Firecrawl /parse

Takes an uploaded PDF, DOCX or XLSX file of up to 50 MB and returns Markdown, per-page content, layout blocks or JSON. PDFs cost 1 credit per page, and the Standard plan is $99 a month for 100,000 credits. SpecStream reads the file at its URL for $0.0008, and answers Firecrawl's own `/v2/scrape` call: see [Firecrawl migration](https://specstream.ai/migrate/firecrawl?utm_source=alternatives&utm_campaign=pdf-to-markdown-api).

### pdfRest

A REST tool that converts an uploaded PDF into a Markdown file. Plans run from $9.99 a month for 600 calls to $99.99 for 5,000, with overage at $0.115 or $0.06 a call; the free plan gives 100 calls a month with watermarked output. SpecStream bills $0.0008 a document with no plan.

### Adobe PDF Services

Adobe's PDF Extract API has a PDF to Markdown job in its SDKs. The free tier gives 500 Document Transactions a month, and paid plans go through Adobe's sales team. SpecStream publishes one price, $0.80 per 1,000 documents, from the first call.

### Apify PDF to Markdown actor

A community actor that turns PDF URLs or uploads into Markdown, text or JSON chunks, at $0.0011 a document plus $0.00012 a page, up to 500 pages a document. It reads PDFs only. SpecStream reads PDF, Word, Excel and EPUB files and web pages in one call at $0.0008 each.

## How to convert PDFs 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 documents.

2. Send the PDF URLs to `POST https://api.specstream.ai/v1/extract` with the key as a Bearer token. `format` is `markdown` by default, or `text`.

```
const reply = await fetch("https://api.specstream.ai/v1/extract", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SPECSTREAM_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ urls: ["https://arxiv.org/pdf/1706.03762"], format: "markdown" }),
}).then((r) => r.json());

for (const doc of reply.data.results) {
  if (doc.status === "ok") console.log(doc.title, doc.text.slice(0, 500));
}
```

3. Already scraping PDF URLs with Firecrawl? Set the base address to `https://api.specstream.ai/firecrawl` and keep `POST /v2/scrape` with `{"url": "<the PDF>"}`. The reply keeps Firecrawl's `data.markdown` and `data.metadata`, and each scrape is one Extract API page.

4. 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>"]}` and bills each document as one page read.

## Frequently asked questions

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

SpecStream's Extract API, at $0.0008 a document, 20 URLs a call and 0.908 F1 on WCXB. It reads PDF, Word, Excel and EPUB files and web pages with one key, where Firecrawl bills 1 credit per PDF page and pdfRest bills each call.

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

SpecStream costs $0.80 per 1,000 documents. Firecrawl takes 1 credit per PDF page, with 100,000 credits for $99 a month. pdfRest is $9.99 a month for 600 calls, then $0.115 a call. The Apify actor is $0.0011 a document plus $0.00012 a page.

### Can I send a file from my disk?

Send its URL. The Extract API reads any public `http` or `https` address, so a signed link from your storage works, up to 20 MB a call.

### Does it read Word and Excel files too?

Yes. The same call reads PDF, Word, Excel and EPUB files, images and web pages, each at $0.0008.

### Is a file with no text charged?

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

### Can my agent convert PDFs through MCP?

Yes. Connect to `https://api.specstream.ai/mcp` with OAuth or an API key. The `read_pages` tool reads up to 20 URLs a call at $0.0008 each.

### Is there an open source PDF to Markdown tool?

MarkItDown is a Python utility you install and run on your own machines. SpecStream reads the file at its URL for $0.0008, with nothing to host.

## Sources

SpecStream wrote this page. Each figure on another product comes from that product's own page.

- [Firecrawl, best document parsing APIs](https://www.firecrawl.dev/blog/best-document-parsing-apis), read Nov 12, 2026
- [Firecrawl docs, Parse](https://docs.firecrawl.dev/features/parse), read Nov 12, 2026
- [Firecrawl pricing](https://www.firecrawl.dev/pricing), read Nov 12, 2026
- [pdfRest PDF to Markdown](https://pdfrest.com/apitools/pdf-to-markdown/), read Nov 12, 2026
- [pdfRest PDF to Markdown tutorial](https://pdfrest.com/learning/tutorials/how-to-programmatically-convert-pdf-to-markdown-for-ai-and-data-analysis-guide/), read Nov 12, 2026
- [pdfRest pricing](https://pdfrest.com/pricing/), read Nov 12, 2026
- [Apify, PDF to Markdown actor](https://apify.com/jcwilk/pdf-to-markdown), read Nov 12, 2026
- [Adobe Acrobat Services pricing](https://developer.adobe.com/document-services/pricing/main/), read Nov 12, 2026
- [Adobe PDF to Markdown API quickstart](https://developer.adobe.com/document-services/docs/overview/pdf-extract-api/quickstarts/pdf-to-markdown/python/), read Nov 12, 2026
- [MarkItDown README](https://github.com/microsoft/markitdown), 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
