DEV Community

Praise James for Zenrows

Posted on Edited on Originally published at zenrows.com

We Compared 5 Scraping APIs for Live Data. Here’s the Result

This article was originally published on the Zenrows blog.

We compared five web scraping APIs for real-time data, meaning the current page content returned at the moment your application asks for it. Three of them, Zenrows, Zyte, and ScraperAPI, ran through Zenrows' benchmark of 100 requests per target against four protected sites. Here's the result. Zenrows succeeded on 99.00% of requests at an average of 9.1 seconds, Zyte on 74.75% at 14.3 seconds, and ScraperAPI on 49.00% at 36.0 seconds.

Bright Data and Oxylabs weren't benchmarked, so they're compared on how they handle bot detection, rendering, and pricing. You'll also get the best fit for each use case and two Python scripts for collecting fresh data on demand and in bulk. The scripts are on GitHub.

The Short Version

API Success rate Approach Output Entry price
Zenrows 100% (AI agent benchmark), 99% (API benchmark) Adaptive Stealth Mode HTML, Markdown, JSON via extract=auto $16/mo for 45,000 credits, success-only billing
Bright Data Not benchmarked Managed browsers, 400M+ proxy network JSON, NDJSON, CSV $1.50 per 1,000 records
Zyte 74.75% AI proxy selection and retries JSON with AI extraction $0.13 to $1.27 per 1,000 HTTP requests
ScraperAPI 49% ML proxy and header selection JSON or CSV via autoparse $49/mo for 100,000 credits
Oxylabs Not benchmarked ML proxy rotation, 175M+ residential IPs HTML, Markdown, PNG, JSON $49/mo

All benchmark figures come from Zenrows' own tests, so run your target sites through a free plan before you commit.

How Success Was Measured

A request counted as successful when it returned HTTP 200 and a valid title or meaningful data. The web scraping API benchmark sent 100 requests per target at 2 requests per second to Zim, Glassdoor, Idealista, and Indeed.

API Success rate Average response time
Zenrows 99.00% 9.1 s
Zyte 74.75% 14.3 s
ScraperAPI 49.00% 36.0 s

A separate AI agent benchmark recorded 100% for Zenrows on DataDome, Cloudflare, and Akamai targets.

Why Real-Time Scraping Fails

Protected sites check IP reputation, browser identity, headers, and behavior. A request that fails those checks gets a block, a challenge page, or stale cached content. Managed APIs handle IP rotation, TLS and header alignment, sessions, and CAPTCHAs. Pages that load data with JavaScript also need a headless browser.

Fetch One Page on Demand

# pip install requests python-dotenv
import html
import os
import re

import requests
from dotenv import load_dotenv

load_dotenv()

API_KEY = os.environ.get("ZENROWS_API_KEY")
TARGET_URL = "https://www.amazon.com/dp/B0CHWRXH8B"

params = {
    "url": TARGET_URL,
    "apikey": API_KEY,
    "mode": "auto",
}

response = requests.get(
    "https://api.zenrows.com/v1/",
    params=params,
    timeout=180,
)
response.raise_for_status()

title_match = re.search(
    r"<title[^>]*>(.*?)</title>",
    response.text,
    re.IGNORECASE | re.DOTALL,
)
if not title_match:
    raise ValueError("The response does not contain a page title.")

page_title = html.unescape(title_match.group(1)).strip()

print(f"Status code: {response.status_code}")
print(f"Page title: {page_title}")
Enter fullscreen mode Exit fullscreen mode

mode=auto starts with a lightweight request and adds Premium Proxies and JavaScript rendering only when the page needs them. The script confirms the right page came back by reading its title.

Status code: 200
Page title: Amazon.com: Apple AirPods Pro (2nd Generation) Wireless Ear Buds with USB-C Charging, Up to 2X More Active Noise Cancelling Bluetooth Headphones, Transparency Mode, Adaptive, Personalized Spatial Audio, White : Electronics
Enter fullscreen mode Exit fullscreen mode

Credit costs scale with what the page needs. A basic request costs 1 credit, rendering costs 5, Premium Proxies cost 10, and both together cost 25.

Collect Many Pages as One Batch Job

# pip install requests python-dotenv
import os

import requests
from dotenv import load_dotenv

load_dotenv()

api_key = os.getenv("ZENROWS_API_KEY")
batch_url = "https://async.api.zenrows.com/v1/jobs"

headers = {
    "X-API-Key": api_key,
    "Content-Type": "application/json",
}

payload = {
    "type": "regular",
    "status": "closed",
    "zenrows_params": {
        "mode": "auto",
        "extract": "auto",
    },
    "tasks": [
        {"url": "https://www.amazon.com/dp/B0CHWRXH8B"},
        {"url": "https://www.amazon.com/dp/B09HM94VDS"},
    ],
}

response = requests.post(
    batch_url,
    headers=headers,
    json=payload,
    timeout=30,
)
response.raise_for_status()

job = response.json()
print(job["job_id"], job["latest_run"]["status"])
Enter fullscreen mode Exit fullscreen mode

The script submits two product URLs as one Batch job with extract=auto, so each result comes back as structured JSON with pricing, availability, specifications, and reviews.

01M5ERCYJ7TSGP713TNMR1E8XY running
Enter fullscreen mode Exit fullscreen mode

Your job ID will differ. Batch manages the queue, retries, schedules, and webhook notifications while the pages process.

How the Other APIs Work

  • Bright Data offers 100+ pre-built scrapers for sites such as Amazon, TikTok, LinkedIn, and Google Maps, plus 5,000 free records a month. It prices per record regardless of page complexity.
  • Zyte runs a managed browser with page actions and network capture, AI parsing for products, articles, and job postings, and up to 3,000 requests per minute on standard plans. Its trial gives $5 of credit for 30 days.
  • ScraperAPI needs render=true for JavaScript pages, and its documentation says CAPTCHAs embedded in forms need a third-party solver. Rendering costs 10 credits, rendering with premium proxies 25, and rendering with ultra-premium proxies 75.
  • Oxylabs provides preconfigured endpoints, geo_location targeting, the OxyCopilot AI parser, and browser instructions for clicks and form input. Its free plan covers 2,000 results, and 100,000 rendered results cost $135.

Which API Fits Which Job

Use case Best fit Why
Dynamic pricing Zenrows Protected pages and scheduled Batch jobs
Financial data and news Zyte AI article extractor returns headlines, bodies, and dates as JSON
AI training data Zenrows mode=auto across mixed sources, with Markdown or JSON
Inventory monitoring Zenrows Batch with a proxy country per market
SEO and SERP tracking ScraperAPI Google SERP endpoint with country and domain parameters

When Another Option Makes Sense

  • Pick Bright Data if you need direct control over proxy routing by ASN, carrier, or ZIP code.
  • Pick Zyte if you already run Scrapy spiders, though Zenrows also has a Scrapy integration.
  • Build your own stack with Requests and Beautiful Soup if your targets are static and you can maintain the infrastructure.

Decision tree for choosing a managed API or a self-hosted scraper

Start Collecting Real-Time Data With Zenrows Fetch

For protected, JavaScript-heavy targets, Zenrows led every benchmark here and bills only successful requests. Each alternative has a niche, from Bright Data's proxy control to ScraperAPI's SERP endpoint.

What's Next

Top comments (0)