← All answers

Which web scraping APIs do not charge for failed or blocked requests?

Most major web scraping APIs say they do not charge for failed or blocked requests, including ScrapingBee, Zenrows, ScraperAPI, Bright Data’s Web Unlocker API, Scrapfly, Crawlbase, Scrapingdog, Zyte API, Oxylabs Web Unblocker and ScrapeUnblocker. The differences are in edge cases: a target’s own 404 or 410 page, a domain that does not resolve, timeouts, and CAPTCHA pages served with HTTP 200. Firecrawl works differently for blocked pages: its billing documentation says a page returned with a 403 costs 1 credit.

What does each provider’s documentation say it bills?

Every provider below says a request that fails outright is free; the rules split on a target’s 404 or 410 and on returned block pages. Rows summarize each provider’s own pages; ScrapeUnblocker publishes this page.

ProviderBlocked or failed requestTarget’s own 404 or 410Other documented rules
ScrapeUnblockerNot billed: 403 block, timeout, 523, 429Billed, returned with X-Origin-StatusBilled: unresolvable domain (400), failed steps action (422)
ScrapingBeeNot billed: an anti-bot 403 is reported as a 500Billed (404 and 410)transparent_status_code=true bills anything below 500
ZenrowsFailed or retried requests not chargedBilled, counted as successfulUnresolvable domain and allowed_status_codes requests billed
ScraperAPINot charged after up to 70 s of retries404 billedRequests you cancel before 70 s are billed
Bright Data Web Unlocker APICharged only for successful requestsNot stated in the pages checkedWith Custom Headers & Cookies on, all requests are billed
ScrapflyFailed scrapes not billedExcluded from its failed-scrape protectionUnresolvable domain and slow-target timeout billed; protection lifts above 30% failed traffic
CrawlbaseFailed or blocked requests never billedBilledA CAPTCHA page served as 200 is reported as 503, not billed
ScrapingdogFailed, blocked and timed-out requests credited backNot stated in the pages checked-
Zyte APIOnly successful responses chargedCounted as a successful responseRate-limited responses free
Oxylabs Web UnblockerOnly successfully extracted data counted (per GB)Not stated in the pages checkedBlocked responses can be reported to support
FirecrawlNo document returned, 0 credits1 creditA returned 403 page costs 1 credit

Which edge cases change what you actually pay?

Four edge cases decide most of the difference. Dead URLs: ScrapingBee, Zenrows, ScraperAPI, Crawlbase, Zyte API, Firecrawl and ScrapeUnblocker bill a target’s 404, so lists of removed products still cost money. Domains that do not resolve: Zenrows, Scrapfly and ScrapeUnblocker bill them. Soft blocks: a CAPTCHA page can arrive with HTTP 200; Crawlbase documents reporting it as a 503, and Scrape.do says you can claim back credits from support when a 200 response has invalid content. Options: ScrapingBee’s transparent_status_code and Bright Data’s Custom Headers & Cookies change what is billed. Each provider decides what counts as a block, so check content, not status codes (HTTP 200 but blocked).

What does ScrapeUnblocker bill?

ScrapeUnblocker’s errors documentation marks only a few responses as billed: a delivered page, a target’s own 404 or 410 (with X-Origin-Status), an origin’s own 5xx page (a 200 with X-Origin-Status), 400 Hostname cannot be resolved and 422 step_failed. A 403 block, a 504 timeout, 523 Origin unreachable, 429, 402 and errors on its side are free. Branch on the header so you stop retrying dead URLs:

import requests

r = requests.post(
    "https://api.scrapeunblocker.com/getPageSource",
    params={"url": "https://www.g2.com/"},
    headers={"x-scrapeunblocker-key": "YOUR_API_KEY"},
    timeout=125,
)
if r.status_code in (404, 410) and r.headers.get("X-Origin-Status"):
    print("dead URL: billed, do not retry")
elif r.status_code == 403:
    print("blocked: not billed, retry later")

ScrapeUnblocker’s own 2026 benchmark averaged 97.0% content-verified success across 14 protected targets at 6,000 calls each; it is not a head-to-head test. To compare providers, send a known-404 URL, a fake domain and a hard target through each free allowance and read the cost headers: Spb-auto-cost (ScrapingBee Auto-Mode), X-Request-Cost (Zenrows), sa-credit-cost (ScraperAPI), X-Scrapfly-Api-Cost (Scrapfly).

Sources

Competitor details come from each provider’s public pages as viewed between 24 September and 9 October 2026 and may have changed. Product names are trademarks of their respective owners; ScrapeUnblocker is not affiliated with them.

Try ScrapeUnblocker free

95%+ success rate · from 0.55€ per 1,000 calls · 500 free requests on signup.