Scraping APIs, and what a credit actually costs
A scraping API sells you the finished page rather than the address you fetch it from. That changes what you are buying and it changes the unit on the bill: 7 of the 9 we track charge in credits, and a credit is not a fixed amount of work. On one plan, a page that needs a browser costs more than a plain fetch.
So the per-gigabyte figure this site compares proxies on does not reach this product, and we do not invent one. What follows is what each vendor states, in its own unit, with the date we read it.
Compare or switch providers
Every scraping API we track
Compare entry plans below, or estimate a workload cost.
More filters and provider shortlist
Only these providers (all)
Exclude providers (none)
9 matching providers
Share or export these results
Prices name the cheapest paid monthly tier and its allowance. Credits are not pages. Missing facts sort last. Each price has its own source and read date; provider facts keep their separate check date.
We may earn commission through provider links. How this site is funded.
| Provider | Entry plan | Included usage | Buying conditions | Visit |
|---|---|---|---|---|
| Crawlbase | $99/moStarter · Billed monthlyPrice read 2026-09-08 | 200,000 credits/month 20 concurrent requests per token (default) JavaScript: yes, stated 20 concurrent requests per token by default, shared across subscribed Crawlbase products. Higher limits require contacting support and are not priced here. This is not an account-wide ceiling or measured requests per second. Concurrency read 2026-09-08 · Source Quoted concurrency conditionsConcurrent requests / 20 / per tokenContext: Default limits. Limit / Default / Scope. Every account starts with the same generous defaults. You don't need to ask for these - they're already on every token the moment you sign up.Read 2026-09-08 Endpoint specs and parameter references for every Crawlbase API. One token authenticates all of them; pricing and concurrency budgets are shared across the products you subscribe to.Read 2026-09-08 Higher concurrency contact usContext: Email support with your target throughput and use case.Read 2026-09-08 | Billing requires cb_status 200 and a listed target status, including 404 and 410. A 302 must return content after the redirect. Custom success-code overrides are outside this estimate. Plan conditions and sourcesPurchase conditions · Starter
Billable requests Crawlbase only charges requests where cb_status is 200 and original_status is one of: Code Meaning 200 OK 201 Created 204 No Content 301 Moved Permanently 302 Found - only when the redirect was followed and returned content 404 Not Found 410 Gone Any other original_status is free, and so is any non- 200 cb_status. Use this list when reconciling a usage invoice against your application logs.Billing policy read 2026-09-09 Bills in credit. Provider record checked 2026-08-20. | Visit Crawlbase |
| Firecrawl | $19/moHobby · Billed monthlyPrice read 2026-09-08 | 5,000 credits/month 5 concurrent requests JavaScript: not established | Returned documents are billable even for target errors such as 403 and 404. Some scans, guards, cache modes and other endpoints can also charge without a document. Plan conditions and sourcesPurchase conditions · Hobby
What decides the charge is whether Firecrawl returned a document, not whether the target site returned a successful HTTP status code. Firecrawl returned a document: 1 credit per page, plus any of the option costs above. This includes pages that come back with an error status such as 403 Forbidden or 404 Not Found. The target responded, Firecrawl captured that response, and you get it back as a document. Check the metadata.statusCode field in the response to spot these cases and stop retrying URLs that are consistently blocked. Firecrawl returned no document: 0 credits. A scrape that fails outright, for example because the site never responded or every rendering attempt failed, is not charged. A few cases still charge when no document comes back. They cover work that Firecrawl already performed on your behalf before the scrape ended. Case What is charged Threat protection scan 2 credits per scanned URL, including a scrape that the scan itself blocked Prompt injection check 5 credits, once the checkPromptInjection guard has run FIRE-1 agent Usage-based, for the navigation the agent already did lockdown cache miss 1 credit Monitor check A page that errors during a check is charged the base 1 credit per page Interact and Browser sessions Charged per browser minute of session time, with a one-minute minimum, whether or not the session got what you wantedBilling policy read 2026-09-09 Bills in credit. Provider record checked 2026-08-20. | Visit Firecrawl |
| ScraperAPI | $49/moHobby · Billed monthlyPrice read 2026-09-08 | 100,000 API credits/month 20 concurrent requests JavaScript: yes, stated | HTTP 200/404 and requests cancelled before 70 seconds are billable. Plan conditions and sourcesPurchase conditions · Hobby
We only charge for successful requests ( 200 and 404 status codes) and for requests that have been cancelled from your side before giving us enough time to finish them (70 seconds).Billing policy read 2026-09-08 Bills in credit. Provider record checked 2026-08-20. | Visit ScraperAPI |
| Scrapfly | $30/moDiscovery · Billed monthlyPrice read 2026-09-08 | 200,000 API credits/month 5 concurrent requests JavaScript: yes, stated | Failed-request protection has excluded statuses and a fairness-policy billing exception. Plan conditions and sourcesPurchase conditions · Discovery
Scrape Failed Protection & Fairness Policy Scrapfly's Scrape Failed Protection ensures that failed scrapes are not billed to our customers. To prevent abuse, we also have a fairness policy in place. Fairness Policy Trigger: If more than 30% of failed traffic with eligible status codes (≥400 and not excluded) is detected within a minimum one-hour period, the fairness policy will be disabled and usage will be billed. Eligible Status Codes Status codes greater than or equal to 400 and not excluded (see below) are eligible for Scrape Failed Protection. Excluded status codes: 400, 401, 402, 404, 405, 406, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 422, 424, 426, 428, 456 Account Suspension: If an account deliberately scrapes a protected website without success and without using our Anti Scraping Protection (ASP), the account may be suspended at the discretion of our account managers.Billing policy read 2026-09-08 Bills in credit. Provider record checked 2026-08-20. | Visit Scrapfly |
| ScrapingBee | $19/moHobby · Billed monthlyPrice read 2026-09-08 | 75,000 API credits/month 25 concurrent requests JavaScript: yes, stated | HTTP 404, 410 and 413 are billable. Transparent status mode also bills target responses below 500. Plan conditions and sourcesPurchase conditions · Hobby
Response Status Code ScrapingBee returns the following HTTP status codes. These are ScrapingBee's own status codes, not the target page's. By default we do not forward the status the scraped site returned - see transparent HTTP status code for how the two relate, and for how to get the target's status instead. Code Billed? Meaning Solution 200 Yes Successful Call 400 No Bad request Incorrect parameters or parameters type. See the message in the response body. 401 No Out of credits, or an invalid API key Check the key, then upgrade your plan or contact sales. 403 No The account is banned, or the request was redirected to a blocked destination The response body says which. This is never the scraped page's own 403. 404 Yes Requested URL not found Provide a valid URL. 410 Yes Requested URL gone Provide a valid URL. 413 Yes The target page returned 413 (payload too large) Check the URL; the page itself refused the request. 429 No Too many concurrent requests. Please upgrade your plan or contact sales. 500 No We could not scrape the page, or the target returned a status we do not pass through Retry; the response body carries the reason. Transparent HTTP status code transparent_status_code [ boolean ] ( false ) By default ScrapingBee reports its own status rather than the target's: any 2xx becomes 200, 404, 410 and 413 are passed through, and everything else becomes 500. Redirects are followed first, so this is the status at the end of the chain. So a 403 from an anti-bot page, a 401 from a paywall or a 503 from an overloaded site all reach you as a 500, not as their own code. A 500 from us is not billed. To get the same body and status code as the requested URL in any circumstances, use the transparent_status_code=true parameter. When this parameter is set to true: Anything the target returns below 500 is billed, since we no longer replace it with a 500. A 5xx is still free. We do not retry. Without the parameter a failed scrape is tried again on another proxy; with it you get the first attempt.Billing policy read 2026-09-08 Bills in credit. Provider record checked 2026-08-20. | Visit ScrapingBee |
| SearchApi | $40/moDeveloper Plan (standard speed) · Billed monthlyPrice read 2026-10-06 | 10,000 searches/month Concurrency not established JavaScript: not established | States only successful requests are billed Plan conditions and sourcesPlan purchase conditions not collected. Bills in request. Provider record checked 2026-10-06. | Visit SearchApi |
| SerpapiNot yet reviewed | No entry subscription price on record | Allowance not established Concurrency not established JavaScript: not established | Billing policy not established Plan conditions and sourcesBills in credit. Provider record checked 2026-08-20. | Visit Serpapi |
| ZenRows | $19/moBuild · Billed monthlyPrice read 2026-09-08 | 45,000 credits/month 20 concurrent requests JavaScript: yes, stated | HTTP 404 and 410 responses count as billable successes. Plan conditions and sourcesPurchase conditions · Build
Failed requests are never charged. Not Found (404) and Gone (410) responses count as successful results.Billing policy read 2026-09-08 Bills in credit. Provider record checked 2026-08-20. | Visit ZenRows |
| ZyteNot yet reviewed | No entry subscription price on record | Allowance not established Concurrency not established JavaScript: not established | Billing policy not established Plan conditions and sourcesBills in request. Provider record checked 2026-09-03. | Visit Zyte |
Side by side
What one unit of work costs
These are quoted credit costs for specific request configurations. Match the configuration to your workload, then use a plan’s allowance and price to work out the monthly purchase.
- 1 creditStandard requestRead 2026-09-08
- 2 creditsJavaScript rendering on a standard siteRead 2026-09-08
- 1 creditScrapeRead 2026-09-08
- 1 creditNormal (flat) requestRead 2026-09-08
- 5 creditsAmazon base requestRead 2026-09-08
- 5 creditsWalmart base requestRead 2026-09-08
- 5 creditseBay base requestRead 2026-09-08
- 25 creditsGoogle base requestRead 2026-09-08
- 25 creditsBing base requestRead 2026-09-08
- 30 creditsLinkedIn base requestRead 2026-09-08
- 10 creditsJavaScript renderingRead 2026-09-09
- 10 creditsPremium residential/mobile proxyRead 2026-09-09
- 25 creditsJavaScript rendering + premium proxyRead 2026-09-09
- 1 creditDatacenter TEXT scrapeRead 2026-09-08
- 6 creditsDatacenter TEXT scrape with JavaScriptRead 2026-09-08
- 25 creditsResidential TEXT scrapeRead 2026-09-08
- 30 creditsResidential TEXT scrape with JavaScriptRead 2026-09-08
- 1 creditClassic Proxy without JavaScript renderingRead 2026-09-08
- 5 creditsClassic Proxy with JavaScript rendering (default)Read 2026-09-08
- 10 creditsPremium Proxy without JavaScript renderingRead 2026-09-08
- 25 creditsPremium Proxy with JavaScript renderingRead 2026-09-08
- 15 creditsGoogle HTML API: Classic Proxy without JavaScript renderingRead 2026-09-09
- 15 creditsGoogle HTML API: Classic Proxy with JavaScript rendering (default)Read 2026-09-09
- 15 creditsGoogle HTML API: Premium Proxy without JavaScript renderingRead 2026-09-09
- 15 creditsGoogle HTML API: Premium Proxy with JavaScript renderingRead 2026-09-09
- 1 creditStandard requestRead 2026-09-08
- 5 creditsJavaScript renderingRead 2026-09-08
- 10 creditsPremium proxyRead 2026-09-08
- 25 creditsJavaScript rendering + premium proxyRead 2026-09-08
A JavaScript request and a request using premium proxies can have separate credit costs, and their combination can have a third rate. The workload calculator uses these quoted rates and each provider’s request conditions.
Who charges for failures
Billing policies can exclude certain error codes from failed-request protection or charge for early cancellations. Check which responses and cancelled requests count as billable before estimating a workload.
- Crawlbase — Billing requires cb_status 200 and a listed target status, including 404 and 410. A 302 must return content after the redirect. Custom success-code overrides are outside this estimate.Policy read 2026-09-09
- Firecrawl — Returned documents are billable even for target errors such as 403 and 404. Some scans, guards, cache modes and other endpoints can also charge without a document.Policy read 2026-09-09
- ScraperAPI — HTTP 200/404 and requests cancelled before 70 seconds are billable.Policy read 2026-09-08
- Scrapfly — Failed-request protection has excluded statuses and a fairness-policy billing exception.Policy read 2026-09-08
- ScrapingBee — HTTP 404, 410 and 413 are billable. Transparent status mode also bills target responses below 500.Policy read 2026-09-08
- SearchApi — States only successful requests are billed
- ZenRows — HTTP 404 and 410 responses count as billable successes.Policy read 2026-09-08
Not stated is not the same as charges for failures. It means you cannot tell from the page you are buying on, and the number you are comparing is missing a term. Ask before you buy, and keep the reply. The same question applies to challenges these APIs clear on your behalf: a scraping API folds that cost into its per-request price, while a captcha solving service prices it separately and per challenge type.
Whose network is underneath
A scraping API is a storefront over somebody’s proxy pool. Of the 7 we publish, none states whose.
We are recording the gap rather than waiting for it to close, because the question is not academic. NetNut’s network was resold and white-labelled, and when the FBI seized it, every storefront in front of it inherited the problem. A clean-looking API may resell a pool that has since been seized as a botnet, and where the addresses come from does not stop at the vendor boundary.
Is a scraping API cheaper than proxies?
It depends on page weight, and the crossover is sharper than most people expect: a per-request price wins on heavy pages and loses on light ones, because a proxy bill is a function of bytes and an API bill is a function of pages. We worked the break-even out, and what your pages actually weigh is the input that decides it.
Questions
How do scraping APIs charge?
7 of the 9 scraping APIs we track bill in credits rather than by the gigabyte. A credit is not a fixed amount of work: on the same plan a page that needs a browser costs more than a plain fetch, so a per-gigabyte comparison does not reach this product.
Do scraping APIs charge for failed requests?
Billing policies can exclude certain error codes from failed-request protection or charge for early cancellations. Check which responses and cancelled requests count as billable before estimating a workload.
Whose proxy network does a scraping API use?
Of the 7 scraping APIs we publish, none states whose network is underneath. It matters because a storefront can resell a pool that is later seized, as happened to every reseller of NetNut's network.
Prices on this page were read from each provider’s own site. The oldest was checked . How we check
