Firecrawl alternative for anti-bot bypass in 2026
Blocked pages free.
On Nov 12, 2026, Firecrawl bills 1 credit a page, with or without its enhanced proxies, and a page that comes back with a 403 or 404 status is billed too. Hobby is $19 a month for 5,000 credits.
SpecStream is the live web data engine for teams and agents. Set https://api.specstream.ai/firecrawl in place of https://api.firecrawl.dev and every page costs $0.80 per 1,000. A page that still refuses is not charged and never reaches your parser.
New accounts get $10 of credit, no card. It covers 12,500 pages.
A protected page on five APIs, Nov 12, 2026
| SpecStream | Firecrawl | ZenRows | Scrapfly | Scrape.do | |
|---|---|---|---|---|---|
| Your Firecrawl code | Runs as it is. /v2/scrape, /v2/search, /v2/map and /v2/crawl answer at https://api.specstream.ai/firecrawl, with a SpecStream key as the Bearer token | https://api.firecrawl.dev/v2, with a Firecrawl key as the Bearer token | Calls move to ZenRows' own API at https://api.zenrows.com/v1/, with the key as apikey | Calls move to Scrapfly's own API at https://api.scrapfly.io/scrape, with the key as key | Calls move to Scrape.do's own API and its super and render settings |
| 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. proxy defaults to auto, which tries basic first, then retries with enhanced on failure. The proxy parameter is deprecated | premium_proxy=true for a residential IP, 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 |
| A protected page, per 1,000 | $0.80, the price of every page, from the first page | 1 credit, the same as any page: $3.80 on Hobby, $0.99 on Standard, $0.80 on Growth and $0.75 on Scale, when every credit of the month is used | 25 credits for a protected request: $10.56 on Build B1 | 30 credits with a browser: $4.50 on Discovery | 25 credits with a browser: $2.90 on Hobby |
| A blocked or error page | Not charged. /v2/scrape answers success: false, and a bot check's page is never returned as text. A 404 is not charged either | Billed when it comes back as a document, including 403 Forbidden and 404 Not Found. No document is 0 credits | Failed requests are not charged. 404 and 410 count 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 | Hobby: $19 a month for 5,000 credits. The allotment resets at the start of each billing cycle | 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 | 1,000 free credits a month, about 1,000 pages, no card | Free plan: 5,000 credits a month | 1,000 credits on signup, no card | Free plan: 1,000 credits |
Why Firecrawl users send protected pages to SpecStream
One price for every page, with no monthly plan
Firecrawl does not charge more for its enhanced proxies: its billing page puts that request at the same 1 credit as a basic one, and an escalated retry is not charged separately. The price of a page is the plan price over its credits: $3.80 per 1,000 on Hobby and $0.99 on Standard. Growth and Scale reach $0.80 and $0.75 when every credit of a $399 or $749 month is used, and the allotment resets each cycle.
On SpecStream every page with text is $0.80 per 1,000 from the first page, with no plan and no allotment to use up. 10,000 protected pages cost $8, and the credit you buy never expires.
An error page costs nothing and stays out of your parser
Firecrawl bills a page that comes back with an error status such as 403 Forbidden or 404 Not Found, and asks you to check metadata.statusCode to spot them. On a site behind a bot check, those pages are billed and land in your pipeline as documents.
SpecStream 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, at $0.0008 whichever step reads it. A page none of them reads comes back from /v2/scrape as success: false and is not charged. A bot check's page is never returned as text, and a 404 is not charged either. The Extract API scores 0.908 F1 on WCXB, and its own reply says where each page was read from in read_from.
What the published tests say
ZenRows tested Firecrawl's /scrape on default settings on June 1, 2026: 100 requests to each of 7 sites at 2 a second. Firecrawl averaged 85.28%, and LinkedIn blocked all 100 requests. That is one vendor's test of its rival, on 7 sites. The test that decides is yours, on the URLs that fail for you today.
Test it on your hardest URLs
Put the URLs Firecrawl fails on in hard.txt. This script sends each one to Firecrawl and to SpecStream with the same /v2/scrape body and prints, for each, how many pages were read, how many came back as error pages, and how many gave no page.
import collections
import os
import requests
APIS = {
"Firecrawl": ("https://api.firecrawl.dev", os.environ["FIRECRAWL_API_KEY"]),
"SpecStream": ("https://api.specstream.ai/firecrawl", os.environ["SPECSTREAM_API_KEY"]),
}
urls = [line.strip() for line in open("hard.txt") if line.strip()]
for name, (base, key) in APIS.items():
seen = collections.Counter()
for url in urls:
body = requests.post(
f"{base}/v2/scrape",
headers={"Authorization": f"Bearer {key}"},
json={"url": url, "formats": ["markdown"]},
timeout=120,
).json()
if not body.get("success"):
seen["no page, not charged"] += 1
elif body["data"]["metadata"].get("statusCode", 200) >= 400:
seen["error page, charged"] += 1
else:
seen["page read, charged"] += 1
print(name, dict(seen))On SpecStream each page read costs $0.0008 and the rest cost nothing. On Firecrawl the first two counts are billed at 1 credit each.
Search, pages and rows on one key
The same key answers Firecrawl's /v2/search at $1 per 1,000 searches of up to 10 results, and runs the Search API: 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks (benchmarks). Deep Search turns a request in plain words into structured rows at 5¢, 15¢ or $1 a delivered row, with the source URL on every value.
Other Firecrawl alternatives for protected pages
SpecStream
The live web data engine for teams and agents. It answers your Firecrawl calls at https://api.specstream.ai/firecrawl, reads protected and plain pages at $0.80 per 1,000, and does not charge a blocked page. The same balance runs search, pages and rows, and new accounts get $10 of credit, no card.
ZenRows
A protected request takes 25 credits on every plan, so Build B1's 45,000 credits read 1,800 protected pages for $19, and unused credits expire at every renewal. Your Firecrawl calls move to its own API. SpecStream answers ZenRows' API too, at https://api.specstream.ai/zenrows/v1/, at $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 and a browser 5 more, and failed scrapes are billed once 30% of a day's scrapes are blocked without the Unblocker. SpecStream never bills a blocked page, and answers Scrapfly's /scrape at /scrapfly/scrape (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 has one price whatever the domain and answers Scrape.do's API at /scrapedo (Scrape.do compatible).
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to move your Firecrawl calls to SpecStream
1. Create a key under Agents & API in the workspace, with a spending limit. A new account gets $10 of credit, no card, which covers 12,500 pages.
2. Change the base address and the key. The body stays as it is.
# Before
curl -X POST https://api.firecrawl.dev/v2/scrape \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" -H "Content-Type: application/json" \
-d '{"url": "https://en.wikipedia.org/wiki/Web_scraping", "formats": ["markdown"], "proxy": "auto"}'
# After
curl -X POST https://api.specstream.ai/firecrawl/v2/scrape \
-H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"url": "https://en.wikipedia.org/wiki/Web_scraping", "formats": ["markdown"], "proxy": "auto"}'3. Read the reply as before: data.markdown and data.metadata. A page that gave no text comes back as success: false and is not charged. A 429 with Retry-After is a call to send again later, and it is not charged.
4. Point /v2/search, /v2/map and /v2/crawl at the same address. Firecrawl's limit, includePaths, excludePaths and maxDiscoveryDepth apply to a crawl, and a map is one page read. More in Firecrawl migration.
Frequently asked questions
Something we didn't answer? Talk to a human
What is the best Firecrawl alternative for anti-bot bypass?
Does Firecrawl charge more for enhanced or stealth proxies?
How much does a protected page cost?
Will my Firecrawl code run on SpecStream?
https://api.specstream.ai/firecrawl in place of https://api.firecrawl.dev, and a SpecStream key as the Bearer token. /v2/scrape, /v2/search, /v2/map and /v2/crawl answer in Firecrawl's shape.Is a blocked page charged on SpecStream?
success: false and costs nothing, and so does a 404. Firecrawl bills a 403 or 404 page that comes back as a document.Does SpecStream have an MCP server?
https://api.specstream.ai/mcp over Streamable HTTP. An agent gets read_pages at $0.80 per 1,000 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, read on the date shown, and the test figures from ZenRows' published test. Prices per 1,000 pages are the 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
- Firecrawl pricingfirecrawl.dev/pricing, read Nov 12, 2026
- Firecrawl billingdocs.firecrawl.dev/billing.md, read Nov 12, 2026
- Firecrawl enhanced modedocs.firecrawl.dev/features/enhanced-mode.md, read Nov 12, 2026
- Firecrawl proxiesdocs.firecrawl.dev/features/proxies.md, read Nov 12, 2026
- ZenRows, best Firecrawl alternative for anti-bot bypasszenrows.com/blog/best-firecrawl-alternative-for-anti-bot-bypass.md, 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




