ScraperAPI compatible
Change the address, keep the client.
ScraperAPI's Hobby plan is $49 a month for 100,000 credits, a Google or Bing page costs 25 credits, and the balance resets each renewal. SpecStream answers the same call at one price for every page: $0.80 per 1,000.
The switch is one line: https://api.specstream.ai/scraperapi in place of https://api.scraperapi.com, and a SpecStream key as api_key. In the Python SDK it is the api_endpoint argument.
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.
ScraperAPI to SpecStream, parameter by parameter and field by field
| SpecStream | ScraperAPI | |
|---|---|---|
| Address | GET https://api.specstream.ai/scraperapi?api_key=&url= | GET https://api.scraperapi.com?api_key=&url= |
| The key | A SpecStream key as api_key, as the SDK sends it | api_key, your API key, a mandatory parameter |
| Output | The page's HTML, or its content as markdown or plain text with output_format | The page's HTML, or markdown or text with output_format |
| Status codes | The site's 404 passes through. A page that cannot be read gets 500 and is not charged | Charged for 200 and 404. A 500 is not charged |
| Errors | ScraperAPI's own: 400 with no url, 401 for a wrong key, 403 with no credit left. A busy call gets 429 with Retry-After and is not charged | 401 for an invalid key, 403 when the month's credits are exhausted, 429 for too many simultaneous requests |
| Price | $0.80 per 1,000 pages, the same for every site. $49 reads 61,250 pages | Hobby $49 a month for 100,000 credits. A standard page costs 1 credit, Amazon 5, Google and Bing 25, LinkedIn 30 |
| Credit | Credit you buy never expires | The credit balance resets when the subscription renews |
| Free to start | $10 of credit, no card, which covers 12,500 pages | A 7-day trial with 5,000 API credits, no credit card required |
The ScraperAPI reference, on SpecStream
The call, before and after
# Before
curl -G https://api.scraperapi.com \
--data-urlencode "api_key=$SCRAPERAPI_KEY" \
--data-urlencode "url=https://en.wikipedia.org/wiki/Web_scraping"
# After
curl -G https://api.specstream.ai/scraperapi \
--data-urlencode "api_key=$SPECSTREAM_API_KEY" \
--data-urlencode "url=https://en.wikipedia.org/wiki/Web_scraping"With ScraperAPI's Python SDK, scraperapi-sdk 1.6.1, the change is the constructor: client = ScraperAPIClient(SPECSTREAM_KEY, api_endpoint="https://api.specstream.ai/scraperapi"). client.get(url) then runs as before.
What the route reads, and what it refuses
Read and applied: url, api_key, and output_format with markdown or text. A page the site does not have comes back as ScraperAPI's 404.
Refused, in ScraperAPI's own status and text: no url gets 400, a wrong key gets 401, an empty balance gets 403, and a host that does not resolve gets 500 and is not charged. Every parameter was measured on production on Nov 10, 2026, and the full pass table lists each one and its result.
What comes back
A 200 reply is the page itself with its content-type: HTML by default, markdown or plain text with output_format. A refused call carries a sentence of text that says why, as ScraperAPI's does. No part of ScraperAPI's reply is left out.
One price a page, whatever the site
On ScraperAPI a Google or Bing page costs 25 credits and a LinkedIn page 30, and the balance resets each month. On SpecStream every page read costs $0.0008, which is $0.80 per 1,000, a failed page is not charged, and a busy call gets 429 with Retry-After and charges nothing. Credit you buy never expires.
Scored on the official benchmarks
The SpecStream Extract API scores 0.908 F1 on WCXB. The Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions, 978 of them correct, and 64.0 item F1 and 43.4 row F1 on all 200 WideSearch tasks. Every score and its method is on the benchmarks page.
You decide what is kept, on each key
Create the key with zero_retention and a call made with it keeps no request text and no answer after the reply. spend_cap_cents is the most the key can spend.
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}'Pages, search and rows on one key
The same key reads up to 20 pages or documents a call with the Extract API, searches the web at $5 per 1,000 searches, and runs Deep Search, which returns every match for a request in plain words as structured rows, at 5¢, 15¢ or $1 a row, with a source URL on every value. The full comparison is on the ScraperAPI alternative page.
What else ScraperAPI users price
ScrapingBee
A page API from $19 a month for 75,000 credits, where a default call with JavaScript costs 5 credits and credits don't roll over. SpecStream answers ScrapingBee's call at https://api.specstream.ai/scrapingbee/api/v1/ too, at $0.80 per 1,000 pages.
ZenRows
A page API on monthly plans from $19 for 45,000 credits, where a JavaScript-rendered request always costs 5 credits. SpecStream charges one price a page and answers ZenRows' call at https://api.specstream.ai/zenrows/v1/.
Scrapfly
A page API from $30 a month for 200,000 credits, where browser rendering adds 5 credits a request. SpecStream answers Scrapfly's /scrape call too, and its credit never expires.
Firecrawl
Scrape, search and crawl in credits: Hobby is $19 a month for 5,000 credits. SpecStream answers Firecrawl's v2 calls at https://api.specstream.ai/firecrawl, and $19 reads 23,750 pages.
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/scraperapi where your code has https://api.scraperapi.com, and send the SpecStream key as api_key. In Python:
import requests
URL = "https://api.specstream.ai/scraperapi" # was https://api.scraperapi.com
reply = requests.get(
URL,
params={"api_key": SPECSTREAM_KEY, "url": "https://en.wikipedia.org/wiki/Web_scraping", "output_format": "markdown"},
timeout=70,
)
reply.raise_for_status()
print(reply.text[:500])3. In JavaScript:
const url = new URL("https://api.specstream.ai/scraperapi");
url.search = new URLSearchParams({ api_key: process.env.SPECSTREAM_KEY, url: "https://en.wikipedia.org/wiki/Web_scraping" });
const reply = await fetch(url);
console.log(reply.status, reply.headers.get("content-type"), (await reply.text()).length);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 ScraperAPI compatible API?
https://api.specstream.ai/scraperapi with ScraperAPI's reply and status codes, as measured on production on Nov 10, 2026. A page costs $0.0008.How do I migrate from ScraperAPI?
https://api.scraperapi.com becomes https://api.specstream.ai/scraperapi, and a SpecStream key goes in api_key. url and output_format keep their meaning.How much does ScraperAPI cost?
Does the ScraperAPI Python SDK work with SpecStream?
scraperapi-sdk 1.6.1 works with api_endpoint="https://api.specstream.ai/scraperapi" and a SpecStream key, as tested on production on Nov 10, 2026. client.get() runs unchanged.Does SpecStream charge for a failed page?
500 and costs nothing, and a busy call gets 429 with Retry-After and costs nothing.Do ScraperAPI credits roll over?
Sources
SpecStream wrote this page. Each ScraperAPI figure comes from ScraperAPI's 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.
- ScraperAPI pricingscraperapi.com/pricing/, read Nov 10, 2026
- ScraperAPI quick startdocs.scraperapi.com/getting-started/quick-start/send-your-first-request.md, read Nov 10, 2026
- ScraperAPI status codesdocs.scraperapi.com/responses-and-formats/api-status-codes.md, read Nov 10, 2026
- SpecStream ScraperAPI pass tablespecstream.ai/specstream/dialects/scraperapi.md, read Nov 10, 2026
- ScrapingBee pricingscrapingbee.com/pricing/, read Nov 10, 2026
- ZenRows pricingdocs.zenrows.com/first-steps/pricing.md, read Nov 10, 2026
- Scrapfly pricingscrapfly.io/pricing, read Nov 10, 2026
- Firecrawl pricingfirecrawl.dev/pricing, read Nov 10, 2026
- Scrapfly billingscrapfly.io/docs/scrape-api/billing, read Nov 10, 2026
- ScrapingBee documentationscrapingbee.com/documentation/, read Nov 10, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026




