--- title: "Firecrawl vs Jina Reader vs Tavily Extract (2026): a live 20-page test" category: "comparisons" url: https://keirolabs.cloud/blog/firecrawl-vs-jina-reader-vs-tavily-extract --- ## The 60-second version Four services promise to turn any URL into clean markdown for your agent: Firecrawl, Jina Reader, Tavily Extract and Keirolabs /extract. On October 12, 2026, twenty real pages went through two of them, live, and all four rate cards came straight from the vendors' published pages. The short read: - **Jina Reader wins on breadth and speed.** Keyless r.jina.ai returned meaningful content from 15 of our 20 pages at a 829ms median, including a PDF, a YouTube video page and the New York Times front page that Keiro's extractor timed out on. It is also free up to 500 requests per minute with a free API key, and Jina never bills failed requests ([jina.ai/reader](https://jina.ai/reader)). - **Keirolabs wins on consistency and cleanliness.** Every successful Keiro extraction landed in a tight 1.5 to 2.9 second band, and its output is the densest of the two: 164k characters total against Jina's 598k for the same pages, because Keiro strips the navigation and boilerplate Jina ships. Six hard pages hit its 30-second timeout and came back empty. - **Firecrawl is the cheapest at volume.** 1 credit per page on the Standard plan works out to $0.83 per 1,000 pages, with error-status pages billed and truly empty results free ([pricing](https://www.firecrawl.dev/pricing)). Its real ceiling is concurrency, not price: 500 scrapes per minute and 25 concurrent browsers on Standard ([rate limits](https://docs.firecrawl.dev/rate-limits)). - **Tavily Extract has the fairest billing rule.** 1 credit per 5 successful URLs on basic, 2 credits per 5 on advanced, and "you never get charged if a URL extraction fails" is their own sentence ([credits](https://docs.tavily.com/documentation/api-credits)). At pay-as-you-go rates that is $1.60 per 1,000 pages on basic, and the free Researcher tier's 1,000 credits a month cover 5,000 pages before you pay anything. The full 20-page scoreboard, the price math and where each product loses are below. Every pricing figure cites the vendor's own page, and the live test data is reproducible from the methodology section. ## How we tested Twenty URLs across nine difficulty categories: static content, table-heavy pages, a PDF, documentation SPAs, JavaScript-heavy app pages, paywalled news, video, login-walled social pages, and one anti-bot e-commerce page. The same 20 URLs went through both live services on October 12, 2026, one request at a time, from the same machine. - **Keirolabs /extract**: the production endpoint at its default medium mode, `POST /api/v2/extract` ([docs](https://keirolabs.cloud/pricing)). - **Jina Reader**: `https://r.jina.ai/` with no API key, which means the free 20 RPM keyless lane ([rate limits](https://jina.ai/api-dashboard/rate-limit/)). Keirolabs /extract and Jina Reader were called live, one request at a time. Firecrawl and Tavily Extract are compared on their published pricing, billing rules and rate limits, which is exactly what their customers' invoices are built from. The test measures what a working agent pipeline cares about: did we get the content, how fast, and how much junk came with it. Success is scored three ways in the table below: **ok** means at least 1,000 characters of real content, **thin** means the service returned something but under 1,000 characters (usually a stub or a block page), **fail** means no usable content. ## The 20-page scoreboard | Page | Category | Keiro /extract | Jina Reader | |---|---|---|---| | en.wikipedia.org/wiki/Web_scraping | static | ok, 1,829ms, 44,319 chars | ok, 874ms, 49,238 chars | | news.ycombinator.com | static | ok, 1,874ms, 9,444 chars | ok, 598ms, 16,389 chars | | Wikipedia: countries by GDP (nominal) | table-heavy | ok, 1,969ms, 54,895 chars, pipes mangled | ok, 3,445ms, 199,186 chars, nav included | | arxiv.org/abs/1706.03762 | paper | ok, 1,704ms, 3,694 chars | ok, 561ms, 2,467 chars | | arxiv.org PDF of the same paper | pdf | **fail** after 31,469ms | ok, 829ms, 40,738 chars | | react.dev/learn | docs SPA | ok, 2,135ms, 12,678 chars | ok, 589ms, 16,737 chars | | docs.stripe.com/payments | docs SPA | **thin**, 2,809ms, 421 chars | ok, 2,673ms, 8,035 chars | | linear.app/pricing | JS-heavy | ok, 2,332ms, 2,071 chars | ok, 550ms, 2,203 chars | | github.com/langchain-ai/langchain | JS-heavy | ok, 2,448ms, 4,535 chars | ok, 570ms, 6,564 chars | | blog.mozilla.org | blog | ok, 1,893ms, 3,828 chars | ok, 2,128ms, 13,034 chars | | bbc.com/news | news | ok, 2,309ms, 7,254 chars | ok, 603ms, 18,237 chars | | nytimes.com front page | paywall | **fail** after 31,490ms | ok, 817ms, 119,829 chars, nav included | | wsj.com front page | paywall | **fail** after 31,496ms | thin, 15,715ms, 171 chars | | spiegel.de/politik | non-English | ok, 2,479ms, 7,789 chars | ok, 3,366ms, 39,524 chars | | youtube.com video page | video | **fail** after 31,504ms | ok, 1,213ms, 29,484 chars | | reddit.com/r/MachineLearning | login wall | fail, blocked by the service | fail, 378ms, 349 chars of login wall | | x.com/elonmusk | login wall | **fail** after 31,648ms | fail, 486ms, 235 chars of login wall | | linkedin.com/company/google | auth wall | ok, 2,876ms, 12,614 chars | ok, 789ms, 35,231 chars | | amazon.com product page | anti-bot | thin, 1,517ms, 372 chars | thin, 732ms, 495 chars | | postgresql.org/docs/current/intro.html | docs | **fail** after 31,648ms | thin, 1,966ms, 157 chars | The aggregate lines: Keiro returned real content from 11 of 20 pages at a 2,135ms median, plus 2 thin results and 7 failures. Jina returned real content from 15 of 20 at an 829ms median, plus 3 thin results and 2 failures. On total volume Jina shipped 598,719 characters to Keiro's 163,914, and a lot of that difference is Jina shipping site navigation and citation boilerplate Keiro strips. ## What the numbers actually show **The speed story is not what the medians suggest.** Jina's 829ms median is real but partly a cache effect: keyless requests hit Jina's shared cache, and its own site lists 7.9 seconds as the average r.jina.ai latency ([jina.ai/reader](https://jina.ai/reader)). The uncached pages in our run tell that story: wsj.com took 15.7 seconds, spiegel.de 3.4. Keiro's 2.1 second median sits on a much tighter 1.5 to 2.9 second band, every single time, which matters more for a pipeline with a deadline than a fast median does. **Keiro's failures share one signature.** Six of its seven failures ran for almost exactly 31.5 seconds and returned empty: the arxiv PDF, both paywalled front pages, the YouTube page, x.com and postgresql.org. That is a visible internal 30-second timeout giving up rather than a fast, cheap rejection. The seventh, reddit, failed in 1.5 seconds with "Blocked domain skipped", which is a deliberate policy and billed at 1 credit instead of the usual 3. A hard page that fails in 31 seconds is the worst of both worlds: your agent waits, then gets nothing. If you route hard pages to Keiro's browser tier instead of /extract, this is the gap you are paying the browser to close. **Nobody beats the hard walls.** x.com and reddit returned login walls to both services, and Amazon returned a 400-character stub to both. The services that advertise anti-bot handling are selling that capability at different strengths, but on the three genuinely hostile pages in this test, both live services lost, and no published pricing from Firecrawl or Tavily changes that result. Anti-bot extraction is a browser-tier problem; every plain extractor in this market will hand you the block page eventually. **Jina's output carries a tax: boilerplate.** The New York Times result is the clearest case: 119,829 characters, of which the first several hundred are "skip to content", advertisement markers and section navigation. Jina also prepends a useful Title, URL Source and Published Time block, which is genuinely good for RAG metadata and unique among the four products here. Keiro strips the chrome instead: the BBC run is 7,254 characters against Jina's 18,237 for the same page, and Mozilla 3,828 against 13,034. Neither approach is free; Jina costs you a cleaning pass, Keiro costs you the metadata header. **Table fidelity was ugly on both.** The GDP page, the one table-heavy page in the set, came back with mangled pipes from Keiro and a 199k-character everything-dump from Jina. Neither service produced a clean markdown table of the world's economies. If tables are your workload, test your actual pages before you pick, and budget for a parsing pass either way. PRICE PER 1,000 EXTRACTED PAGES, USD (OCT 2026) Jina Reader (free key, 500 RPM) $0 Firecrawl Standard $0.83 Tavily basic extract $1.60 Keiro Startup $2.40 Tavily advanced extract $3.20 Firecrawl Hobby $3.20 Keiro Pro $4.00 Keiro Essential $7.20 Math shown below; every rate from the vendor's own page, checked 2026-10-12. Jina's free lane is real: 500 requests/min with a free key, failures never billed, 10M free tokens for new keys. Firecrawl at 1 credit per page on each plan's monthly credits; Tavily at 1 credit per 5 successful basic-extract URLs; Keiro at 3 credits per request on each plan's monthly credits. ## Price per 1,000 pages, with the billing rules that matter The sticker price is half the story. What a failed page costs you decides the real bill on hard crawls, and the four vendors run the full spectrum. | Service | Published rate | Works out to, per 1,000 pages | What a failure costs | |---|---|---|---| | **Jina Reader** | free keyless at 20 RPM; free key at 500 RPM, then token-billed | **$0** on the free lane | never billed, in Jina's own words ([jina.ai](https://jina.ai/reader)) | | **Firecrawl** | 1 credit per basic page; Standard $83/mo includes 100,000 credits | **$0.83** on Standard; $3.20 on Hobby; $0.60 on Scale | truly empty results are free, but "a page that responds with an error status such as 403 or 404 is still returned to you and costs 1 credit" ([pricing](https://www.firecrawl.dev/pricing)) | | **Tavily Extract** | basic: 1 credit per 5 successful URLs; advanced: 2 per 5 | **$1.60** basic, $3.20 advanced at the $8/1k pay-as-you-go rate | "You never get charged if a URL extraction fails" ([credits](https://docs.tavily.com/documentation/api-credits)) | | **Keirolabs /extract** | 3 credits per request; Startup $100/mo includes 125,000 credits | **$2.40** on Startup; $4.00 on Pro; $7.20 on Essential | the spec bills per request ([pricing](https://keirolabs.cloud/pricing)); in our probes a blocked-domain failure was charged 1 credit, and the extract endpoint is not on the free tier | Read the failure column before the price column if your corpus has hostile pages in it. On the seven failures in the Keiro run, the blocked-domain one cost 1 credit; the timeout failures returned no billing field, so that meter cannot be read off the response. A pipeline that hits 403 and 404 pages constantly is strictly cheaper on Tavily's success-only billing than on any per-request meter, and that difference compounds at crawl scale. Two more economics that do not show in the per-page price. Firecrawl's ceiling is concurrency: 25 concurrent browsers on Standard, 500 scrapes per minute, with a queue that will hold 2,000 jobs per unit of concurrency and reject the rest ([rate limits](https://docs.firecrawl.dev/rate-limits)). And Tavily's free Researcher tier, 1,000 credits a month, covers 5,000 basic-extract pages a month before any card is involved ([credits](https://docs.tavily.com/documentation/api-credits)), which is the most generous free extraction allowance of the four by a wide margin. ## The four, one by one **Firecrawl is the crawler's extractor.** The per-page price at volume ($0.83 per 1,000 on Standard) is the best in the field, the endpoint set (scrape, crawl, map, search, agent) is the deepest, and the failure rule is fair if your pages answer with content and rough if they answer with 403s. What you are buying is a crawling platform that happens to return markdown, with the concurrency ceilings that implies. If your workload is "crawl 50,000 pages of a normal site", Firecrawl is the default answer. **Jina Reader is the free lane and the breadth king.** Nothing else in this test takes a PDF, a YouTube page and the New York Times front page in stride, at a sub-second cached median, for $0 at 500 requests per minute. The tax is output cleanliness: navigation boilerplate in most results, a 7.9 second published average on uncached pages, and the pipes on table-heavy pages. For prototype agents, research one-offs and anything budget-constrained, Jina Reader keyless or keyed is the strongest free tool in the category, and its metadata header (Title, URL Source, Published Time) saves RAG pipelines a parsing step. **Tavily Extract is the billing-rule winner.** Success-only billing means the advertised price is the real price, 5 URLs batch per request keeps request counts down, and the free tier's 5,000 pages a month is enough to run a real pilot. Rate limits travel with your search plan: 100 RPM on a dev key, 1,000 RPM on production ([rate limits](https://docs.tavily.com/documentation/rate-limits)). If your corpus contains dead links or hostile pages, Tavily's meter is the one that forgives. **Keirolabs /extract is the clean-output, consistent-latency option.** Every success came back in under three seconds, and the output is the densest per page in this test, which saves the tokens your LLM spends reading the result. The trade: six hard pages timed out at 31 seconds, the endpoint sits above the free tier, and the per-request meter bills failures. Where it fits: agents that already use Keiro search and want extraction in the same pipeline, on corpora of mostly-normal pages, where output compactness is worth more than breadth. For the walls that stopped it, the same platform's browser tier is the designed answer. ## Which one for which job **Prototyping and research, $0 budget.** Jina Reader with a free key. 500 RPM, metadata headers, PDFs included, failures free. Add a cleaning pass for the boilerplate and it carries a surprisingly long way into production. **Large crawls of ordinary sites.** Firecrawl. The concurrency model is built for exactly this, and $0.83 per 1,000 pages at Standard volume is untouchable. Watch the 403-billing rule on hostile segments of your corpus. **Hostile or unknown corpora.** Tavily Extract. Success-only billing means the pages that fail cost nothing, and the free tier sizes your pilot for free. **Agent pipelines that already pay for search.** Keep extraction in the same API. On Keiro, /extract rides the same key and account as /search/lite, the output is the cleanest per character in this test, and the browser tier covers the pages /extract times out on. The rate limits of all of these live in our rate limits table if that is the deciding factor: [Search API rate limits in 2026](/blog/search-api-rate-limits-2026). ## The boring takeaway Breadth and price say Jina Reader and Firecrawl; consistency, output density and billing fairness split the other prizes. The decision that actually matters is the one this test makes obvious: run your own twenty pages, the ugly ones included, through whichever two you are deciding between, and price the failures as carefully as the successes. The vendor pages sell the successes. Your pipeline runs on the failures. Every live number on this page came from the October 12, 2026 run described above, and every pricing figure links to the vendor's own documentation with the same date. Send corrections with a link and they get applied.