ScraperAPI vs ZenRows
- 500,000 pages/mo
- 20% JS
- medium anti-bot
- United States
- 40 concurrent
- monthly billing
- Example workload — edit it below
Pricing checked Nov 13, 2026 · engine 0.1.0 · cheapest plan that fits, per product
| Product | ScraperAPI · ScraperAPI Scraping API · Credits | ZenRows · Fetch (Universal Scraper API) Scraping API · Credits |
|---|---|---|
| Expected monthly costFor this workload | ||
| Capabilities | ||
| JavaScript rendering | Yescredits | Yesdocs-pricing |
| Premium proxy | Yespremium | Yesdocs-pricing |
| Country targeting | Yespricing | Yesproxy-country |
| City targeting | Nogeo-faq | Not documented |
| Sticky session | Yessessions | Yesfeatures-other |
| Screenshot | Yescredits | Yesdocs-pricing |
| Async request | Yespricing | Not documented |
| Limits | ||
| Session duration |
|
|
| Request timeout |
| Not documented |
| Geotargeting countries |
| Not documented |
| Max response size | Not documented |
|
| Things to know |
|
|
| Evidence | Sources and check dates → | Sources and check dates → |
“Not documented” means the provider's pages don't say — not that the capability is missing. Estimates use list prices and exclude promotions and taxes; the provider's checkout is authoritative.
JSON and API request
The same comparison from the API:
curl -X POST https://scrapeselect.com/api/v1/compare \
-H 'content-type: application/json' \
-d '{"products":["scraperapi/scraping-api","zenrows/fetch"],"workload":{"successful_pages_per_month":500000,"javascript_ratio":0.2,"anti_bot_level":"medium","target_country":"US","country_required":true,"peak_concurrency":40,"monthly_billing_only":true,"expected_success_rate":null,"average_page_size_kb":null,"average_browser_seconds":null}}'{
"products": [
{
"estimate": {
"provider": "scraperapi",
"provider_name": "ScraperAPI",
"product": "scraping-api",
"product_name": "ScraperAPI",
"category": "scraping_api",
"billing_model": "credit",
"architecture": "managed_api",
"feasible": true,
"low": {
"plan_key": "scaling",
"plan_name": "Scaling",
"monthly_cost_usd": 475,
"cost_per_1k_pages_usd": 0.95
},
"expected": {
"plan_key": "scaling",
"plan_name": "Scaling",
"monthly_cost_usd": 475,
"cost_per_1k_pages_usd": 0.95
},
"high": {
"plan_key": "professional",
"plan_name": "Professional",
"monthly_cost_usd": 975,
"cost_per_1k_pages_usd": 1.95
},
"rejected_plans": {
"hobby": "concurrency 20 < 40",
"enterprise": "price not public",
"startup": "needs 3,430,000 more credit than the plan allows",
"business": "needs 1,430,000 more credit than the plan allows"
},
"sources": [
{
"key": "credits",
"url": "https://docs.scraperapi.com/getting-started/quick-start/credits-and-requests-costs",
"title": "Credits and request costs",
"observed_at": "2026-11-13T06:10:04.664359Z",
"excerpts": [
"premium=true - 10 … render=true - 10 … scrensshot=true - 10 … ultra_premium=true - 30* … premium=true + render=true - 25 … ultra_premium=true + render=true - 75*",
"E-Commerce Amazon, Walmart, eBay 5 · SERP Google, Bing - (applies to all subdomains) 25 · Social Media LinkedIn 30",
"Cloudflare Bypass 10 … Datadome Bypass 10 … PerimeterX/Human Bypass 10",
"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)."
],
"fact_type": "official_claim",
"freshness": "fresh"
},
{
"key": "premium",
"url": "https://docs.scraperapi.com/control-and-optimization/premium-residential-mobile-proxy-pools",
"title": "Premium residential and mobile proxy pools",
"observed_at": "2026-11-13T06:10:04.664359Z",
"excerpts": [
"both javascript rendering and our premium proxy pools will be charged at 25 times the normal rate",
"These two parameters are mutually exclusive"
],
"fact_type": "official_claim",
"freshness": "fresh"
},
{
"key": "pricing",
"url": "https://www.scraperapi.com/pricing/",
"title": "ScraperAPI pricing",
"observed_at": "2026-11-13T06:10:04.664359Z",
"excerpts": [
"Monthly / Yearly 10% off",
"Hobby … $49 /month $44.10 /month billed annually … 100,000 API Credits 20 Concurrent Threads Geotargeting: US & EU only",
"A standard page costs 1 credit. Amazon costs 5, Google and Bing (including their subdomains) cost 25, and LinkedIn costs 30. Sites behind bot protection like Cloudflare, Datadome, or PerimeterX add 10 credits per request when we bypass them.",
"Pay-As-You-Go is available on our Scaling, Professional, Advanced, and Enterprise plans.",
"you'll get a 429 response … There's no extra charge for going over",
"Start collecting data with our 7-day trial and 5,000 API credits. No credit card required."
],
"fact_type": "official_claim",
"freshness": "fresh"
}
]
},
"features": [
{
"key": "javascript-rendering",
"label": "JavaScript rendering",
"value": true,
"notes": null,
"source": "credits"
},
{
"key": "premium-proxy",
"label": "Premium proxy",
"value": true,
"notes": null,
"source": "premium"
},
{
"key": "country-targeting",
"label": "Country targeting",
"value": true,
"notes": "Hobby and Startup are limited to US & EU.",
"source": "pricing"
},
{
"key": "city-targeting",
"label": "City targeting",
"value": false,
"notes": null,
"source": "geo-faq"
},
{
"key": "sticky-session",
"label": "Sticky session",
"value": true,
"notes": null,
"source": "sessions"
},
{
"key": "screenshot",
"label": "Screenshot",
"value": true,
"notes": null,
"source": "credits"
},
{
"key": "async-request",
"label": "Async request",
"value": true,
"notes": null,
"source": "pricing"
}
],
"limits": [
{
"key": "session-duration",
"value": 900,
"unit": "seconds",
"plan": null,
"notes": "Expires 15 minutes after last use.",
"source": "sessions"
},
{
"key": "request-timeout",
"value": 60,
"unit": "seconds",
"plan": null,
"notes": "Retries internally for up to 60 s before returning 500.",
"source": "general-faq"
},
{
"key": "geotargeting-countries",
"value": "US",
"unit": null,
"plan": "hobby",
"notes": "US, or Europe as a region; no individual countries.",
"source": "standard-geo"
},
{
"key": "geotargeting-countries",
"value": "US",
"unit": null,
"plan": "startup",
"notes": "US, or Europe as a region; no individual countries.",
"source": "standard-geo"
}
],
"notes": [
"Credit costs are an absolute lookup table, not stacked multipliers (premium + render = 25, not 10 x 10).",
"How domain costs combine with render/premium parameters is not documented; the provider points to its urlcost endpoint. Only the documented case (a standard page without render/premium) is encoded; other combinations fall back to the generic rows and are flagged as unverified.",
"PAYG credits exist on Scaling and above but the per-credit rate is not published, so no overage is modelled; lower plans must upgrade.",
"Professional and Advanced currently show limited-time bonus credits (+250K / +500K), not included here.",
"Requests cancelled by the client before 70 seconds are billed."
],
"url": "/products/scraperapi/scraping-api"
},
{
"estimate": {
"provider": "zenrows",
"provider_name": "ZenRows",
"product": "fetch",
"product_name": "Fetch (Universal Scraper API)",
"category": "scraping_api",
"billing_model": "credit",
"architecture": "managed_api",
"feasible": true,
"low": {
"plan_key": "scale-s2",
"plan_name": "Scale S2",
"monthly_cost_usd": 749,
"cost_per_1k_pages_usd": 1.498
},
"expected": {
"plan_key": "scale-s2",
"plan_name": "Scale S2",
"monthly_cost_usd": 749,
"cost_per_1k_pages_usd": 1.498
},
"high": {
"plan_key": "scale-s2",
"plan_name": "Scale S2",
"monthly_cost_usd": 749,
"cost_per_1k_pages_usd": 1.498
},
"rejected_plans": {
"agent-payg": "concurrency 20 < 40",
"build-b1": "concurrency 20 < 40",
"build-b2": "concurrency 20 < 40",
"build-b3": "concurrency 20 < 40",
"enterprise": "price not public",
"launch-l1": "needs 6,250,000 more credit than the plan allows",
"launch-l2": "needs 6,000,000 more credit than the plan allows",
"launch-l3": "needs 5,800,000 more credit than the plan allows",
"growth-g1": "needs 5,300,000 more credit than the plan allows",
"growth-g2": "needs 4,500,000 more credit than the plan allows"
},
"sources": [
{
"key": "docs-pricing",
"url": "https://docs.zenrows.com/first-steps/pricing",
"title": "ZenRows pricing docs",
"observed_at": "2026-11-13T06:10:04.664359Z",
"excerpts": [
"These credit weights are fixed and never change … on every plan",
"JS Rendering + Premium Proxies (protected) | 25",
"Plan credits don't roll over: unused plan credits expire at every renewal.",
"Up to 10 top-ups per billing period; unused top-up credits roll into the next billing period once, then expire.",
"| Scale | 200 (S1 to S3), 300 (S4), 400 (S5) | Priority support | 1 period |",
"| Scale S4 | 4,000,000 | $400 |",
"| Scale S5 | 6,000,000 | $560 |",
"Does Zenrows offer Pay-As-You-Go plans? Not on a zenrows.com account today.",
"AI agents buying at the agent storefront can buy pay-as-you-go credits at $0.50 per 1,000 (minimum purchase 10,000 credits)",
"your full year's credit allowance up front, as a single balance you draw down anytime over the year",
"Residential Proxies, used standalone, meter at a flat 25,000 credits per GB"
],
"fact_type": "official_claim",
"freshness": "fresh"
},
{
"key": "proxy-country",
"url": "https://docs.zenrows.com/fetch/features/proxy-country.md",
"title": "Proxy country",
"observed_at": "2026-11-13T06:10:04.664359Z",
"excerpts": [
"Proxy Country requires Premium Proxy to be enabled"
],
"fact_type": "official_claim",
"freshness": "fresh"
}
]
},
"features": [
{
"key": "javascript-rendering",
"label": "JavaScript rendering",
"value": true,
"notes": null,
"source": "docs-pricing"
},
{
"key": "premium-proxy",
"label": "Premium proxy",
"value": true,
"notes": null,
"source": "docs-pricing"
},
{
"key": "country-targeting",
"label": "Country targeting",
"value": true,
"notes": "Requires premium proxy; 190+ countries.",
"source": "proxy-country"
},
{
"key": "sticky-session",
"label": "Sticky session",
"value": true,
"notes": null,
"source": "features-other"
},
{
"key": "screenshot",
"label": "Screenshot",
"value": true,
"notes": "Requires JS rendering.",
"source": "docs-pricing"
}
],
"limits": [
{
"key": "session-duration",
"value": 600,
"unit": "seconds",
"plan": null,
"notes": null,
"source": "features-other"
},
{
"key": "max-response-size",
"value": 5,
"unit": "MB",
"plan": "build-b1",
"notes": null,
"source": "docs-pricing"
},
{
"key": "max-response-size",
"value": 20,
"unit": "MB",
"plan": "scale-s1",
"notes": null,
"source": "docs-pricing"
}
],
"notes": [
"Formerly \"Universal Scraper API\"; per-plan dollar-per-1K pricing from earlier years is obsolete.",
"Annual billing grants the full year's credits up front as one balance.",
"Country targeting requires premium proxies, so a geotargeted request costs at least 10 credits.",
"No metered overage; up to 10 top-up packs per billing period, usually pricier per credit than the plan. Unused top-up credits roll over once; unused plan credits expire at every renewal.",
"The \"Pay as you go (agent storefront)\" plan is sold at agents.zenrows.com to AI agents, which pay by card or USDC without a Zenrows account (an agent can also send its human a checkout link). It covers Fetch and Extract only; Batch, Browser Sessions and the CLI need a zenrows.com plan. No concurrency limit is published for it.",
"Site Not Found (RESP007) errors are also billed according to the error-code docs."
],
"url": "/products/zenrows/fetch"
}
],
"assumptions": [
{
"key": "success_rate",
"label": "Success rate",
"value": "97% / 93% / 88%",
"origin": "default",
"note": "Low / expected / high scenario for medium anti-bot targets. Only changes cost where failed attempts are billed."
},
{
"key": "protected_share",
"label": "Pages needing premium proxies",
"value": "20% / 30% / 45%",
"origin": "editorial",
"note": "Share of pages behind anti-bot protection for medium targets."
},
{
"key": "difficulty_tier",
"label": "Website difficulty tier",
"value": "2 / 3 / 4",
"origin": "editorial",
"note": "Only used by providers that price by site tier (e.g. Zyte); their own estimator gives the real tier."
},
{
"key": "page_size_kb",
"label": "Average page size",
"value": "300 KB",
"origin": "default",
"note": "Drives cost for traffic-billed products and proxy traffic."
},
{
"key": "browser_traffic_multiplier",
"label": "Browser page traffic",
"value": "4x the HTML size",
"origin": "editorial",
"note": "Rendered pages also load scripts, styles and images."
},
{
"key": "browser_seconds",
"label": "Browser time per rendered page",
"value": "10 s",
"origin": "default",
"note": null
},
{
"key": "compute_units",
"label": "Compute per 1,000 pages",
"value": "0.8 CU (HTTP), 6 CU (browser)",
"origin": "public_observation",
"note": "From Apify's Website Content Crawler README (0.8 CU HTTP, 2-20 CU browser)."
},
{
"key": "geotargeting",
"label": "Country targeting",
"value": "US (required)",
"origin": "user",
"note": "Some providers only allow country targeting with premium proxies."
}
],
"engine_version": "0.1.0",
"meta": {
"data_checked_at": "2026-11-13T06:10:04.664359Z",
"freshness": "fresh",
"schema_version": "1.0"
}
}