Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zenrows vs ScraperAPI Benchmark

This repository contains the scripts and raw results from an original benchmark comparing Zenrows and ScraperAPI across 8 target URLs at two concurrency levels, conducted in June 2026.

Companion code for the Zenrows article Best ScraperAPI Alternative for Anti-Bot Bypass.


Test Targets

Target Type
Amazon product page Protected
Glassdoor company page Protected
Idealista property listing Protected
LinkedIn company profile Protected
Google SERP results page Protected
Footlocker category page Protected
Hacker News front page Unprotected
Python documentation index Unprotected

Methodology

  • 200 requests per target per platform
  • Two concurrency levels: 2 req/s (low load) and 10 req/s (high load)
  • Zenrows configured with mode=auto on all requests
  • ScraperAPI using default routing
  • Recorded per request: HTTP status code, response time (ms), and page title detection

What this test does not cover

  • Bulk asynchronous job workflows
  • No-code scheduling via ScraperAPI DataPipeline
  • Session persistence across multi-step logged-in workflows

Setup

Prerequisites

Installation

1. Clone the repository

git clone https://github.com/ZenRows/zenrows-vs-scraperapi-benchmark.git
cd zenrows-vs-scraperapi-benchmark

2. Install dependencies

pip install -r requirements.txt

3. Configure API keys

Create a .env file in the project root:

ZENROWS_API_KEY=your_zenrows_key
SCRAPERAPI_KEY=your_scraperapi_key

4. Run the benchmark

python scripts/benchmark.py

The script performs a preflight check on both API keys before starting and resumes automatically from where it left off if interrupted.


Results

Results are saved to the results/ folder as CSV files:

results/
├── zenrows/
│   ├── low_concurrency.csv
│   └── high_concurrency.csv
└── scraperapi/
    ├── low_concurrency.csv
    └── high_concurrency.csv

Each CSV contains the following columns:

Column Description
target_url The scraped URL
platform zenrows or scraperapi
status_code HTTP status code returned
response_time_ms End-to-end response time in milliseconds
has_title Whether a <title> tag was detected in the response
error_type API error code if the request failed
error_msg Error detail message if the request failed
timestamp UTC timestamp of the request

License

MIT