Quick answer
How much does a URL-to-Markdown API cost per 1,000 pages in 2026?
Across 21 APIs whose list prices we read on 2026-10-22, reading 100,000 plain pages a month costs a median $0.99 per 1,000, and $1.00 when pages need a browser. At 1 million pages a month the medians fall to $0.774 and $0.899. WebReaderAPI, which publishes this index, charges $0.22/1K pages for plain pages at 100,000.
The index in six numbers
$2.00
median per 1,000 plain pages at 10,000 a month
21 APIs
$0.99
median per 1,000 plain pages at 100,000 a month
21 APIs
$0.774
median per 1,000 plain pages at 1 million a month
20 APIs
$1.00
median per 1,000 browser-rendered pages at 100,000 a month
18 APIs
$0.899
median per 1,000 browser-rendered pages at 1 million a month
17 APIs
3 + 7
APIs that state crypto payment on an account, plus APIs taking per-request USDC (x402)
How was the index built?
We read each provider's public pricing page on 2026-10-22 and kept only figures shown there; every source is listed at the bottom. A "page" is one URL read and returned as Markdown or text, with the provider's default proxy and no paid add-on.
- Plain page: no JavaScript rendering. Browser page: rendered in a headless browser first; providers that always render (Firecrawl, Olostep, Diffbot) have the same price in both tables.
- Price at a volume: the least expensive published way to buy that many pages every month on one provider (plan, plan plus published overage, or pay as you go), divided by the pages used. A $99 plan used for 100,000 pages counts as $0.99 per 1,000 even if it includes more.
- Credit multipliers are applied, for example 5 credits per browser page at ScrapingBee, ZenRows and Scrape.do.
- Free tiers are listed, not priced. APIs billed by tokens, browser time, data volume or compute, and one API whose Markdown output we could not confirm, are listed separately.
WebReaderAPI is shown for reference and is not counted in the medians.
Price per 1,000 plain pages, by monthly volume
Static pages, read without a browser. "—" means not published or not self-serve at that volume.
| API | 10K pages a month | 100K pages a month | 1M pages a month |
|---|---|---|---|
| WebReaderAPI (prepaid, never expires) | $0.38/1K pages | $0.22/1K pages | $0.07/1K pages |
| Firecrawl | $4.40 | $0.99 | $0.749 |
| Tavily Extract | $1.60 | $1.40 | $1.30 |
| Exa contents | $1.00 | $1.00 | $1.00 |
| Parallel Extract | $1.00 | $1.00 | $1.00 |
| Linkup fetch | $1.00 | $1.00 | $1.00 |
| Olostep | $2.90 | $0.99 | $0.399 |
| ScrapeGraphAI | $2.00 | $1.00 | $1.25 |
| Diffbot | $29.90 | $2.99 | $0.899 |
| ScrapingBee | $1.90 | $0.49 | $0.099 |
| ScraperAPI | $4.90 | $0.49 | $0.149 |
| ZenRows | $0.50 | $0.39 | $0.199 |
| Scrapfly | $3.00 | $0.30 | $0.10 |
| Scrape.do | $2.90 | $0.29 | $0.099 |
| Crawlbase | $2.10 | $0.764 | $0.349 |
| Bright Data Web Unlocker | $1.50 | $1.50 | $1.30 |
| Oxylabs Web Scraper API | $3.00 | $1.00 | $2.50 |
| Decodo Web Data API | $1.90 | $0.49 | $0.249 |
| Scrapeless | $1.00 | $0.90 | $0.80 |
| Hyperbrowser Fetch | $3.00 | $1.00 | — |
| Steel scrape | $5.00 | $5.00 | $5.00 |
| Crawl4AI Cloud | $1.00 | $0.50 | $0.395 |
Prices checked on
List prices in USD, read on 2026-10-22. Our prices: the WebReaderAPI pricing page on the same date.
Price per 1,000 browser-rendered pages, by monthly volume
Pages that need JavaScript, rendered in a headless browser. APIs that document no browser option are left out of this table.
| API | 10K pages a month | 100K pages a month | 1M pages a month |
|---|---|---|---|
| WebReaderAPI (2 credits per page) | $0.75/1K pages | $0.435/1K pages | $0.148/1K pages |
| Firecrawl | $4.40 | $0.99 | $0.749 |
| Tavily Extract | $3.00 | $2.36 | $2.90 |
| Linkup fetch | $5.00 | $5.00 | $5.00 |
| Olostep | $2.90 | $0.99 | $0.399 |
| ScrapeGraphAI | $2.00 | $1.00 | $1.25 |
| Diffbot | $29.90 | $2.99 | $0.899 |
| ScrapingBee | $1.90 | $0.99 | $0.599 |
| ScraperAPI | $4.90 | $1.49 | $0.975 |
| ZenRows | $2.50 | $0.99 | $0.549 |
| Scrapfly | $3.00 | $1.00 | $0.56 |
| Scrape.do | $2.90 | $0.99 | $0.699 |
| Crawlbase | — | $0.99 | $0.599 |
| Bright Data Web Unlocker | $1.50 | $1.50 | $1.30 |
| Oxylabs Web Scraper API | $3.00 | $5.00 | $2.50 |
| Decodo Web Data API | $1.90 | $0.99 | $0.999 |
| Hyperbrowser Fetch | $3.00 | $1.00 | — |
| Steel scrape | $5.00 | $5.00 | $5.00 |
| Crawl4AI Cloud | $1.00 | $0.99 | $0.667 |
Prices checked on
Why do prices differ so much between APIs?
Four things explain most of the spread.
- Product type. General scraping APIs (ScrapingBee, Scrape.do, ZenRows, Scrapfly) are priced for volume and reach about $0.10 per 1,000 plain pages at 1 million a month. AI-focused readers (Exa, Parallel, Linkup) charge a flat $1.00 and add retrieval features.
- Browser multipliers. A browser page costs 2 to 10 times a plain page at credit-based APIs; flat-priced APIs charge the same for both.
- Plan steps. Many providers sell monthly plans with a large allowance, so small users pay for unused pages: the median at 10,000 plain pages a month is $2.00.
- Expiry. Most plans reset unused credits monthly; ScrapeGraphAI, Crawlbase, Crawl4AI Cloud keep bought credits without a monthly reset.
Free tiers, expiry, crypto, identity checks and robots.txt
What each provider states on the pages we read. "Not stated" means the pages did not say.
| API | Free tier | Credit expiry | Crypto payment | Identity checks | robots.txt |
|---|---|---|---|---|---|
| WebReaderAPI | None | Never | BTC, USDT, USDC, ETH, SOL, LTC | None: no ID, no selfie, no documents | Respected; never overridden |
| Firecrawl | 1,000 credits a month, no card | Plan credits reset monthly | No (cards, PayPal) | None stated | Respected by default; override on Enterprise only |
| Tavily Extract | 1,000 credits a month (5,000 basic URLs) | Reset monthly | Only at its discretion (terms) | None stated | Not stated |
| Exa contents | $10 credit a month | Free credit resets monthly | Per request, USDC (x402) | Card for pay as you go | Stated for its index crawler, not for user fetches |
| Parallel Extract | 5,000 requests a month | Free credit expires monthly | Per request, USDC (x402) | Card for the monthly credit | Stated for its index crawler, not for user fetches |
| Linkup fetch | $20 a month (professional email) | Not stated | Per request, USDC (x402) | Professional email for free credit | Crawling respects it; fetch not stated |
| Olostep | 500-request trial | Plan monthly; top-ups 6 months | Per request, USDC (x402) | Card for top-ups | Tools to respect it; default not stated |
| ScrapeGraphAI | 500 credits | Plan credits don't carry over; top-ups never expire | Agents only (MPP) | Not stated | Customer must comply (terms) |
| Diffbot | 10,000 credits a month | Quota resets each period | Not stated | No card for the free plan | Crawl obeys by default; Extract not stated |
| ScrapingBee | 1,000 credits | No rollover | No | Card for paid plans | Not stated |
| ScraperAPI | 5,000 credits for 7 days | Expire each billing period | No | None stated | Not stated |
| ZenRows | 5,000 credits a month | At renewal | Accounts: no; agents: USDC (x402) | Email validation | Not stated |
| Scrapfly | 1,000 credits once | No rollover | Not stated | KYC for every customer | Crawler API respects it by default; can be disabled |
| Scrape.do | 1,000 credits a month | Not stated | Yes (coins not stated) | None stated | Not stated |
| Crawlbase | 1,000 credits | Pay as you go: nothing expires | Not stated | None stated | Not stated |
| Bright Data Web Unlocker | 5,000 credits a month | Free credits reset monthly | No | Card for personal-email accounts; company KYC for robots-disallowed pages | Honoured by default |
| Oxylabs Web Scraper API | $5 credit once | End of cycle | No | KYC for every customer | Not mentioned |
| Decodo Web Data API | Up to 10,000 requests a month | Unused amounts expire monthly | Yes (via CoinGate) | Automatic check, then KYC | Not stated |
| Scrapeless | Trial, size not stated | Prepaid minimum not kept | Yes (coins not stated) | None for basic packages | Not stated |
| Hyperbrowser Fetch | 5,000 credits | Bought credits: 12 months | Per request, USDC (x402) | Not stated | Not stated |
| Steel scrape | $30 once (90 days) | Launch credit 90 days | Per request, USDC (x402) | No card | Terms forbid violating it |
| Crawl4AI Cloud | 1,000 credits a month | Bought credits never expire | Not stated | No card | Terms require honouring it |
Prices checked on
What are the main findings?
- Plain pages are cheap at volume. At 1 million pages a month, ScrapingBee ($0.099), Scrape.do ($0.099), Scrapfly ($0.10) list the lowest plain-page prices.
- Browser pages cost more. At 1 million a month, Olostep ($0.399), ZenRows ($0.549), Scrapfly ($0.56) list the lowest browser-page prices.
- The best-known reader is not the least expensive. Firecrawl lists $0.99 per 1,000 at 100,000 pages and $0.749 at 1 million, with every page rendered.
- Crypto is rare on accounts. Scrape.do, Decodo Web Data API, Scrapeless state crypto payment; Exa contents, Parallel Extract, Linkup fetch, Olostep, ZenRows, Hyperbrowser Fetch, Steel scrape take per-request USDC through x402.
- robots.txt is often left to the customer. Providers stating a robots.txt-respecting default, at least on their crawl products: Firecrawl, Diffbot, Scrapfly, Bright Data Web Unlocker. Many say nothing.
- KYC is the exception. Oxylabs and Scrapfly ask every customer for it; Decodo runs an automatic check first.
APIs billed another way (not in the medians)
These bill by tokens, browser time, data volume or compute, or did not confirm Markdown output, so a price per page depends on your pages.
| API | Price | Note |
|---|---|---|
| Jina Reader | $50 per 1 billion output tokens; $500 per 11 billion | Billed per token: the cost per page depends on page length. 10 million free tokens per new key, non-commercial only. |
| Cloudflare Browser Run | $0.09 per browser-hour after 10 included hours, $5 monthly minimum | Billed by browser time; /markdown, /content and /crawl endpoints. |
| Spider | $1 per GB of content plus compute | Billed by data volume; the per-page figures it publishes are its own estimates. |
| Apify Website Content Crawler | Compute units ($0.13 per unit on Business) | Billed by compute; the per-page figures it publishes are its own estimates. |
| Zyte API | $0.13 per 1,000 static requests (website tier 1, pay as you go); $1.01 with a browser | Price depends on a tier Zyte assigns per website; Markdown output not stated on the pages we read. |
Prices checked on
Can I reuse this data?
Yes. The tables on this page are published under the Creative Commons Attribution 4.0 licence (CC BY 4.0): copy and adapt them with a link to this page and the date 2026-10-22. We read the prices again at least once a month.
If a figure is wrong, write to [email protected] with the page that shows the right one; we correct it and note the change in the changelog.
Price index: common questions
Which URL-to-Markdown API costs least?
It depends on volume and on JavaScript. On 2026-10-22, the lowest plain-page prices at 1 million pages a month were ScrapingBee at $0.099 and Scrape.do at $0.099 per 1,000; the lowest browser-page price at that volume was Olostep at $0.399.
How much does Firecrawl cost per page?
Firecrawl charges 1 credit per page with JavaScript included: $19 for 5,000 credits on Hobby, $99 for 100,000 on Standard and $749 for 1 million on Scale, read on its pricing page on 2026-10-22. JSON extraction adds 4 credits per page.
Why is Jina Reader not in the main tables?
Jina bills by output tokens ($50 per 1 billion tokens on its smallest package), so its price per page depends on how long your pages are. It is listed in the table of APIs billed another way.
Does WebReaderAPI count itself in the medians?
WebReaderAPI publishes this index and appears in the first rows for reference only. The medians use the other providers.
How often is the index updated?
At least once a month, and when a listed provider changes its public prices. The date at the top shows the last full check.
Sources (26)
- Firecrawl: pricing — Firecrawl (read 2026-10-22)
- Tavily Extract: pricing — Tavily (read 2026-10-22)
- Exa contents: pricing — Exa (read 2026-10-22)
- Parallel Extract: pricing — Parallel (read 2026-10-22)
- Linkup fetch: pricing — Linkup (read 2026-10-22)
- Olostep: pricing — Olostep (read 2026-10-22)
- ScrapeGraphAI: pricing — ScrapeGraphAI (read 2026-10-22)
- Diffbot: pricing — Diffbot (read 2026-10-22)
- ScrapingBee: pricing scrapingbee.com/pricing — ScrapingBee (read 2026-10-22)
- ScraperAPI: pricing scraperapi.com/pricing — ScraperAPI (read 2026-10-22)
- ZenRows: pricing docs.zenrows.com/first-steps/pricing.md — ZenRows (read 2026-10-22)
- Scrapfly: pricing — Scrapfly (read 2026-10-22)
- Scrape.do: pricing — Scrape.do (read 2026-10-22)
- Crawlbase: pricing — Crawlbase (read 2026-10-22)
- Bright Data Web Unlocker: pricing — Bright Data (read 2026-10-22)
- Oxylabs Web Scraper API: pricing oxylabs.io/pricing/web-scraper-api — Oxylabs (read 2026-10-22)
- Decodo Web Data API: pricing help.decodo.com/docs/web-data-api-billing — Decodo (read 2026-10-22)
- Scrapeless: pricing — Scrapeless (read 2026-10-22)
- Hyperbrowser Fetch: pricing — Hyperbrowser (read 2026-10-22)
- Steel scrape: pricing — Steel (read 2026-10-22)
- Crawl4AI Cloud: pricing — Crawl4AI (read 2026-10-22)
- Jina Reader: pricing — Jina Reader (read 2026-10-22)
- Cloudflare Browser Run: pricing — Cloudflare Browser Run (read 2026-10-22)
- Spider: pricing — Spider (read 2026-10-22)
- Apify Website Content Crawler: pricing apify.com/apify/website-content-crawler — Apify Website Content Crawler (read 2026-10-22)
- Zyte API: pricing — Zyte API (read 2026-10-22)