Guides

Best web scraping APIs in 2026, priced per 1,000 successful pages

Eight web scraping APIs at the ~$100 plan, priced per 1,000 pages you can actually use: plain, rendered, residential and walled sites, with who bills 404s and who doesn't.

7 min read
Best web scraping APIs 2026 compared per 1,000 pages: cheapest plain page $0.10, rendered plus residential $2.48–4.95, MeshArc walled sites $0.40 after one render, 4 of 8 APIs bill 404s.
On this page

Every scraping API prices in credits, and no two vendors' credits mean the same thing. One credit buys a plain HTTP fetch at one vendor, a rendered page at another, and a 404 at a third. So "100,000 credits for $99" tells you almost nothing until you know what a page costs at each rung, and which responses you pay for that you can't use.

This post does the arithmetic for eight APIs at the plan closest to $100 a month. The unit is the one that matters to a developer: dollars per 1,000 pages you can actually use. Every competitor figure was read off the vendor's own pricing page or docs on 4 November 2026. MeshArc is our product; where another API is cheaper or better, the table says so.

How the numbers are worked out

The formula is the same for every row:

cost per 1,000 pages = plan price ÷ included credits × 1,000 × credits per page

Three choices keep it fair:

  • Monthly billing, not annual. Annual prices are lower (often two months free) but they are a different commitment. Where a vendor quotes annual-only figures, the monthly price is used here.
  • The plan nearest $100. Per-credit prices fall on bigger plans for everyone, MeshArc included.
  • Rungs, not marketing tiers. "Plain" is an HTTP fetch, "rendered" is a real browser running JavaScript, and "residential" is a rendered page through a residential or premium proxy, which is what a protected site usually needs.

The table

Checked on 4 November 2026. Dollars per 1,000 pages, monthly billing.

API · plan Plan price / credits Plain Rendered Rendered + residential 404s billed?
MeshArc · Growth $99 / 500k $0.20 $0.79 $3.17 No
Firecrawl · Standard $99 / 100k $0.99 $0.99 Not on pricing page Yes (and 403s)
ScrapingBee · Startup $99 / 1M $0.10 $0.50 $2.48 Yes (and 410s)
ZenRows · Launch $99 / 500k $0.20 $0.99 $4.95 Yes (and 410s)
Scrapfly · Pro $100 / 1M $0.10 $0.50 $2.50 residential; stack not stated No (upstream 4xx/5xx free)
ScraperAPI · Startup $149 / 1M $0.15 $1.49 $3.73 Yes
Crawl4AI Cloud · Builder $99 / 125k $0.40 $0.79 Not listed ("hard site" $1.58) Not stated
Bright Data · Unlocker PAYG $1.50 per 1k requests $1.50 $1.50 $1.50 Success only; 404s not stated

Where the rates come from:

  • MeshArc: 1 credit plain fetch, 4 rendered, 16 rendered on a residential IP (including 1 MB; 4 more per started MB). Refused pages, 404s, 410s, robots-blocked URLs and unchanged pages are free (pricing).
  • Firecrawl: 1 credit per scrape; JSON, question and highlight formats add 4 credits, so a structured page is $4.95. Its pricing page says a page that returns 403 or 404 "is still returned to you and costs 1 credit", and Standard credits do not roll over. A walkthrough is in Firecrawl pricing explained.
  • ScrapingBee: 1 credit plain, 5 with JavaScript, 10 premium proxy, 25 premium with JavaScript. Its FAQ: "We only charge for successful requests, i.e returning with a 200, 404 or 410 status code." Credits are valid for one month.
  • ZenRows: 1, 5, 10 and 25 credits for basic, JS, premium and JS + premium. Failed requests are free, but 404 and 410 count as successful and are billed.
  • Scrapfly: 1 credit base, 5 for browser rendering, 25 for residential. The page says adding features "increases the multiplier" but does not state the stacked total; its own code sample shows 30 credits for an unblocker request, which is $3.00 if that is the stack. Upstream 4xx and 5xx are free.
  • ScraperAPI: 1 credit standard, 10 rendered, 25 rendered with premium proxies, 75 with ultra premium. Bot-protected sites (Cloudflare, DataDome, PerimeterX) add 10 credits when bypassed. Its docs charge for 200 and 404.
  • Crawl4AI Cloud: 0.5 credits for a normal page, 1 for a real browser, 2 for a "hard site". The pricing page does not mention residential proxies or failed requests.
  • Bright Data Web Unlocker: a flat $1.50 per 1,000 requests pay-as-you-go ($1.30 on the $499 Scale plan), rendering and captcha handling included, "pay only for success".

What the table says, plainly

On price per plain page, MeshArc is not the cheapest. ScrapingBee and Scrapfly are half the price at $0.10, and ScraperAPI is cheaper too. If you read pages once, from easy sites, those are the better buy and we would rather you knew.

On rendered pages, ScrapingBee and Scrapfly lead again at $0.50; MeshArc and Crawl4AI Cloud are at $0.79.

On residential + render, ScrapingBee ($2.48) and Scrapfly (from $2.50) are below MeshArc ($3.17); ZenRows ($4.95) and ScraperAPI ($3.73) are above it. Bright Data's flat $1.50 beats everyone here, and it is the reverse on plain pages, where you pay $1.50 for what costs $0.10 elsewhere.

"Successful" changes the ranking: 404s and refusals

The headline rate assumes every page you pay for is one you wanted. Real URL lists are not like that. An old sitemap, a product feed with delisted items or a link crawl all produce dead URLs.

Take 1,000 URLs from a sitemap where 80 are now 404s, all plain pages:

API Billed pages Cost Per 1,000 usable pages
MeshArc Growth 920 $0.18 $0.20
ScrapingBee Startup 1,000 $0.10 $0.11
Scrapfly Pro 920 $0.09 $0.10
ZenRows Launch 1,000 $0.20 $0.22
Firecrawl Standard 1,000 $0.99 $1.08

The 80 dead URLs are an illustration, not a measurement; use your own ratio. The lesson holds either way: a vendor that bills 404s gets dearer exactly as your URL list ages, and the effect is largest on the vendors with the highest per-page rate.

The second leak is refusals. Most vendors here say they do not bill a failed request (Crawl4AI's pricing page does not say either way), so this is close to parity, not an advantage. The difference is what happens before the refusal: a cheapest-first API (MeshArc, ScrapingBee and ZenRows all escalate) may try several rungs on a page that never loads. MeshArc does not bill a refused page "whatever the ladder spent finding out", and a page that would need a rung above your maxCredits returns TIER_LIMIT at zero cost.

Walled sites: where per-page rates mislead most

A Cloudflare-protected site usually needs a real browser or a premium proxy on every request. Most APIs charge that rate for every page of the site:

  • ScrapingBee premium + JS: $2.48 per 1,000.
  • ZenRows JS + premium: $4.95.
  • ScraperAPI standard plus the bot-protection surcharge (11 credits): $1.64.
  • Crawl4AI "hard site": $1.58. Bright Data: $1.50.
  • Scrapfly lists its Unblocker at the 5-credit browser rate ($0.50), though its own code sample shows 30 credits; test before you budget.

MeshArc renders once to earn the session cookies, then reads the rest of the site over plain HTTP with that session at 2 credits a page: $0.40 per 1,000 on Growth. On a real run, a 100-page Cloudflare site cost 202 credits. The mechanism, and where it does not work, is in the session rung explained.

Measure it on your own URLs

Published rates are a starting point. The number that matters is credits spent divided by pages you could use, on your sites. With MeshArc that is a few lines, because every page in the response carries its verdict and its cost:

pip install mesharc
# or: npm install mesharc
from mesharc import MeshArc

arc = MeshArc()  # reads MESHARC_API_KEY

urls = [u.strip() for u in open("urls.txt") if u.strip()]
batch = arc.scrape(urls, config={"concurrency": 4})

pages = batch["pages"]
usable = [p for p in pages if p["verdict"] == "ok"]
credits = sum(p["credits"] for p in pages)
usd = credits * 99 / 500_000          # Growth: $99 for 500,000 credits

print(f"{len(usable)}/{len(pages)} usable, {credits} credits")
print(f"${usd / max(len(usable), 1) * 1000:.2f} per 1,000 usable pages")
for p in pages:
    if p["verdict"] != "ok":
        print(p["url"], p["httpStatus"], p["verdict"], p["credits"])

Do the same with any other vendor's response headers or dashboard, and compare like with like. On one 20-minute run across 15 real sites, MeshArc returned 102 usable pages out of 112.

Which API for which job

Price per page is one axis. Pick on the job:

  • One-off reads of easy sites at volume: ScrapingBee or Scrapfly. Cheapest plain and rendered pages in the table.
  • Hard sites at a flat, predictable price, plus ready-made datasets: Bright Data. $1.50 regardless of rung, and a large catalogue of pre-built scrapers.
  • Per-site parsers for Amazon, Google and LinkedIn: ScraperAPI prices these as named endpoints (5, 25 and 30 credits).
  • Self-hosting: Crawl4AI and Firecrawl are both open source; you pay in servers and proxies instead of credits.
  • Agent tooling and data providers: Firecrawl has the largest ecosystem, and its /monitor endpoint covers pages or whole sites. Our honest comparison goes into the detail.
  • Sites you read more than once: this is MeshArc's job. The rung that worked is remembered per site, so the second crawl starts cheaper; every re-crawl is diffed page by page and field by field; unchanged pages carried forward from the sitemap cost nothing; and results land in one of 18 destinations (S3, BigQuery, Snowflake, Postgres, Pinecone, Qdrant, Kafka and more) on every plan. None of the ~$100 scraping APIs above writes to a warehouse or vector store. Examples: website change monitoring to Slack and Postgres and a scheduled crawl into BigQuery or Snowflake.

Things MeshArc does not do, so you can rule it out quickly: it does not solve hCaptcha, it offers no hosted interactive browser sessions, and it has no SOC 2, ISO 27001 or SSO.

The short version

  • Compare dollars per 1,000 usable pages, not credits.
  • Cheapest plain and rendered page at ~$100: ScrapingBee and Scrapfly ($0.10 and $0.50).
  • Firecrawl, ScrapingBee, ZenRows and ScraperAPI bill 404s; MeshArc and Scrapfly do not.
  • On walled sites, the price per page you will really pay is the protected rate on every page, unless the API reuses a session: MeshArc reads them at $0.40 per 1,000 after one render.
  • For sites you read more than once, memory, diffs and destinations matter more than a tenth of a cent.

The full side-by-side, including Zyte and the Scale-plan figures, is on compare, and the use cases are on use cases. Paste one of your own URLs into the playground to see its verdict, rung and cost, or start free with 1,000 credits and no card.

ShareLinkedInX

The MeshArc newsletter

New posts and what changed, at most twice a month.

Related posts

Crawl a site and see what changed.

A one-time 1,000 credits to start, browser tier included, no card. The playground answers in seconds.