ScraperAPI vs ZenRows vs ScrapingBee: which to use in 2026
Which is better, ScraperAPI, ZenRows or ScrapingBee?
ScrapingBee, on our October 30, 2026 benchmark run. Across 100 live sites, five attempts each, it returned verified content on 85.2% of requests, ScraperAPI on 76.4% and ZenRows on 41.8%. ZenRows' figure carries an API failure: its API closed the connection without a response on 219 attempts across the last 44 targets. Only 19 sites came back on all five attempts from all three, and on 30 sites exactly one did, so pick by testing your own list. If you have to pick one without testing, pick ScrapingBee; test ScraperAPI for Akamai or AWS WAF sites.
The short answer
If you have to pick one of the three without testing, pick ScrapingBee. In the October 30, 2026 benchmark run it returned all five attempts on 76 of the 100 sites, against 52 for ScraperAPI and 33 for ZenRows, and it was the only one of the three to return all five attempts on facebook.com, instagram.com, airbnb.com and bestbuy.com. If your list leans on Akamai or AWS WAF sites, test ScraperAPI too: it leads the three on both. If your list includes allegro.pl, indeed.com, safeway.com, g2.com or reuters.com, test ZenRows, which was the only one of the three to clear those. And judge ZenRows on your own list rather than on its headline, because 44 of its 53 shutouts are the API failure, not the sites.
TL;DR
- Coverage on the October 30, 2026 run: ScrapingBee 85.2% (426/500), ScraperAPI 76.4% (382/500), ZenRows 41.8% (209/500), across 100 sites. Full leaderboard on our benchmark page.
- ZenRows' number is mostly an outage, again. On the 56 targets before its API failure, it passed 209 of 280 attempts. ScrapingBee passed 227 and ScraperAPI 202 on the same 56.
- Two adapters changed before the September run. ScraperAPI goes out on
ultra_premiumand ScrapingBee on Auto Mode with a 75-credit ceiling, the settings each vendor documents for bot-protected pages. ScraperAPI rose from 64.2% in the August run to 84.0% in September, ScrapingBee from 29.7% to 73.0%. In October ScrapingBee rose again to 85.2% and ScraperAPI fell to 76.4%. - They agree on more than they used to, but not on most. 19 of 100 sites returned five of five from all three. On 30, exactly one did.
- The leaderboard order still inverts by anti-bot vendor. ScraperAPI leads the three on Akamai, 81.0% against ScrapingBee's 74.0%, and on AWS WAF.
- All three bill on success. ScraperAPI charges for 200 and 404 responses, ZenRows and ScrapingBee for 200, 404 and 410. None of their rate cards should be divided by a success rate.
- At roughly $100 a month: ScrapingBee Startup is $99 for 1,000,000 credits, ZenRows Launch L2 is $99 for 500,000, ScraperAPI Startup is $149 for 1,000,000. ZenRows publishes annual-equivalent prices on its pricing page, so read its docs table instead.
- ScrapingBee's default costs 5 credits, not 1, because JavaScript rendering is on unless you turn it off.
At a glance
| String | ScraperAPI | ZenRows | ScrapingBee | |
|---|---|---|---|---|
| Benchmark success, Oct 30 2026 | 98.6% | 76.4% | 41.8%, with 219 attempts lost to an API failure | 85.2% |
| Sites returning 5 of 5 | 95 of 100 | 52 of 100 | 33 of 100 | 76 of 100 |
| Sites returning 0 of 5 | 0 of 100 | 9 of 100 | 53 of 100, 44 inside the failure | 9 of 100 |
| Plan nearest $100/mo | Growth, $99 | Startup, $149 | Launch L2, $99 | Startup, $99 |
| Credits at that plan | not credit-based | 1,000,000 | 500,000 | 1,000,000 |
| Protected page cost | $0.90 per 1,000 | 10 credits, 30 on ultra_premium |
25 credits | 25 credits, 75 on stealth |
| Billed for failures | no | no | no | no |
| Credits roll over | yes | no | no; top-up credits carry one period | no |
| Free to start | 20,000 standard fetches | 1,000 credits/month | 5,000 credits/month | 1,000 credits |
Who wrote this and why you should discount it
String sells a web scraping API. We built the benchmark this page draws on, and String ranks first in it. That is a conflict, and the only useful answer to it is a harness you can run yourself with your own keys and your own target list. The suite, the adapters and the raw result files are public at usestring/web-data-frontier-benchmark, and the README describes the pass rule in full. The raw JSON for this run is in the repo, so every count on this page can be recomputed rather than taken on trust.
The section below on how each provider was configured is the part that costs us something. Read it before you use any number here.
How we tested, and what each vendor was running
100 live sites, five attempts each, 500 requests per provider, a 90 second timeout, and a marker-based pass rule: an attempt passes only when the response contains content the target actually serves, so a challenge page or an empty shell counts as a failure. Seventeen providers ran the same list on October 30, 2026.
Each provider is driven by a small adapter file in the harness, and the adapter decides which flags go out with every request. Here is what those files sent as of the September 16 run, and when each was last touched before it; the commit history shows any later change:
| Provider | Adapter setting | Last changed | Credits per request |
|---|---|---|---|
| ScraperAPI | ultra_premium: true, rendering off, cache disabled |
September 6, 2026 | 30 |
| ZenRows | premium_proxy: true, js_render: true |
July 13, 2026 | 25 |
| ScrapingBee | mode: auto, max_cost: 75 |
September 6 and 7, 2026 | 1 to 75, and 0 when every tier fails |
Before the September run, a harness change moved ScraperAPI and ScrapingBee to the configuration each vendor's own documentation points at for bot-protected pages. ScraperAPI now goes out on ultra_premium, its advanced bypass tier, where it had sent only the URL and key. ScrapingBee now goes out on Auto Mode with the ceiling pinned at the 75-credit stealth tier, where it had sent JavaScript rendering on the default proxy pool. That change is the main reason ScraperAPI moved from 64.2% in the August run to 84.0% in September, and ScrapingBee from 29.7% to 73.0%. Read those jumps as our adapters catching up with the vendors' documented settings, not as product changes.
ZenRows' adapter has sent premium_proxy and js_render together since the harness was first committed in July, and that pair is the 25-credit protected configuration ZenRows' own pricing docs describe as its top tier. Its result moved from 34.3% in the August run to 41.2% in September and 41.8% in October.
ZenRows' number also carries a failure that has nothing to do with the sites, and it is the second run in a row with one. In September its API stopped answering from the 59th target, 210 attempts across 42 targets. In October it closed the connection without a response on four of five attempts at the 57th target and on every attempt from the 58th to the 100th: 219 attempts across 44 targets. The harness scored those as failures, as it scores any error, so 41.8% is the measured figure. It is not a measure of what ZenRows reaches on those 44 sites. On the 56 targets before the failure, ZenRows passed 209 of 280 attempts, against 227 for ScrapingBee and 202 for ScraperAPI.
So the ranking on this page is a ranking of three APIs at their documented protected-page settings on one day, with one of them losing 44 targets to its own API. The per-site comparison below is the more useful part, with the same caveat applied wherever ZenRows is involved.
Chart data
| Provider | Success rate | Passed | Latency score |
|---|---|---|---|
| String | 98.6% | 493/500 | 4.24s |
| Scrape.do | 94.0% | 470/500 | 5.08s |
| Context.dev | 93.0% | 465/500 | 10.96s |
| Scrapfly | 86.8% | 434/500 | 19.62s |
| ScrapingBee | 85.2% | 426/500 | 20.30s |
| Firecrawl | 81.2% | 406/500 | 8.87s |
| Zyte | 79.6% | 398/500 | 14.43s |
| Apify | 79.4% | 397/500 | 24.87s |
| ScraperAPI | 76.4% | 382/500 | 15.19s |
| Bright | 75.4% | 377/500 | 27.88s |
| Decodo | 71.2% | 356/500 | 28.29s |
| Nimble | 68.0% | 340/500 | 22.65s |
| Oxylabs | 67.4% | 337/500 | 16.62s |
| Browserbase | 43.0% | 215/500 | 18.01s |
| ZenRows | 41.8% | 209/500 | 21.91s |
| ScrapingAnt | 40.0% | 200/500 | 18.39s |
| Scrapingdog | 27.6% | 138/500 | 31.52s |
The agreement floor: 19 of 100
In the October 30, 2026 benchmark run, of the 100 sites, 19 came back with all five attempts from all three providers, among them linkedin.com, zillow.com, walmart.com, amazon.com and nytimes.com. None of the 19 sits inside ZenRows' failure.
On 30 of the 100 sites, exactly one of the three returned all five attempts and neither of the other two managed a full set. ScrapingBee is the sole provider on 21 of those, ZenRows on 5, ScraperAPI on 4. Fourteen of the 30 sit inside ZenRows' failure, so ZenRows never had a working attempt at them. Only temu.com shut out all three. On 14 sites none of the three returned a complete set: temu.com, mouser.com, lowes.com, yelp.com, us.louisvuitton.com, booking.com, monster.com, realtor.com, coupang.com, stockx.com, cargurus.com, tiktok.com, skyscanner.net and allmenus.com.
ScraperAPI and ScrapingBee both cleared 47 sites in common, ScraperAPI and ZenRows 20, and ZenRows and ScrapingBee 27. Running ScrapingBee and ZenRows together reaches 82 of 100 sites at five of five, 6 more than ScrapingBee reaches alone, and ScrapingBee with ScraperAPI reaches 81. All three together reach 86.
In August this section found almost no agreement and argued that no ordering of the three survives a real target list. In September ScraperAPI led across most of the suite. In October ScrapingBee does, and the disagreement still sits in a band of about 30 sites. That band is wide enough that a 20-site list can come out in any order, and the leader changed between two runs a month and a half apart.
ScraperAPI: second of the three, at its 30-credit setting
Benchmark success: 76.4%, 382 of 500 requests, ninth of seventeen providers on the October 30, 2026 run, down from 84.0% and third place in September. 52 sites at five of five, 39 partial, 9 shutouts.
Pricing: Hobby is $49 a month for 100,000 credits and Startup is $149 for 1,000,000, from the pricing page with the toggle on monthly. Startup is the plan nearest $100. Annual billing takes 10% off and the page shows both figures, which is more honest than the alternative discussed below. A standard page is 1 credit; Amazon, Walmart and eBay are 5; Google and Bing and their subdomains are 25; LinkedIn is 30, per the credits documentation. The ultra_premium setting this run used costs 30 credits a request, or 75 with rendering.
Latency: on the 48 sites where String and ScraperAPI both returned all five attempts, ScraperAPI's median was 3.75 seconds against String's 1.70. Its failure-aware latency score, 15.19 seconds, was sixth of seventeen and the best of the three.
Strengths: its 4 sole wins are neimanmarcus.com, aa.com, google.com and redfin.com, two of them inside ZenRows' failure. It leads the three on Akamai at 81.0% and AWS WAF at 76.7%, and it returned all five attempts on marketwatch.com, barrons.com and yellowpages.com where String returned four, and on kroger.com where String returned two. It also documents its costs better than most: there is a URL cost endpoint you can call before you scrape, and a cost control page covering spend caps.
Weaknesses: credits do not roll over. Its own pricing FAQ says the balance resets at renewal, so unused volume is money gone, and the credit usage view is where you find out. It returned nothing on temu.com, mouser.com, realtor.com, stockx.com, capterra.com, instagram.com, facebook.com, x.com and goodrx.com, and it left 39 sites partial, the most of the three. The setting that produced 76.4% is the expensive one, at 30 credits a request. And there is a contradiction inside its own documentation worth knowing before you model costs on the default path. The pricing FAQ says sites behind Cloudflare, DataDome or PerimeterX "add 10 credits per request", which makes a protected page 11 credits. The docs table heads its column "Cost per Scrape", gives 10, and lists Akamai and Cloudflare Turnstile at the same rate. We quote 10 here on the grounds that the docs page is the more specific surface, and flag that our own ScraperAPI alternatives page also gives the 11 reading.
Billing on failure: ScraperAPI charges only for 200 and 404 responses, plus requests you cancel before giving it 70 seconds. That is success billing, so its rate card is already the cost per usable page and should not be divided by 76.4%.
ZenRows: an API failure sits on its number
Benchmark success: in the October 30, 2026 run, 41.8%, 209 of 500 requests, fifteenth of seventeen, with its API closing the connection on every attempt for the last 44 targets. 33 sites at five of five, 14 partial, 53 shutouts, 44 of which are that failure.
Pricing: read the docs plan table, not the pricing page. The pricing page opens on the annual toggle and shows the entry rung of each tier at its annual-equivalent monthly price: $16, $58, $166, $458. The docs give the monthly-billed figures: $19, $29 and $39 across Build, then $69, $99 and $129 across Launch, then $199 upward through Growth. The gap is the pay-for-ten-get-twelve annual discount its FAQ describes. Launch L2 at $99 a month for 500,000 credits is the plan nearest $100 and the closest match to the anchor of any vendor here.
Its credit weights are unusually clear and unusually rigid: 1 credit standard, 5 for JavaScript rendering, 10 for premium proxies, 25 for both together. The docs state that these "are fixed and never change" on every plan, which means moving up a rung buys volume and nothing else. Residential bandwidth meters at 25,000 credits per gigabyte, and the docs give the conversion outright: one gigabyte is 1,000 protected pages. Concurrency moves by tier rather than by rung, so Launch L2 runs 50 parallel requests whichever rung you sit on.
Latency: on the 31 sites where String and ZenRows both returned all five attempts, ZenRows' median was 12.60 seconds against String's 1.70.
Strengths: on the 56 targets its API answered, it passed more attempts than ScraperAPI, 209 against 202. Its 5 sole wins are allegro.pl, indeed.com, safeway.com, g2.com and reuters.com, and it returned all five attempts on marketwatch.com and barrons.com where String returned four. It beats ScraperAPI on Kasada, 60.0% against 53.3%, and as of the September run it was the only one of the three whose benchmark configuration had not changed since July. Its billing is clean: never charged for failures, with 404 and 410 counted as successes.
Weaknesses: outside the failure it still shut out 9 sites: mouser.com, lowes.com, autozone.com, us.louisvuitton.com, monster.com, bloomberg.com, stockx.com, cargurus.com and instagram.com. Its anti-bot columns read 17.8% on in-house protection, 33.3% on Cloudflare and 57.0% on Akamai, but every column includes the 44 failed targets, so treat them as floors rather than measurements. Its flaky middle is 14 sites returning some attempts but not all, including alibaba.com, ebay.com and booking.com at four of five and yelp.com at two. A site that returns four times in five corrupts a daily table more quietly than a site that fails outright, and it bills you for the four.
One thing that changes the cost, not the ceiling: ZenRows ships an Adaptive Stealth Mode (mode=auto) that picks the protection level for you. It changes what you pay per page. It does not change which pages come back, and our run already sent the top configuration by hand.
ScrapingBee: the cheapest credits, and first of the three in October
Benchmark success: in the October 30, 2026 run, 85.2%, 426 of 500 requests, fifth of seventeen, up from 73.0% and seventh place in September. 76 sites at five of five, 15 partial, 9 shutouts.
Pricing: Hobby $19 for 75,000 credits, Freelance $49 for 250,000, Startup $99 for 1,000,000, Business $249 for 3,000,000, Business+ $599 for 8,000,000, from the pricing page. Startup at $99 is the anchor plan and the cheapest credits on this page at $0.099 per thousand. No annual toggle is published, all prices exclude VAT, and the page states that credits are valid for one month and do not roll over.
Then read the credit table before you believe that number. A classic proxy without JavaScript rendering is 1 credit, but rendering is on by default, so the default request is 5. Premium proxy without rendering is 10, with rendering 25, and a stealth proxy with rendering is 75. Its own FAQ confirms the default: "each request costs 5 credits because JavaScript rendering is enabled by default." A team that never sets render_js=false pays $0.495 per thousand standard pages, five times the headline.
Latency: on the 72 sites where String and ScrapingBee both returned all five attempts, ScrapingBee's median was 5.05 seconds against String's 1.70. Its failure-aware latency score, 20.30 seconds, was eleventh of seventeen.
Strengths: Auto Mode is the best-designed billing feature of the three, and it is what this run sent. Add mode=auto and ScrapingBee tries configurations from cheapest to most expensive, stops at the first that works, and charges only for that one. If every configuration fails, the request costs zero credits, and the charge comes back in an Spb-auto-cost response header so you can audit it. max_cost caps how far it is allowed to climb. On a target list with a wide spread of difficulty this is straightforwardly better than paying a flat protected rate on every request. Its 21 sole wins include bestbuy.com, homedepot.com, ebay.com, instagram.com, facebook.com, airbnb.com, seatgeek.com, footlocker.com, wsj.com and alibaba.com, and 12 of the 21 sit inside ZenRows' failure. It reads 92.5% on social media against ScraperAPI's 60.0%, and it leads the three on DataDome, Cloudflare, PerimeterX, Kasada and in-house protection. It also ships a Markdown output mode, which matters if the pages are going into a model rather than a database.
Weaknesses: 9 shutouts: temu.com, lowes.com, autotrader.com, booking.com, realtor.com, reuters.com, coupang.com, google.com and skyscanner.net. It reads 74.0% on Akamai, the largest protection group in the suite, against ScraperAPI's 81.0%, and 63.3% on AWS WAF. Its latency score trails ScraperAPI's, 20.30 seconds against 15.19, and 41 of its 2xx responses were not the requested page.
Where each one wins, by anti-bot vendor
The overall ordering does not fully survive this table. Figures are success rate on the sites carrying each protection, from the October 30, 2026 run. The protections themselves are Cloudflare, DataDome, Akamai Bot Manager, PerimeterX, now sold by HUMAN Security, and Kasada. ZenRows' column includes the 44 targets its API never answered.
| Protection | Sites | String | ScraperAPI | ZenRows | ScrapingBee |
|---|---|---|---|---|---|
| DataDome | 19 | 97.9% | 75.8% | 52.6% | 85.3% |
| Akamai | 20 | 97.0% | 81.0% | 57.0% | 74.0% |
| Cloudflare | 15 | 98.7% | 70.7% | 33.3% | 97.3% |
| PerimeterX | 9 | 97.8% | 82.2% | 73.3% | 88.9% |
| AWS WAF | 6 | 100% | 76.7% | 36.7% | 63.3% |
| Kasada | 3 | 100% | 53.3% | 60.0% | 100% |
| Fastly | 1 | 100% | 100% | 0% | 100% |
| Proprietary or other | 27 | 100% | 76.3% | 17.8% | 88.1% |
Akamai and AWS WAF are the rows to look at. ScrapingBee leads ScraperAPI by 8.8 points overall, and on those two rows, 26 sites between them, ScraperAPI is ahead: 81.0% against 74.0% on Akamai and 76.7% against 63.3% on AWS WAF. ScrapingBee leads or ties every other row, by its widest margin on Cloudflare, 97.3% against 70.7%. If your targets cluster on one protection vendor, the leaderboard is a weak guide and this table is the one to read.
Chart data
| Provider | DataDome (19 sites) | Akamai (20 sites) | Cloudflare (15 sites) | PerimeterX (9 sites) | AWS WAF (6 sites) | Kasada (3 sites) | Fastly (1 sites) | Proprietary / other (27 sites) |
|---|---|---|---|---|---|---|---|---|
| String | 97.9% | 97.0% | 98.7% | 97.8% | 100.0% | 100.0% | 100.0% | 100.0% |
| Scrape.do | 97.9% | 87.0% | 93.3% | 100.0% | 100.0% | 100.0% | 100.0% | 92.6% |
| Context.dev | 100.0% | 79.0% | 96.0% | 97.8% | 100.0% | 100.0% | 100.0% | 92.6% |
| Scrapfly | 92.6% | 78.0% | 93.3% | 93.3% | 96.7% | 86.7% | 40.0% | 83.0% |
| ScrapingBee | 85.3% | 74.0% | 97.3% | 88.9% | 63.3% | 100.0% | 100.0% | 88.1% |
| Firecrawl | 85.3% | 80.0% | 98.7% | 100.0% | 83.3% | 100.0% | 100.0% | 60.0% |
| Zyte | 68.4% | 68.0% | 92.0% | 91.1% | 70.0% | 100.0% | 100.0% | 84.4% |
| Apify | 85.3% | 69.0% | 86.7% | 86.7% | 63.3% | 100.0% | 0.0% | 80.7% |
| ScraperAPI | 75.8% | 81.0% | 70.7% | 82.2% | 76.7% | 53.3% | 100.0% | 76.3% |
| Bright | 74.7% | 72.0% | 74.7% | 86.7% | 73.3% | 66.7% | 100.0% | 75.6% |
| Decodo | 65.3% | 68.0% | 73.3% | 86.7% | 73.3% | 100.0% | 0.0% | 70.4% |
| Nimble | 64.2% | 51.0% | 68.0% | 82.2% | 40.0% | 86.7% | 100.0% | 81.5% |
| Oxylabs | 67.4% | 53.0% | 68.0% | 91.1% | 16.7% | 100.0% | 0.0% | 80.0% |
| Browserbase | 31.6% | 28.0% | 6.7% | 73.3% | 16.7% | 33.3% | 0.0% | 80.7% |
| ZenRows | 52.6% | 57.0% | 33.3% | 73.3% | 36.7% | 60.0% | 0.0% | 17.8% |
| ScrapingAnt | 7.4% | 33.0% | 24.0% | 53.3% | 13.3% | 53.3% | 100.0% | 74.8% |
| Scrapingdog | 16.8% | 27.0% | 29.3% | 6.7% | 13.3% | 20.0% | 0.0% | 46.7% |
Speed, without the flattery
None of these three is slow in a way that would decide a purchase, and the published latency column is not the place to check. That column imputes a stand-in duration for every attempt a provider failed, which means a provider that misses more sites carries time it never actually spent. It is a fair scoring choice, because it refuses to reward a fast failure, but it is not a like-for-like speed measurement and we will not use it as one.
Split the set instead. On the 17 sites all four of us returned in full, String's median was 1.70 seconds, ScrapingBee's 3.60, ScraperAPI's 4.20 and ZenRows' 12.60. ScrapingBee is the quickest of the three on agreed pages in this run; in September it was ScraperAPI.
Why the pricing does not compare cleanly
Six reasons, all of them visible in the vendors' own documentation. Prices come from each vendor's pricing page and docs, checked October 27, 2026.
- Two of the three publish credits, not prices, and the weights differ. A protected page is 25 credits at ZenRows and ScrapingBee, and 10 at ScraperAPI. The credit is not a unit.
- The default configuration is not the cheapest one. ScrapingBee bills 5 credits by default because rendering is on. Its own headline rate assumes you turned that off.
- One of the three shows annual-equivalent prices as monthly. ZenRows' pricing page renders $58 where the docs say $69, and $166 where the docs say $199.
- Rollover differs and nobody leads with it. ScraperAPI resets your balance at renewal, ScrapingBee credits last one month, and ZenRows plan credits expire at every renewal, with only top-up credits carried forward once. String rolls credits over.
- The expensive tiers are the ones that matter and the cheap ones set the headline. Every published per-credit rate is calculated on a standard page. The pages you are buying an API for are the protected ones.
- Success billing is now the norm, so the old correction is wrong. All three of these bill only for successful responses. Dividing a rate card by a success rate, which is the right move for an attempt-billed vendor, produces a fictional number for all three of these.
What $100 a month buys
At each vendor's anchor plan, using each vendor's own documented weights. All four are success-billed, so no figure below is adjusted by a success rate.
| Vendor | Plan | Monthly | Standard page | Protected page |
|---|---|---|---|---|
| String | Growth | $99 | $0.16 per 1,000 | $0.90 per 1,000 |
| ScraperAPI | Startup | $149 | $0.15 per 1,000 | $1.49 per 1,000 at 10 credits |
| ZenRows | Launch L2 | $99 | $0.20 per 1,000 | $4.95 per 1,000 |
| ScrapingBee | Startup | $99 | $0.10 per 1,000, or $0.50 at the default | $2.48 per 1,000, $7.43 on stealth |
ScraperAPI is the cheapest protected page of the three on published rates, and String undercuts it at this anchor, $0.90 per 1,000 (as of October 2026) against $1.49. Standard pages go the other way: ScraperAPI's $0.15, and ScrapingBee's $0.10 with rendering off, are below String's $0.16. Where String earns that gap is the shutout count, 0 against ScraperAPI's 9 and ScrapingBee's 9, and where it does not, ScraperAPI is the cheaper buy for easy pages. Say that out loud rather than hiding it, because a reader who runs 20 easy sites should buy on price and will find this out anyway.
One more comparison worth having, because it is the one that matches the success rates above. At the configuration our harness sent, ScraperAPI's ultra_premium costs 30 credits, which is $4.47 per 1,000 on Startup. ZenRows' protected pair costs 25 credits, $4.95 per 1,000 on Launch L2. ScrapingBee's Auto Mode charges the winning tier and nothing at all when everything fails, up to $7.43 per 1,000 at the stealth ceiling. Against all three, String's $0.90 per 1,000 premium fetches is the cheaper line.
Where String fits, and where it does not
String is a web access API for teams whose target pages block standard scrapers, that returns the page from one HTTP call. In the October 30, 2026 benchmark run, it returned all five attempts on 95 of the 100 sites and nothing on none. Its flaky middle is 5 sites: marketwatch.com, barrons.com, skyscanner.net and yellowpages.com at four of five, and kroger.com at two. ScraperAPI and ScrapingBee each returned four of those five on every attempt, all but skyscanner.net, and ZenRows returned marketwatch.com and barrons.com in full. That is the clearest case on this page for testing a vendor against a specific list rather than reading a leaderboard.
On the 30 sites where exactly one of the three returned a full set, String returned a full set on all 30. On the 14 where none of the three did, String returned a full set on 13; skyscanner.net is the exception. That is the argument for a single unblocker over a portfolio, and it is a coverage argument, not a price one. If your list is 30 sites and one vendor already returns all of them, this page has not given you a reason to move.
Pricing is on our pricing page, the first 20,000 standard fetches are free, and billing is per successful request.
How to settle this on your own list
Do not take the counts here. Take the method.
- Pull your actual target list, not a sample of easy pages. 20 URLs is enough to separate these three, because the disagreement sits on exactly the sites people buy an API for.
- Get the free tiers. ScraperAPI gives 1,000 credits a month, plus a 7-day trial with 5,000. ScrapingBee gives 1,000, ZenRows gives 5,000 a month with no card. String gives 20,000 standard fetches.
- Run each URL five times, not once. Every partial result on this page would have read as a pass or a fail on a single attempt, and the partials are where the money goes.
- Check the body, not the status code. All three return 200 on challenge pages. Look for a string only the real page carries.
- Turn each vendor's strongest setting on, and price that setting rather than the headline.
ultra_premiumfor ScraperAPI,premium_proxywithjs_renderfor ZenRows,mode=autowith amax_costyou have chosen for ScrapingBee. - Count shutouts separately from partials, and separate both from API errors. A site that never returns is a data gap you can plan around. A site that returns four times in five is a data quality problem you will find in a dashboard three weeks later. An API that stops answering mid-run is a third problem, and it looks like the first.
Our harness does all six and takes your keys. Fork it and swap the target list.
FAQ
ScraperAPI vs ZenRows vs ScrapingBee, which should I use?
ScrapingBee, if you have to choose without testing: it returned all five attempts on 76 of 100 sites in our October 30, 2026 benchmark run, against 52 for ScraperAPI and 33 for ZenRows. But the three agreed on only 19 of the 100 sites, and on 30 of them exactly one returned a full set. In September the same question had ScraperAPI as the answer. Which one worked changed by site. Test all three on your own list before committing, because the ranking does not predict your result.
Which of the three is best for Cloudflare-protected sites?
ScrapingBee, clearly: in the October 30, 2026 benchmark run it passed 97.3% across the 15 Cloudflare sites in the suite, against ScraperAPI at 70.7%. ZenRows read 33.3%, a figure that includes the targets its API never answered. For comparison, String read 98.7% on the same 15 sites. If your list is mostly Cloudflare, this is the row that decides it.
Which is cheapest?
ScrapingBee, on published credit rates (each vendor's pricing page, checked October 27, 2026): $99 a month for 1,000,000 credits is $0.099 per thousand standard pages. Two things undercut that. Its default request costs 5 credits rather than 1 because rendering is on unless you disable it, and a protected page costs 25. On protected pages ScraperAPI is the cheapest of the three at roughly $1.49 per thousand on its default path. ZenRows is the most expensive protected page at $4.95 per thousand.
Do any of them charge for blocked requests?
No. ScraperAPI bills only 200 and 404 responses, plus requests you cancel before 70 seconds. ZenRows and ScrapingBee both bill only 200, 404 and 410. This is worth stating because it used to be otherwise, and because it means you should not divide any of their rate cards by a success rate to get an effective cost.
Why did ScrapingBee's score jump?
Because our adapter changed. The August run sent ScrapingBee's default JavaScript path on its standard proxy pool, and it scored 29.7%. Before the September run the harness moved it to Auto Mode with the 75-credit stealth tier as its ceiling, the setting ScrapingBee documents for protected pages, and it scored 73.0%, then 85.2% in the October 30, 2026 benchmark run. Treat the September and October figures as what Auto Mode returned at that ceiling, and the August one as a measure of our configuration.
Is it worth buying two of these three?
Sometimes, on this data from the October 30, 2026 benchmark run. ScrapingBee and ZenRows together reach 82 of 100 sites at five of five, 6 more than ScrapingBee alone, and ScrapingBee and ScraperAPI reach 81. Either pairing has a case if your list includes the sites the second vendor took alone. ZenRows' full contribution to a pair cannot be read from this run, because its API failed on 44 of the targets.
Is String cheaper than these three?
Not on every request. Per each vendor's pricing page, ScrapingBee's and ScraperAPI's standard pages are cheaper than String's $0.16 (as of October 2026) per thousand. On protected pages String is the cheapest of the four, $0.90 against about $1.49 on ScraperAPI's Startup plan, $2.48 on ScrapingBee and $4.95 on ZenRows. The case for String on this page is coverage as much as unit price: 95 of 100 sites at five of five. If your targets are sites all four return, buy on price.
Can I check these numbers myself?
Yes, and you should. The suite, every provider adapter and the raw result file are public at usestring/web-data-frontier-benchmark. The adapters are the part to read first, because they hold the flags each provider was sent, and the commit history shows when each was last changed.
Sources
Pricing checked October 27, 2026. Benchmark figures from the October 30, 2026 run.
Benchmark
- Web Data Frontier Benchmark harness
- Method and latency scoring
- Raw results, October 30, 2026 run
- Adapter change before the September run
- ScraperAPI adapter
- ZenRows adapter
- ScrapingBee adapter
- Benchmark results on usestring.ai
- The October 2026 benchmark post
ScraperAPI
- Pricing
- Credits and request costs
- Premium residential and mobile proxy pools
- Cost control
- Supported parameters
- API status codes
- Credit usage
ZenRows
- Pricing page
- Pricing documentation
- Fetch API reference
- API error codes
- Getting started
- Fetch product page
- Concurrency
- Status page
ScrapingBee
- Pricing
- Documentation, including the credit cost table and Auto Mode
- FAQ
- Knowledge base
- CLI documentation
- Markdown scraper
- Status page
Anti-bot vendors named in this page
- Cloudflare bot management
- DataDome documentation
- Akamai Bot Manager
- HUMAN Security, which now sells PerimeterX
- Kasada
Related String pages