Jina Reader alternative
The best Jina Reader alternatives
Jina Reader made URL-to-Markdown a one-line job. If token billing, a five-minute cache, Elastic's licensing or the need for more than text has you looking around, here is what to look for, what the options are, and how a call moves.
By Roger Campos · Last updated: September 2026
TL;DR
The best Jina Reader alternative depends on why you're leaving. For a fixed price per page, Markdown produced without a model, free cache hits for up to 30 days and screenshots, metadata or Lighthouse from the same key, URLpipe. To crawl whole sites, Firecrawl. To self-host, Crawl4AI — or Jina's own Apache-2.0 Reader repository. Stay on Jina for image captions and the no-signup prefix.
Free plan, no credit card. 1,000 credits a month.
Why switch
Why people look for a Jina Reader alternative
Jina Reader is good at its job: prefix a URL with r.jina.ai/ and you get Markdown back, JavaScript rendered, with options as headers. People who leave usually leave for one of five reasons.
- The bill follows the page, not the call. Reader charges the tokens in its response, so a long article costs several times a short one, and you learn the price after the call. Budgeting per URL means estimating page length first.
- The cache is short. Jina keeps results for about five minutes. A pipeline that re-reads the same URLs over hours or days pays for every read.
- Ownership and licensing. Elastic acquired Jina AI in October 2025, and commercial and on-premises licensing now goes through Elastic's sales team. The ReaderLM-v2 model is CC-BY-NC-4.0 — non-commercial. The Reader repository itself is Apache-2.0.
- Text is not the whole job. Once a pipeline also needs a screenshot of the page, its metadata, a Lighthouse score or its console errors, a text-only reader means a second and third vendor.
- Delivery and data residency. Reader answers in the HTTP response — there is no webhook or job token — and its EU endpoint is labelled experimental.
Criteria
What to look for in a replacement
- 1Output you can measure. Ask how much visible text survives and how much of the output is text a visitor never sees — menus, hidden panels, cookie policies. The second number is what pollutes your chunks.
- 2A real browser. Anything that fetches over plain HTTP returns an empty shell for a single-page app.
- 3A price you know before the call, and what a cache hit, a failed fetch and a bot check cost.
- 4The same options you use today: removing elements by selector, waiting for one to appear, blocking ads and cookie banners.
- 5An MCP server if an agent is the caller, and one that renders JavaScript.
Shortlist
The options, briefly
| Good at | Watch out for | |
|---|---|---|
| URLpipe | Fixed 1-credit Markdown made without a model; screenshots, metadata, Lighthouse and console from the same key; hosted MCP; EU processing | Single URLs only; no crawling, no self-hosting; no OCR for scanned PDFs |
| Firecrawl | Crawling, mapping and schema extraction across whole sites; PDFs; SDKs | Cached results still spend credits; 402 at the quota without auto-recharge |
| Microlink | Markdown on every plan alongside link previews and screenshots; free cache hits | 25 requests a day free; pauses at the quota |
| Crawl4AI | Apache-2.0, self-hosted, no per-page fee | You run and unblock it yourself |
| Jina's own repo | Apache-2.0 Reader you can run in Docker | ReaderLM-v2 is non-commercial; you host it |
Benchmark
Markdown quality, measured
Coverage is close across the board. The difference is how much junk comes along with it.
| Strategy | Visible text kept | Text the reader never sees | Cost / page |
|---|---|---|---|
| URLpipe — deterministic walk of the rendered DOM | 87.2% | 11.0% | $0 |
| Readability (the approach Jina Reader runs) | 88.2% | 21.3% | — |
| Firecrawl's selector blocklist | 85.8% | 17.0% | — |
| An LLM rewriting the page | 79.0% | 22.0% | $0.0025 |
Measured on 33 real pages, each strategy run on the same fetched DOM. These are the strategies, reimplemented — not the vendors' live APIs, which add their own tuning. URLpipe's converter reads no CSS, so text hidden only by a stylesheet can still leak.
URLpipe's /markdown walks the rendered DOM and writes down the main content — headings, paragraphs, lists, links, tables, code — in about 20 ms, the same way every time. No model is involved, which is why it costs what a page fetch costs. Try it on one of your own pages:
Migration
Moving a Jina Reader call to URLpipe
A Jina call is a GET with the target in the path and options in headers. URLpipe takes a POST with the target and options in a JSON body. Send "sync": true to get the Markdown in the response, as Jina does; leave it out and you get a token at once, with the result delivered to a signed webhook or waiting at GET /result/:token for 30 days.
curl https://r.jina.ai/https://example.com/pricing \
-H "Authorization: Bearer $JINA_API_KEY"curl -X POST https://urlpipe.dev/markdown \
-H "Authorization: Bearer $URLPIPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/pricing", "sync": true}'| Jina Reader | URLpipe |
|---|---|
| X-Remove-Selector | page_options.remove_selectors |
| X-Wait-For-Selector | page_options.wait_for_selector (up to 10 s) |
| X-Respond-With: html | POST /html |
| X-Respond-With: screenshot / pageshot | POST /screenshot — full page by default |
| X-No-Cache | "max_age": 0 |
| X-Target-Selector | No equivalent — URLpipe converts the main content |
| PDF URLs | The same POST /markdown — a PDF's text is read like a page's; a scan has none to read |
| X-With-Generated-Alt | No equivalent — keep Jina for image captions |
For an agent, the swap is a config change: point the client at https://urlpipe.dev/mcp with an organization token, and fetch_markdown replaces read_url. See the MCP docs.
Honestly
What you give up by leaving Jina
- The no-signup prefix. URLpipe's free tools need no account in a browser, but the API needs a key.
- Image captions. URLpipe reads the text of a page or of a PDF and runs no vision model over the images in either, so a scanned PDF has nothing for it to read.
- Very cheap short pages. If most of your pages are a few hundred tokens, per-token billing can cost less than a fixed credit.
- Search, embeddings and reranking from the same vendor.
Side by side
URLpipe and Jina Reader, feature by feature
| Capability | URLpipe | Jina Reader |
|---|---|---|
| Clean Markdown from a URL | Yes | Yes |
| Renders JavaScript (real browser) | Yes | Yes |
| Rendered HTML | Yes | Yes |
| Screenshots | Yes | Yes |
| Full-page screenshots | Yes | Yes |
| Element, dark-mode and hidden-selector screenshots | Yes | — |
| Metadata / Open Graph | Yes | Partial |
| AI summary | Yes | No |
| Keyword extraction endpoint | Yes | No |
| Lighthouse audits | Yes | No |
| JavaScript console capture | Yes | No |
| Technology detection | Yes | — |
| Several outputs from one page visit | /scrape | — |
| Whole-site crawling | No | No |
| Schema-based structured extraction | /extract | Yes |
| PDF input or output | Input and output | Input |
| MCP server | Hosted | Hosted |
| Async + webhook for a single URL | Yes | — |
| Idempotency key on retries | Yes | — |
| Your own labels on requests, usage by label | Yes | — |
| Cached results cost nothing | Yes | — |
| Residential-IP fetching | One exit, +25 credits/visit | Proxy by country |
| Official SDKs | Python, JavaScript, Ruby, Go | — |
| Self-hostable | No | Apache-2.0 repo |
| Free tier | 1,000 credits/mo | 10M tokens per key |
| EU processing, AI included | Yes | Experimental EU endpoint |
Jina Reader: checked against jina.ai/reader, jina.ai/api-dashboard/pricing, github.com/jina-ai/reader, github.com/jina-ai/MCP, huggingface.co/jinaai/ReaderLM-v2 on September 24, 2026. Products change — confirm on each vendor's site before you decide.
Pricing
What each one costs
| URLpipe | Jina Reader | |
|---|---|---|
| Free tier | $0 — 1,000 credits/mo, no card | 20 requests/min with no key; 10M tokens for every new key |
| Entry paid plan | Starter $19/mo — 20,000 credits | — |
| Mid plan | Pro $49/mo — 55,000 credits | — |
| Billing unit | Credits per call: Markdown, HTML, screenshot or console 1, Lighthouse 2, metadata 1 | Tokens in the response, prepaid |
| Overage | Paid plans never cut off — $1.50 per 1,000 credits | — |
| Cache hits | Free, up to 30 days old | Cache lasts about 5 minutes |
Jina's free tokens are shared across its APIs and every new key gets them. URLpipe's 1,000 credits a month is 1,000 Markdown conversions whatever each page's length, and a paid plan never stops at its allowance: it carries on at $1.50 per 1,000 credits.
Who it's for
An honest recommendation
Choose URLpipe if…
- You want a fixed price per page, known before the call
- You re-read URLs and want cache hits free for up to 30 days
- You also need screenshots, metadata, Lighthouse or console errors — or several from one page visit
- Your agent should read JavaScript-rendered pages over a hosted MCP server
- You need AI processing kept in the EU, or requests labelled by customer
Choose Jina Reader if…
- You rely on the no-signup r.jina.ai/ prefix
- You want images captioned by a vision model
- Most of your pages are short, so per-token billing is cheap
- You want to self-host the Apache-2.0 Reader repository
- You already use Jina's search, embeddings or reranker
Keep comparing
More on Jina Reader and its category
FAQ
Frequently asked questions
Yes, for URL-to-Markdown with a fixed price per page, output produced the same way every time without a model, and a cache that lasts up to 30 days instead of about five minutes. It also returns screenshots, metadata, summaries, Lighthouse audits and console errors from the same key. Stay on Jina for image captions and the no-signup prefix.
For a hosted API, URLpipe's free plan is 1,000 credits a month with no card — 1,000 Markdown conversions — and its free tools convert a page in the browser with no account. For self-hosting, Crawl4AI (Apache-2.0) or Jina's own Apache-2.0 Reader repository.
Yes, within limits: 20 requests a minute with no key, and 10 million free tokens for every new API key. After that, Reader is billed by the tokens in each response, in prepaid packages.
Not under its published licence, which is CC-BY-NC-4.0. Jina says commercial use needs a licence, sold through Elastic. The Reader service and its Apache-2.0 repository are separate from the model.
It covers removal and waiting: page_options.remove_selectors and page_options.wait_for_selector, plus ad and cookie-banner removal. It has no equivalent of X-Target-Selector — URLpipe converts the page's main content rather than one element.
Try URLpipe on the free plan.
1,000 credits a month, no card. Confirm your email and your key is live — most people make their first request inside five minutes.