<!-- twin of https://specstream.ai/compare/zenrows-vs-bright-data -->
# ZenRows vs Bright Data in 2026: keep ZenRows code, pay one price

Compared on Nov 12, 2026. The page: https://specstream.ai/compare/zenrows-vs-bright-data

On Nov 12, 2026, ZenRows starts at $19 a month for 45,000 credits, and a JavaScript page takes 5 of them. Bright Data's Web Unlocker takes one credit a request, and Bright Data values 5,000 credits at about $7.50.

SpecStream is the live web data engine. ZenRows code runs on it by changing the address to `https://api.specstream.ai/zenrows/v1/`, and every page costs $0.80 per 1,000. Its Extract API scores 0.908 F1 on WCXB.

[Get an API key](https://specstream.ai/signup?src=alternatives-zenrows-vs-bright-data&utm_source=alternatives-md&utm_campaign=zenrows-vs-bright-data&returnTo=%2Fworkspace%2Fagents%3Ftab%3Dkeys) New accounts get $10 of credit, no card. It covers 12,500 pages.

## SpecStream, ZenRows and Bright Data side by side

| | SpecStream | ZenRows | Bright Data |
|---|---|---|---|
| Your code | ZenRows code runs as written at `https://api.specstream.ai/zenrows/v1/` with the key as `apikey`. Other code calls `POST /v1/extract` with up to 20 URLs | `GET https://api.zenrows.com/v1/` with your key in the `apikey` query parameter | `POST https://api.brightdata.com/request` with a Bearer key, your zone, the `url` and a `format` of `raw` or `json` |
| Price per page | $0.80 per 1,000 pages, the same for every page ($0.0008) | 1 credit for a standard page, 5 with JavaScript rendering, 10 with a premium proxy and 25 for both | Web Unlocker: one credit per successful request. Bright Data values 5,000 credits at about $7.50, which is $1.50 per 1,000 |
| What $19 buys | 23,750 pages from your balance, with no plan to buy | The $19 monthly plan: 45,000 credits, which is 9,000 JavaScript pages or 1,800 protected pages | 12,666 Web Unlocker requests at $1.50 per 1,000 |
| Credit you do not use | Never expires. Credit you buy stays on the account | Plan credits expire at every renewal. Top up credits roll over once, then expire | Free credits reset to 5,000 on the first of each month and do not roll over |
| What is not charged | A page with no text. A busy call, which gets `429` with `Retry-After` | Failed requests. A 404 or 410 counts as successful and is billed | Failed requests. Scraper API records that fail on incorrect input are billed |
| Free to start | $10 of credit, no card: 12,500 pages | Free plan: 5,000 credits a month, no card | 5,000 free credits a month, no credit card |
| A browser | A page that refuses a plain read is tried again in a real browser, at the same $0.0008 | Browser: bandwidth plus 5 credits a minute of session time | Browser API at 5 credits per MB of traffic |
| Search | `GET /v1/web-search` on the same key: from $1 per 1,000 searches of up to 10 results, 97.9 F-score on all 1,000 SimpleQA Verified questions | Search returns ranked web results in one call | SERP API at one credit per request |
| Every match as rows | [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=zenrows-vs-bright-data): a request in plain words returns every match on the live web as rows, at 5¢, 15¢ or $1 a row, with the most a run can cost quoted before it starts | JSON from the page you fetched, with Extract free on top of the Fetch credits | Scraper API: pre-built scrapers at $1.50 per 1,000 records pay as you go |
| Agents and MCP | MCP server at `https://api.specstream.ai/mcp`, REST API, Python and TypeScript SDKs and a CLI | MCP server, CLI and SDKs in its Agent Toolkit | An MCP server whose requests draw from the same 5,000 free monthly credits |

## Why ZenRows and Bright Data users move to SpecStream

### ZenRows code runs as written

Each ZenRows call keeps its path, its parameters and its parser. The address changes, and the key.

```
# ZenRows: before
curl "https://api.zenrows.com/v1/?apikey=$ZENROWS_KEY&url=https://example.com"
# ZenRows: after
curl "https://api.specstream.ai/zenrows/v1/?apikey=$SPECSTREAM_KEY&url=https://example.com"
```

`url`, `response_type`, `json_response` and `outputs` keep their meaning, and errors come back in ZenRows' codes: `404` `RESP002`, `422` `RESP001`, `400` `REQS004`, `401` `AUTH002`. Not returned: the `X-Request-Id`, `X-Request-Cost`, `Zr-Final-Url` and `Concurrency-*` headers, `xhr`, and `headings` and `images` from `outputs`. The full table is in the [ZenRows guide](https://specstream.ai/migrate/zenrows?utm_source=alternatives&utm_campaign=zenrows-vs-bright-data).

### A Bright Data call becomes one Extract API call

A Web Unlocker call sends one URL and gets the page back. The Extract API takes up to 20 URLs a call and returns each page's main text as Markdown or plain text.

```
# Bright Data Web Unlocker: before
curl https://api.brightdata.com/request \
  -H "Authorization: Bearer $BRIGHTDATA_KEY" -H "Content-Type: application/json" \
  -d '{"zone": "YOUR_ZONE", "url": "https://example.com", "format": "raw"}'

# SpecStream Extract API: after, up to 20 pages a call
curl -X POST https://api.specstream.ai/v1/extract \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"urls": ["https://example.com"], "format": "markdown"}'
```

Each item of `data.results` carries the `url`, a `status`, the page's main `text` without its menus, footers and ads, its `title`, and the `published` date when the page states one. Only a page with status `ok` is charged.

### One price for every page, from credit that does not expire

ZenRows charges 1, 5, 10 or 25 credits a page, so the same plan reads a different number of pages each month, and plan credits expire at every renewal. Bright Data's free credits reset on the first of each month. SpecStream charges $0.80 per 1,000 pages whatever the page needs: $19 reads 23,750 pages, and credit you buy never expires.

### Scores published on the official sets

The Extract API scores 0.908 F1 on WCXB. The Search API on the same key scores 97.9 F-score on all 1,000 official SimpleQA Verified questions, 978 of them correct, and 64.0 item F1 and 43.4 row F1 on all 200 official WideSearch tasks. Every score and its method is on the [benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=zenrows-vs-bright-data) page.

### Zero retention on any key

Set `zero_retention` when you create a key. A call made with that key keeps no request text and no answer after the reply.

```
curl -X POST https://api.specstream.ai/v1/account/keys \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"name": "production", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500000, "zero_retention": true}'
```

### Search, pages and rows on the same key

A scrape API reads the pages you already know. On SpecStream the same key searches the live web from $1 per 1,000 searches, reads up to 20 pages a call with the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=zenrows-vs-bright-data), and runs [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=zenrows-vs-bright-data), which returns every match for a request as rows at 5¢, 15¢ or $1 a row. Saved requests rerun hourly to yearly, each row labeled changed, unchanged or no longer matching, and new rows arrive in Slack, a sheet, a CRM or a signed webhook.

## Other ZenRows and Bright Data alternatives

### AlterLab

A scrape API billed per request in five tiers, from $0.0002 for a direct fetch to $0.02 for an extended browser session, with a $10 minimum deposit. SpecStream charges $0.80 per 1,000 pages for every page, and its credit never expires.

### Apify

A store of Actors billed by plan and usage. Starter costs $19 a month plus pay as you go, platform usage is $0.2 per compute unit, and its Unblocker costs $1.5 per 1,000 requests. SpecStream returns the records an Actor collects from a request in plain words, at 5¢ to $1 a row. See [Apify alternatives](https://specstream.ai/alternatives/apify?utm_source=alternatives&utm_campaign=zenrows-vs-bright-data).

### ScrapingBee

A page API whose Hobby plan costs $19 a month for 75,000 credits, with 1,000 free credits to start. SpecStream answers ScrapingBee's call at `https://api.specstream.ai/scrapingbee/api/v1/` at one price per page.

### Firecrawl

Scrape, crawl and search endpoints billed in credits: 1 credit a page and 2 credits per 10 search results, with Hobby at $19 a month for 5,000 credits. SpecStream answers Firecrawl's v2 calls at `https://api.specstream.ai/firecrawl`, with search at $1 per 1,000 and pages at $0.80 per 1,000.

## How to move ZenRows and Bright Data code to SpecStream

1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 12,500 pages.

2. Point ZenRows code at `https://api.specstream.ai/zenrows/v1/` and send the SpecStream key as `apikey`. In the `zenrows` Python SDK 1.13.0, set `base_url` to that address or `ZENROWS_SCRAPER_BASE_URL`.

```
import requests

reply = requests.get(
    "https://api.specstream.ai/zenrows/v1/",  # was https://api.zenrows.com/v1/
    params={"apikey": SPECSTREAM_KEY, "url": "https://en.wikipedia.org/wiki/Web_scraping", "response_type": "markdown"},
    timeout=60,
)
print(reply.text[:500])
```

3. Replace each Bright Data Web Unlocker call with `POST https://api.specstream.ai/v1/extract`, with up to 20 URLs in `urls` and the key as the Bearer token.

```
import os, requests

reply = requests.post(
    "https://api.specstream.ai/v1/extract",  # was https://api.brightdata.com/request
    headers={"Authorization": f"Bearer {os.environ['SPECSTREAM_API_KEY']}"},
    json={"urls": ["https://en.wikipedia.org/wiki/Web_scraping"], "format": "markdown"},
    timeout=60,
)
for page in reply.json()["data"]["results"]:
    print(page["status"], page["url"], (page.get("text") or "")[:300])
```

4. Read `429` as a call to send again after `Retry-After`. It is not charged. To test it on your own pages, send the same 100 URLs to your current API and to SpecStream, then compare each page's text and the `price_usd` of each call. 100 pages cost $0.08 on SpecStream.

## Frequently asked questions

### Is ZenRows better than Bright Data?

On price for JavaScript pages they are close: ZenRows' $19 plan reads 9,000 of them, and $19 of Bright Data Web Unlocker credits reads 12,666 requests. SpecStream reads 23,750 pages for $19, runs ZenRows code unchanged, and its credit never expires.

### ZenRows vs Bright Data pricing: what does each cost?

ZenRows starts at $19 a month for 45,000 credits and charges 1 to 25 credits a page. Bright Data charges one credit per Web Unlocker request, worth about $1.50 per 1,000. SpecStream charges $0.80 per 1,000 pages with no plan.

### Does ZenRows code work with SpecStream?

Yes. ZenRows calls go to `https://api.specstream.ai/zenrows/v1/` with the key as `apikey` and get ZenRows' own reply back, at $0.0008 a page. The `zenrows` Python SDK 1.13.0 works with `base_url` set to that address.

### Do ZenRows and Bright Data credits roll over?

No. ZenRows plan credits expire at every renewal, and Bright Data's free credits reset to 5,000 on the first of each month. SpecStream credit you buy never expires.

### What does SpecStream not charge for?

Two things: a page with no text, and a busy call, which gets `429` with `Retry-After`. ZenRows counts a 404 or 410 as successful and bills it.

### Is there a free trial?

SpecStream gives $10 of credit, no card, which reads 12,500 pages. ZenRows has a free plan of 5,000 credits a month, and Bright Data gives 5,000 free credits a month.

## Sources

SpecStream wrote this page. Each rival figure comes from that company's own page.

- [ZenRows pricing](https://www.zenrows.com/pricing.md), read Nov 12, 2026
- [ZenRows pricing documentation](https://docs.zenrows.com/first-steps/pricing.md), read Nov 12, 2026
- [ZenRows authentication](https://docs.zenrows.com/authentication.md), read Nov 12, 2026
- [Bright Data free tier](https://docs.brightdata.com/general/account/billing-and-pricing/free-tier.md), read Nov 12, 2026
- [Bright Data Web Unlocker API overview](https://docs.brightdata.com/products/web-unlocker/introduction.md), read Nov 12, 2026
- [Bright Data billing](https://docs.brightdata.com/general/account/billing-and-pricing.md), read Nov 12, 2026
- [Bright Data Scraper API FAQs](https://docs.brightdata.com/products/scrapers/scrapers-library/faqs.md), read Nov 12, 2026
- [AlterLab pricing](https://alterlab.io/pricing), read Nov 12, 2026
- [Apify pricing](https://apify.com/pricing), read Nov 12, 2026
- [ScrapingBee pricing](https://www.scrapingbee.com/pricing/), read Nov 12, 2026
- [Firecrawl pricing](https://www.firecrawl.dev/pricing), read Nov 12, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 12, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 12, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 12, 2026
