Last updated: August 31, 2026. Every rate on this page was checked against the vendor's own published pricing page or billing docs, most on August 26, 2026, none earlier than August 11, 2026. Success rates come from the August 11, 2026 run of the Web Data Frontier Benchmark.
A standard page fetch from a web scraping API costs between $0.09 and $1.50 per 1,000 requests at the $100-a-month tier. The same fetch against a bot-protected page costs between $0.90 and $7.43 per 1,000, because most vendors multiply the price by 5x to 75x when you turn on JavaScript rendering and premium proxies. String charges $0.20 per 1,000 standard fetches and $2.00 per 1,000 premium fetches on its $100 Growth plan. Scrapingdog has the cheapest standard rate at $0.09. Firecrawl is the only vendor that charges one flat credit for every configuration, $0.99 per 1,000 on its monthly Standard plan. This page lists the standard and premium rate for all 13 providers in the benchmark, the credit multipliers behind them, who bills failed requests, and what a usable page actually costs once success rates enter the math.
Most vendors advertise their standard rate. Almost nobody scrapes at it. The pages worth paying for, retail, travel, social, real estate, sit behind anti-bot vendors, and fetching them takes JavaScript rendering, premium or residential proxies, or both. That configuration is what this table calls the premium rate.
All rates are USD per 1,000 requests at the paid self-serve tier closest to $100 a month, billed monthly. Standard means a plain HTTP fetch with datacenter proxies and no JavaScript. Premium means the vendor's documented configuration for protected pages: JavaScript rendering plus premium or residential proxies, or the vendor's unblocker product where that is the product.
| Provider | Plan | Standard $/1k | Premium $/1k | Premium multiple |
|---|---|---|---|---|
| Scrapingdog | Standard $90 | 0.09 | 0.90 | 10x |
| ScrapingAnt | Startup $49 | 0.10 | 2.45 residential, 12.25 with browser | 25x to 125x |
| ScrapingBee | Startup $99 | 0.10 | 2.48, stealth 7.43 | 25x to 75x |
| Scrapfly | Pro $100 | 0.10 | 0.50 anti-bot, 2.50 with residential | 5x to 25x |
| Zyte | $100 commit | 0.10 to 0.95 by site tier | 0.75 to 12.00 browser, by site tier | difficulty-tiered |
| String | Growth $100 | 0.20 | 2.00 | 10x |
| ZenRows | Launch $57 | 0.23 | 5.70 | 25x |
| ScraperAPI | Hobby $49 | 0.49 | 12.25, ultra premium 36.75 | 25x to 75x |
| Context.dev | Pro $149 | 0.75 | 0.75 | flat |
| Firecrawl | Standard $99 | 0.99 | 0.99 | flat |
| Nimble | Usage | 1.00 | 1.00 | flat |
| Bright Data | Pay as you go | 1.50 | 1.50 listed; premium domains higher, unpublished | flat, with exceptions |
| Decodo | $99 tier | not published separately | 1.20, JS included | n/a |
Three flat-rate structures stand out. Firecrawl charges one credit for everything, including its stealth proxy escalation, so its $0.99 is the same for an easy blog and for a protected storefront. Bright Data's Web Unlocker is a premium product priced flat at $1.50, with the premium-domain caveat covered below. Nimble bills $1.00 per request at usage pricing with no published multipliers.
Two structures resist a single number. Zyte assigns each website one of five difficulty tiers automatically, so your rate depends on what you scrape, not what you configure. Decodo's $99 tier bundles premium proxies and JavaScript into one $1.20 rate and does not price a bare standard fetch separately.
Annual billing changes several of these numbers. Firecrawl Standard drops from $99 to $83 a month billed annually, ScrapingBee and others discount similarly. Every figure above is the monthly-billed rate. Comparing a vendor's annual rate to another's monthly rate is the most common error in pricing pages, including, until recently, drafts of ours.
Rates only matter next to delivery. The Web Data Frontier Benchmark sends each provider's public API against 99 bot-protected pages, five attempts each, 495 requests per provider, through each vendor's own documented anti-bot configuration. The adapters are public. The premium rates in this page's tables are the rates for those exact configurations, so the price and the success rate describe the same request.
The table below is the arithmetic mean of the recorded latency for all 495 attempts per provider. Failed attempts and timeouts are included at their observed duration. These are measured per-attempt times, not throughput or deadline estimates; the table makes no assumptions about concurrency, retries, rate limits, or workload size.
| Provider | Mean seconds per attempt |
|---|---|
| Browserbase | 2.00 |
| ScrapingAnt | 2.57 |
| Scrapingdog | 5.76 |
| ScrapingBee | 6.59 |
| Firecrawl | 6.98 |
| String | 7.67 |
| ZenRows | 10.42 |
| Oxylabs | 10.84 |
| Zyte | 11.00 |
| Context.dev | 11.04 |
| Scrapfly | 15.94 |
| ScraperAPI | 16.79 |
| Decodo | 21.02 |
| Nimble | 23.57 |
| Bright Data | 25.83 |
Dividing list price by success rate is the standard move here, and it is wrong for most of this field. The division only applies to vendors that charge for failed attempts. Eight of the thirteen charge nothing when they fail to return the page, so their effective rate equals their list rate no matter how often they are blocked. What a low success rate costs those vendors is coverage, not money.
| # | Provider | Effective $/1k usable | List $/1k | Failure billing | Benchmark success |
|---|---|---|---|---|---|
| 1 | Scrapfly | 0.50 | 0.50 | success only | 82.0% |
| 2 | ScrapingBee | 0.50 | 0.50 | success only | 29.7% |
| 3 | ScraperAPI | 0.76 | 0.49 | per attempt | 64.2% |
| 4 | Scrapingdog | 0.90 | 0.90 | success only | 54.3% |
| 5 | Zyte | 0.10 to 0.95 | 0.10 to 0.95 | success only | 72.7% |
| 6 | Context.dev | 0.95 | 0.75 | per credit | 79.2% |
| 7 | Nimble | 1.00 | 1.00 | not published | 66.3% |
| 8 | Firecrawl | 1.26 | 0.99 | per attempt | 78.6% |
| 9 | Bright Data | 1.50+ | 1.50 | success only, with exceptions | 78.0% |
| 10 | Decodo | 1.70 | 1.20 | per attempt, unverified | 70.7% |
| 11 | String | 2.00 | 2.00 | success only | 97.0% |
| 12 | ScrapingAnt | 2.45 | 2.45 | success only | 30.7% |
| 13 | ZenRows | 5.70 | 5.70 | success only | 34.3% |
String's row uses its premium fetch rate, because the benchmark's 99 targets are all bot-protected and that is the honest configuration to price. At its $0.20 standard rate String would top this table, but that is not the rate the benchmark workload represents, so we do not quote it here.
Read the last two rows carefully, because they show why the failure-billing column matters. ZenRows lists $5.70 per 1,000 for its 25-credit protected-page configuration and does not bill failed requests, so $5.70 is also its effective rate. If ZenRows billed per attempt, its 34.3% success rate would push the effective figure to $16.62. The billing rule, one line in a vendor FAQ, changes the number by 3x.
Three billing models, straight from each vendor's own pages, all fetched August 26, 2026.
Success only. Scrapfly ("failed requests are never charged"), ZenRows ("you only spend credits on successful requests"), ScrapingAnt ("failed requests cost 0"), Zyte ("you are only charged for successful responses"), Bright Data ("pay only for success"), ScrapingBee, Scrapingdog, and String. Two footnotes belong here. ScrapingBee and ZenRows both count 404 and 410 responses as billable successes, so a dead URL spends credits even though you get no page. And Bright Data's success-only rule switches off entirely when custom headers or cookies are enabled on a zone: then 100% of requests bill, failures included.
Per attempt. Firecrawl's billing docs charge a credit even when the target returns 403 or 404, which contradicts its own pricing FAQ's "we only charge for successful requests"; the billing docs are the more specific page, so we treat them as controlling. ScraperAPI consumes credits per attempt. Decodo appears to bill per attempt but does not state a policy we could verify, so its effective figure carries that flag.
Not published. Nimble's pricing page says nothing about failures either way. Its row uses the list rate, unflattered and undivided.
Bright Data's $1.50 deserves its own section because it is the table's most misleading-looking bargain. The Web Unlocker docs state plainly that "premium domains", the ones "more challenging to unblock", bill at a higher rate, that only the dashboard shows the exact price, and that the domain list updates quarterly. The public pricing page does not carry the premium rate at all. The domains that need an unblocker in the first place, large retail, social, and travel sites, are precisely the premium-domain profile. So the $1.50 in every comparison table, ours included, is the rate for the domains you were least likely to need Bright Data for. We mark the row $1.50+. Price your actual domain list in their dashboard before you budget from any table.
Zyte has the same shape with more disclosure. Its five difficulty tiers are assigned automatically per website and reviewed quarterly, and the tier ladder is public: $0.10 to $0.95 per 1,000 HTTP fetches at a $100 commitment. What is not public is which tier your target sits in until you send traffic. For a hard-target workload, budget toward the top of the ladder.
Credit vendors publish one attractive per-credit price and vary the credits per request. These are the published multiplier tables, verified August 26, 2026.
| Provider | Base | JS render | Premium proxy | JS + premium | Residential or stealth |
|---|---|---|---|---|---|
| ScrapingBee | 1 | 5 | 10 | 25 | 75 stealth |
| ZenRows | 1 | 5 | 10 | 25 | n/a |
| ScrapingAnt | 1 | 10 | n/a | n/a | 25 residential, 125 with browser |
| ScraperAPI | 1 | 10 | 10 | 25 | 30 ultra, 75 ultra + JS |
| Scrapfly | 1 | 5 | n/a | n/a | 25 residential, 60 screenshot |
| Firecrawl | 1 | 1 | 1 | 1 | 1 |
| String | 1 | 5 browser | 10 | 20 browser premium | n/a |
Two practical rules fall out of this table. First, never budget from a vendor's per-credit price without knowing your configuration's multiplier; a $49 plan at 25 credits per request is a $12.25-per-1,000 plan. Second, a flat-credit vendor like Firecrawl is cheap for hard pages and expensive for easy ones, and a multiplier vendor is the reverse, so the right vendor depends on your mix.
Two benchmarked providers do not sell requests at all, and converting their units would mean inventing numbers, so they sit outside the ranking.
Oxylabs Web Unblocker bills per gigabyte: $9.40 per GB on its $75 Micro plan, $8.60 on the $325 Starter. Your per-page cost depends entirely on page weight, which nobody publishes and which varies by an order of magnitude across sites. Oxylabs scored 76.8% on the benchmark through this product. Its separately priced Web Scraper API bills per result, but that is not the product the benchmark ran.
Browserbase bills per browser-hour: $0.12 on the $20 Developer plan, $0.10 on the $99 Startup plan, plus proxy gigabytes. Per-page cost depends on how many pages a session visits and how long they take. It scored 42.2%.
Effective cost only compares vendors that can return the page. Eight of the twelve competitors in the benchmark failed more than one target in four. ScrapingBee, ScrapingAnt, and ZenRows failed roughly two in three. For a success-billed vendor, failing is free for you and for them, but it does not get you the data: at a 29.7% success rate, a fixed list of 99 targets yields about 29 sites no matter what you spend. Price tells you the cost of the pages you get. Success rate decides whether you get the pages at all.
That is the trade String's pricing makes, stated plainly: $2.00 per 1,000 premium fetches is 11th of 13 on this page, and 97.0% success, the only rate above 90% in the benchmark, is what it buys.
At the $100-a-month tier, standard fetches run $0.09 to $1.50 per 1,000 requests across the 13 providers we track, and protected-page configurations run $0.50 to $12.25 per 1,000. The spread comes from credit multipliers of 5x to 125x that most vendors apply for JavaScript rendering and premium proxies.
Scrapingdog has the cheapest published standard rate at $0.09 per 1,000 requests on its $90 plan. For bot-protected pages, Scrapfly's anti-bot configuration at $0.50 per 1,000 is the cheapest rate that also cleared 80% on our 99-site benchmark.
No. String's $2.00 per 1,000 premium fetches ranks 11th of 13 on effective cost for protected pages. String's $0.20 standard rate is among the cheapest, and its 97.0% benchmark success rate is the highest of any provider tested. You pay for delivery on hard targets, not for the rate card.
Eight of the thirteen, String included, charge only for success, so a blocked request costs nothing. Firecrawl and ScraperAPI charge per attempt, including 403 and 404 responses. ScrapingBee and ZenRows bill 404 and 410 responses as successes. Nimble publishes no failure policy.
Because credits per request scale with configuration. ScrapingBee's $99 plan is $0.10 per 1,000 at one credit per request and $7.43 per 1,000 at its 75-credit stealth configuration. Always compute price at the configuration your targets need, not the base rate.
Only for vendors that bill failed attempts. For the eight success-billed vendors, a failed request costs nothing, so the effective rate equals the list rate. Dividing there invents a cost the vendor does not charge; we made that error in an early draft of this analysis and corrected it against each vendor's current billing pages.
$1.50 per 1,000 requests pay-as-you-go for standard domains. Its docs confirm premium domains bill higher at a rate shown only in the dashboard, and enabling custom headers or cookies switches a zone to billing all requests, failures included. Price your actual domains in their dashboard before budgeting.
No. Annual billing discounts most plans, Firecrawl's Standard drops from $99 to $83 a month, so mixing bases skews any table. Every rate on this page is billed-monthly. Check the billing toggle before trusting any vendor comparison, including this one.