Skip to the page

ZenRows compatible

Change the address, keep the client.

ZenRows plans start at $19 a month for 45,000 credits, a JavaScript-rendered request always costs 5 credits, and plan credits expire at every renewal. SpecStream answers the same GET /v1/ call at one price: $0.80 per 1,000 pages.

The switch is one line: https://api.specstream.ai/zenrows/v1/ in place of https://api.zenrows.com/v1/, and a SpecStream key as apikey. In the Python SDK it is base_url or ZENROWS_SCRAPER_BASE_URL.

The SpecStream Extract API scores 0.908 F1 on WCXB. A failed page costs nothing, credit you buy never expires, and a new account gets $10 of credit, no card.

New accounts get $10 of credit, no card. It covers 12,500 pages.

ZenRows to SpecStream, parameter by parameter and field by field

SpecStreamZenRows
AddressGET https://api.specstream.ai/zenrows/v1/?apikey=&url=GET https://api.zenrows.com/v1/?apikey=&url=
The keyA SpecStream key as apikey, as the SDK sends itThe apikey query parameter
OutputThe page's HTML, markdown or plain text with response_type, JSON with json_response, and links and emails with outputsThe page's HTML by default, changed by response_type, json_response and other options
ErrorsZenRows' own codes: 404 RESP002 for a missing page, 422 RESP001 for a host that does not resolve, 400 REQS004 with no url, 401 AUTH002 for a wrong key. A busy call gets 429 with Retry-After and is not charged402 AUTH004 when the key has spent its credit allowance, 429 AUTH006 when the concurrency limit is reached
Failed requestsNot charged, and a page with no main text is not chargedNever charged. 404 and 410 count as successful results
Price$0.80 per 1,000 pages, the same for every page. $19 reads 23,750 pagesBuild B1 $19 a month for 45,000 credits. JavaScript rendering costs 5 credits, a protected request 25
CreditCredit you buy never expiresUnused plan credits expire at every renewal
Free to start$10 of credit, no card, which covers 12,500 pagesFree plan: 5,000 credits a month

The ZenRows reference, on SpecStream

What else ZenRows users price

How SpecStream scores

The same numbers as the benchmarks page, from the official tasks and scorers.

How to migrate, step by step

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. Set the address to https://api.specstream.ai/zenrows/v1/ where your code has https://api.zenrows.com/v1/, and send the SpecStream key as apikey. In Python:

import requests

URL = "https://api.specstream.ai/zenrows/v1/"  # was https://api.zenrows.com/v1/

reply = requests.get(
    URL,
    params={"apikey": SPECSTREAM_KEY, "url": "https://en.wikipedia.org/wiki/Web_scraping", "response_type": "markdown"},
    timeout=60,
)
reply.raise_for_status()
print(reply.text[:500])

3. In JavaScript:

const url = new URL("https://api.specstream.ai/zenrows/v1/");
url.search = new URLSearchParams({ apikey: process.env.SPECSTREAM_KEY, url: "https://en.wikipedia.org/wiki/Web_scraping", outputs: "links,emails" });
const data = await (await fetch(url)).json();
console.log(data.links.length, data.emails);

4. Read 429 as a call to send again after Retry-After. It is not charged.

Frequently asked questions

Something we didn't answer? Talk to a human

Is there a ZenRows compatible API?
Yes. SpecStream answers ZenRows' GET /v1/ at https://api.specstream.ai/zenrows/v1/ with ZenRows' reply and error codes, as measured on production on Nov 10, 2026. A page costs $0.0008.
How do I migrate from ZenRows?
Change one address: https://api.zenrows.com/v1/ becomes https://api.specstream.ai/zenrows/v1/, and a SpecStream key goes in apikey. url, response_type, json_response and outputs keep their meaning.
How much does ZenRows cost?
Plans start at $19 a month for 45,000 credits, with a free plan of 5,000 credits a month. A JavaScript-rendered request costs 5 credits and a protected one 25. SpecStream costs $0.80 per 1,000 pages with no plan.
Does the ZenRows Python SDK work with SpecStream?
Yes. zenrows 1.13.0 works with base_url="https://api.specstream.ai/zenrows/v1/" or with ZENROWS_SCRAPER_BASE_URL set to that address, as tested on production on Nov 10, 2026.
Do ZenRows credits roll over?
No. ZenRows says unused plan credits expire at every renewal. SpecStream credit you buy never expires.
Which ZenRows fields does SpecStream not return?
The X-Request-Id, X-Request-Cost, Zr-Final-Url and Concurrency-* headers, xhr in the JSON form, and headings and images from outputs. The page, html, links and emails come back.

Sources

SpecStream wrote this page. Each ZenRows figure comes from ZenRows' own pages, and each other provider's figure from that company's own page. The route's behavior comes from its code and the pass table measured on production.

  1. ZenRows pricingdocs.zenrows.com/first-steps/pricing.md, read Nov 10, 2026
  2. ZenRows authenticationdocs.zenrows.com/authentication.md, read Nov 10, 2026
  3. ZenRows error codesdocs.zenrows.com/api-error-codes.md, read Nov 10, 2026
  4. SpecStream ZenRows pass tablespecstream.ai/specstream/dialects/zenrows.md, read Nov 10, 2026
  5. ScrapingBee pricingscrapingbee.com/pricing/, read Nov 10, 2026
  6. ScraperAPI pricingscraperapi.com/pricing/, read Nov 10, 2026
  7. Scrapfly pricingscrapfly.io/pricing, read Nov 10, 2026
  8. Firecrawl pricingfirecrawl.dev/pricing, read Nov 10, 2026
  9. Scrapfly billingscrapfly.io/docs/scrape-api/billing, read Nov 10, 2026
  10. ScrapingBee documentationscrapingbee.com/documentation/, read Nov 10, 2026
  11. SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
  12. SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026