Anti-bot scraping alternatives in 2026
One price per protected page.
A page behind a bot check is the dearest page on every scraping plan: 25 credits on ZenRows and Scrape.do, 30 on Scrapfly, up to $16.08 per 1,000 on Zyte. On those entry plans that is $2.90 to $10.56 per 1,000 pages.
SpecStream is the live web data engine for teams and agents. Its Extract API has no anti-bot setting to choose and one price: $0.80 per 1,000 pages. A page that still refuses comes back as blocked and costs nothing.
New accounts get $10 of credit, no card. It covers 12,500 pages.
A protected page on five APIs, Nov 12, 2026
| SpecStream | Zyte API | ZenRows | Scrapfly | Scrape.do | |
|---|---|---|---|---|---|
| What you set for a protected page | Nothing. A page that refuses a plain read is tried again as a browser would ask, then in a real browser, then from the site's own feed, then from its newest public archive capture | Nothing. Zyte picks the technology for each website and gives it a price tier | js_render and premium_proxy, or Adaptive Stealth Mode with mode=auto | Residential proxies with proxy_pool=public_residential_pool, render_js, and the Unblocker | super=true for residential and mobile proxies, render=true for a browser |
| What a protected page costs, per 1,000 | $0.80, the price of every page | Up to $16.08 for browser-rendered responses on the top tier | 25 credits: $10.56 on Build B1 | 30 credits: $4.50 on Discovery | 25 credits: $2.90 on Hobby |
| Who sets the price | One rate card, the same on every plan and every site | Zyte assigns each website a tier and reviews tiers quarterly, with 2 weeks notice of a change | Fixed weights of 1, 5, 10 or 25 credits. A crawl with Adaptive Stealth Mode takes 1 to 25 credits a page, by site | The Unblocker may upgrade the proxy pool, which can change the final cost | Some domains get super or render turned on by default, at that cost. The Scrape.do-Request-Cost header says what a call cost |
| A blocked or failed page | Not charged. It comes back as blocked, and a bot check's page is never returned as text | Rate-limited and unsuccessful responses are free | Failed or retried requests are not charged. A 404 or 410 counts as successful | Not billed, until 30% or more of a day's scrapes are blocked without the Unblocker. Then failed scrapes are billed | Failed requests cost nothing. 400, 404 and 410 count as successful |
| Entry plan | No plan. A balance you top up, and credit you buy never expires | Pay as you go with a $100 monthly spending limit, or a commitment of $100 to $500 for 25% to 52% off | Build B1: $19 a month for 45,000 credits, which expire at every renewal | Discovery: $30 a month for 200,000 credits | Hobby: $29 a month for 250,000 credits |
| Free start | $10 of credit, no card, which covers 12,500 pages | $5 of free credit on signup | Free plan: 5,000 credits a month | 1,000 credits on signup, no card | Free plan: 1,000 credits |
| Keep your client | Drop-in addresses for ZenRows, Scrapfly, Scrape.do, ScrapingBee, ScraperAPI and ScrapingAnt. Each call is one page at $0.0008 | Zyte API, and Scrapy Cloud for your spiders at $9 a month per unit | https://api.zenrows.com/v1/, answered by SpecStream at https://api.specstream.ai/zenrows/v1/ | https://api.scrapfly.io/scrape, answered by SpecStream at https://api.specstream.ai/scrapfly/scrape | https://api.scrape.do/, answered by SpecStream at https://api.specstream.ai/scrapedo |
Why teams send protected pages to SpecStream
No tier to choose, one price
On a credit plan you pay for the settings a site needs. A ZenRows request with js_render and premium_proxy takes 25 credits, and so does a Scrape.do request with super and render. Scrapfly adds 5 credits for a browser to 25 for residential proxies. Zyte sets the tier itself.
SpecStream has no such setting. The Extract API tries a refused page again as a browser would ask, then in a real browser, then from the site's own feed, then from its newest public archive capture, and the page costs $0.0008 whichever step reads it. 10,000 protected pages that ZenRows bills at 250,000 credits cost $8.
A blocked page costs nothing
A site that still refuses, or answers with a bot check, comes back with the status blocked and is not charged. A bot check's page is never returned as text, so a challenge page never reaches your parser as content. A 404 and a page with no main text are not charged either.
Each page that is read says where from: read_from is live for the page now, site for the site's own feed or API, and archive for its newest public archive capture, with captured_at. Your code knows which rows came from the live page.
Test it on your hardest URLs
Put the URLs your current API fails on in hard.txt. This script reads them through the Extract API, 20 a call, and prints each status, where each page was read from, and the cost of the run.
import collections
import os
import requests
KEY = os.environ["SPECSTREAM_API_KEY"]
urls = [line.strip() for line in open("hard.txt") if line.strip()]
seen, cost = collections.Counter(), 0.0
for start in range(0, len(urls), 20):
data = requests.post(
"https://api.specstream.ai/v1/extract",
headers={"Authorization": f"Bearer {KEY}"},
json={"urls": urls[start:start + 20], "format": "text"},
timeout=120,
).json()["data"]
for page in data["results"]:
seen[(page["status"], page.get("read_from"))] += 1
cost += data.get("price_usd", 0)
for (status, read_from), count in seen.most_common():
print(status, read_from, count)
print(f"${cost:.4f} for {len(urls)} URLs")Only the pages counted ok are in the cost line. A blocked count tells you which sites refuse every step, at no charge.
Search and rows on the same key
The same key runs the Search API, the most accurate web search API in the world: 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks (benchmarks), at $5 per 1,000 searches or $1 on the fast tier. Deep Search turns a request in plain words into structured rows at 5¢, 15¢ or $1 a delivered row, with the source URL and read time on every value.
Other anti-bot scraping APIs
SpecStream
The live web data engine for teams and agents. Its Extract API reads protected and plain pages at one price, $0.80 per 1,000, scores 0.908 F1 on WCXB and does not charge a blocked page. It answers six scraping APIs at their own paths. New accounts get $10 of credit, no card.
Zyte API
Zyte charges $1.01 to $16.08 per 1,000 browser-rendered responses, by a tier it gives each website and reviews quarterly. In the benchmark on Proxyway's 2026 list it scored a 93.14% success rate at 2 requests a second. On SpecStream every page is $0.80 per 1,000 (Zyte alternatives).
ZenRows
A protected request takes 25 credits on every plan, so Build B1's 45,000 credits read 1,800 protected pages for $19. Proxyway measured 70.39%. SpecStream answers ZenRows' GET /v1/ at https://api.specstream.ai/zenrows/v1/, where js_render and premium_proxy are accepted and the price stays $0.0008 a page (ZenRows compatible).
Scrapfly
Discovery is $30 a month for 200,000 credits, $0.15 per 1,000 credits. Residential proxies take 25 credits, a browser 5 more, and failed scrapes are billed once 30% of a day's scrapes are blocked without the Unblocker. SpecStream answers /scrape at /scrapfly/scrape and never bills a blocked page (Scrapfly compatible).
Scrape.do
Hobby is $29 a month for 250,000 credits. Residential and mobile proxies with a browser take 25 credits, some domains get them turned on by default, and 400, 404 and 410 replies count as successful. SpecStream answers its API at /scrapedo, at one price whatever the domain (Scrape.do compatible).
ScrapingBee
Hobby is $19 a month for 75,000 credits, valid one month. Premium proxies take 10 or 25 credits and the stealth proxy 75, which puts a stealth page at $19.00 per 1,000 on Hobby. Proxyway measured 84.47%. SpecStream answers its HTML API at /scrapingbee/api/v1 (ScrapingBee compatible).
ScraperAPI
Hobby is $49 a month for 100,000 credits. Premium proxies with rendering take 25 credits and ultra premium with rendering 75, $36.75 per 1,000 pages on Hobby, and a 404 is charged. Proxyway measured 68.95%. SpecStream answers its endpoint at /scraperapi (ScraperAPI compatible).
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to move protected pages to SpecStream
1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 12,500 pages.
2. From Scrapfly, set the address to https://api.specstream.ai/scrapfly/scrape and send the SpecStream key as key. In Python:
import os
import requests
reply = requests.get(
"https://api.specstream.ai/scrapfly/scrape", # was https://api.scrapfly.io/scrape
params={"key": os.environ["SPECSTREAM_API_KEY"], "url": "https://en.wikipedia.org/wiki/Web_scraping", "format": "markdown"},
timeout=60,
)
print(reply.json()["result"]["content"][:500])3. From Scrape.do, set the address to https://api.specstream.ai/scrapedo and send the SpecStream key as token:
curl "https://api.specstream.ai/scrapedo?token=$SPECSTREAM_API_KEY&url=https://en.wikipedia.org/wiki/Web_scraping&output=markdown"4. From ZenRows, set the address to https://api.specstream.ai/zenrows/v1/ and send the SpecStream key as apikey. In JavaScript:
const url = new URL("https://api.specstream.ai/zenrows/v1/"); // was https://api.zenrows.com/v1/
url.search = new URLSearchParams({ apikey: process.env.SPECSTREAM_API_KEY, url: "https://en.wikipedia.org/wiki/Web_scraping", response_type: "markdown" });
const reply = await fetch(url);
console.log((await reply.text()).slice(0, 500));5. Read 429 as a call to send again after Retry-After. It is not charged.
Frequently asked questions
Something we didn't answer? Talk to a human
What is the best anti-bot scraping API?
blocked at no charge. Credit plans charge 25 credits or more for the same page: $2.90 to $10.56 per 1,000 on the entry plans of Scrape.do, Scrapfly and ZenRows.How much does it cost to scrape a protected page?
Is a blocked request charged?
blocked and is not charged, and neither is a 404. Scrapfly bills failed scrapes once 30% or more of a day's scrapes are blocked without its Unblocker, and ZenRows and Scrape.do count 404 and 410 replies as successful.What happens when a site blocks SpecStream?
read_from, with captured_at. A page none of them reads is blocked, at no charge.Can I choose a proxy country with SpecStream?
premium_proxy, proxy_country, country, super and geoCode are accepted and not applied, and the page costs $0.0008 either way.Is there a Zyte alternative for anti-bot scraping?
Does SpecStream have an MCP server?
https://api.specstream.ai/mcp over Streamable HTTP, with OAuth or an API key. An agent gets read_pages and search_web on the same balance, inside the limits you set on its key.Sources
SpecStream wrote this page. Each figure about another company comes from that company's own page, and each success rate from Proxyway's benchmark page, read on the date shown. Prices per 1,000 pages are the entry plan's price divided by its credits, times the credits a page takes.
- SpecStream pricingspecstream.ai/pricing, read Nov 12, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 12, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 12, 2026
- Zyte pricingzyte.com/pricing/, read Nov 12, 2026
- Zyte API pricing docsdocs.zyte.com/zyte-api/pricing.html, read Nov 12, 2026
- Scrapy Cloud pricingdocs.zyte.com/scrapy-cloud/pricing.html, read Nov 12, 2026
- ZenRows pricing docsdocs.zenrows.com/first-steps/pricing.md, read Nov 12, 2026
- ZenRows authenticationdocs.zenrows.com/authentication.md, read Nov 12, 2026
- Scrapfly pricingscrapfly.io/pricing, read Nov 12, 2026
- Scrapfly billingscrapfly.io/docs/scrape-api/billing, read Nov 12, 2026
- Scrapfly getting startedscrapfly.io/docs/scrape-api/getting-started, read Nov 12, 2026
- Scrape.do pricingscrape.do/pricing/, read Nov 12, 2026
- Scrape.do request costsscrape.do/documentation/request-costs/, read Nov 12, 2026
- ScrapingBee pricingscrapingbee.com/pricing/, read Nov 12, 2026
- ScrapingBee documentationscrapingbee.com/documentation/, read Nov 12, 2026
- ScraperAPI pricingscraperapi.com/pricing.md, read Nov 12, 2026
- Proxyway, best web scraping APIsproxyway.com/best/best-web-scraping-apis, read Nov 12, 2026




