What Do You Pay For When a Scrape Fails? ScraperAPI, Firecrawl and Bright Data Billing Rules
Last fact-checked: November 10, 2026
When an AI agent scrapes thousands of pages, some requests will fail: blocked, timed out, or answered with an error page. Whether those failures cost you credits is one of the least obvious parts of a scraping bill. Here is what three vendors' official docs say, and where they say nothing.
Note on experience: we have not tested billing behavior ourselves. Pages were read through a web-fetch tool that summarises them, on November 10, 2026. Check the live docs before relying on any rule here.
† marks a referral link (see the disclosure above). "Not stated" means the page we read did not say.
1. Side by side
| Situation | ScraperAPI † | Firecrawl † | Bright Data † |
|---|---|---|---|
| Successful page (HTTP 200) | Charged | 1 credit plus option costs | Charged (successful request) |
| Target returns 404 | Charged (docs list 200 and 404 as billable) | 1 credit (error-status pages that return a document still cost 1 credit) | Not stated |
| Target returns 403 / blocked | Not stated on the status-code page | 1 credit if a document comes back, including a 403 | Not stated; the docs say only "successful requests to your target domain" are charged, without defining success |
| Service-side error (HTTP 500) | Not charged | Not charged if no document is returned | Not stated |
| Timeout / no result | Requests that fail after 70 seconds of retrying are not charged | Not named explicitly; falls under "no document returned: 0 credits" | Not stated |
2. ScraperAPI
- The credits page says: "We only charge for successful requests (
200and404status codes)." - The status-code page says a 500 is not charged, and that requests failing after 70 seconds of retrying are not charged. It gives no billing wording for 403, 429, 400 or 401, and does not list 410.
- The docs recommend a connection timeout of at least 60 seconds (70 recommended) so ScraperAPI can retry through different proxies. Cancelling a request yourself after 70 seconds is charged, since the service has had time to finish it; the page does not say how earlier cancellations are handled.
- The cost of a successful request depends on the target: 1 credit for ordinary sites, 10 for bot-protected domains, 5 for e-commerce domains such as Amazon, Walmart and eBay, 25 for search engines, 30 for LinkedIn, with parameters such as
render=trueandpremium=trueadding to it. Thesa-credit-costresponse header reports what each request cost.
3. Firecrawl
- Billing turns on whether Firecrawl returned a document. The billing docs say error-status pages "such as 403 Forbidden or 404 Not Found" still cost 1 credit, and "Firecrawl returned no document: 0 credits."
- Exceptions that charge even without a document: a threat-protection scan (2 credits per scanned URL), the prompt-injection check (5 credits once it has run), a
lockdowncache miss (1 credit), and browser sessions billed per minute with a one-minute minimum "whether or not the session got what you wanted." - An escalated retry on the enhanced proxy is not charged separately. The docs do not address retries you send yourself, but advise checking
metadata.statusCodeand not retrying URLs that are consistently blocked. - Credits are billed as each page of a batch or crawl finishes, so charges can show up after submission. On a paid plan with pay-as-you-go on, an overage allowance applies; at the limit requests return HTTP 402.
For the per-operation credit table, see Firecrawl Credits Explained.
4. Bright Data
- The Web Unlocker introduction says you are "charged only for successful requests to your target domain."
- It does not define what counts as successful and does not mention HTTP status codes, so whether a 404 or a 403 is billable is not stated there.
- We did not find billing wording for failed requests on the MCP pages we read. If you use the Web MCP, see our pre-flight checklist for what is and is not stated.
5. What to do with this
- A 404 is not free on the two vendors that say so. If your agent walks a list of URLs that may be dead, ScraperAPI and Firecrawl both document charging for it. Filter or validate URLs first.
- Blocked is the ambiguous case. Firecrawl documents a charge when a document returns with a 403; ScraperAPI and Bright Data do not say. Test a small batch and compare your dashboard to your logs before scaling.
- Do not retry blindly. Both Firecrawl's docs and ScraperAPI's retry design suggest the vendor already retries; a second retry loop of your own can multiply cost on pages that never succeed.
- Check the per-request cost signal. ScraperAPI exposes
sa-credit-costin a response header; Firecrawl exposesmetadata.statusCode. Log both.
For concurrency limits and 429 behaviour, see What Happens When Your AI Agent Fires a Burst of Requests?
To turn credit costs into a monthly figure, use the cost-per-1,000 worksheet, or see ScraperAPI vs ScrapingBee.
6. What we could not confirm
- ScraperAPI's billing for 403, 429, 400, 401 and 410 responses.
- Bright Data's definition of a "successful request" and treatment of 404s, plus billing rules specific to the Web MCP free tier.
- Whether the vendors' dashboards match these rules in practice. We have not measured it.
- Success rates and speed of any of the three.