<!-- twin of https://specstream.ai/compare/scraperapi-vs-scrape-do-vs-scrapeops -->
# ScraperAPI vs Scrape.do vs ScrapeOps in 2026: price per 1,000 pages

Compared on Nov 12, 2026. The page: https://specstream.ai/compare/scraperapi-vs-scrape-do-vs-scrapeops

ScraperAPI starts at $49 a month for 100,000 credits, Scrape.do at $29 for 250,000 and ScrapeOps at $9 for 25,000. On all three a JavaScript page takes 5 or 10 credits, and a residential one 10 or more.

SpecStream answers the ScraperAPI and Scrape.do calls at their own addresses on one key, and reads any page at $0.80 per 1,000 from credit that never expires. A ScrapeOps call moves to the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=scraperapi-vs-scrape-do-vs-scrapeops).

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

## SpecStream, ScraperAPI, Scrape.do and ScrapeOps side by side

| | SpecStream | ScraperAPI | Scrape.do | ScrapeOps |
|---|---|---|---|---|
| The call your code sends | ScraperAPI's call at `https://api.specstream.ai/scraperapi` and Scrape.do's at `https://api.specstream.ai/scrapedo`, on one key. A ScrapeOps call moves to `POST /v1/extract` | `GET https://api.scraperapi.com?api_key=&url=` | `GET https://api.scrape.do/?token=&url=` | `GET https://proxy.scrapeops.io/v1/?api_key=&url=` |
| Entry plan | No plan. $10 reads 12,500 pages and $29 reads 36,250 | Hobby, $49 a month for 100,000 credits | Hobby, $29 a month for 250,000 credits | $9 a month for 25,000 credits, $19 for 100,000 |
| Plain page, per 1,000 | $0.80 | 1 credit: $0.49 on Hobby | 1 credit: $0.12 on Hobby | 1 credit: $0.19 on the $19 plan |
| JavaScript page, per 1,000 | $0.80. A page that refuses a plain read is tried again in a real browser at the same price | `render=true` is 10 credits: $4.90 on Hobby | `render=true` is 5 credits: $0.58 on Hobby | `render_js=true` is 10 credits: $1.90 on the $19 plan |
| Residential proxy and a browser, per 1,000 | $0.80. The price does not change with what a page takes to load | `premium=true` with `render=true` is 25 credits: $12.25 on Hobby | `super=true` with `render=true` is 25 credits: $2.90 on Hobby | `residential=true&render_js=true` is 25 credits: $4.75 on the $19 plan |
| A Google page | The Search API answers a question from the live web at $5 per 1,000 searches of up to 10 results, or $1 with `speed=fast` | 25 credits: $12.25 per 1,000 on Hobby | 10 credits, with residential proxies on by default: $1.16 per 1,000 on Hobby | 10 credits, 25 with `render_js=true`: $1.90 per 1,000 on the $19 plan |
| Monthly credit | No plan. Credit you buy never expires | The credit balance resets when the subscription renews | At the monthly limit, requests stop until you upgrade or buy more credits | Unused credits do not carry to the next period |
| Charged replies | A page with no text and a busy call's `429` are not charged, and the Extract API does not charge a site's `404` | `200` and `404` are charged | `2XX`, `400`, `404` and `410` count as successful and are charged | `200` and `404` consume credits |
| Requests at once | Up to 20 pages a call on the Extract API. A call past the account's calls for the minute answers `429` with `Retry-After` and charges nothing | 20 concurrent threads on Hobby, 50 on Startup | 10 concurrent requests on Hobby, 50 on Pro | 1 concurrent thread on the $9 and $19 plans, 5 on the $29 plan |
| Free to start | $10 of credit, no card, which covers 12,500 pages | A 7-day trial with 5,000 credits, no card, then 1,000 credits a month | 1,000 credits a month, with 5 concurrent requests | 1,000 free credits, no card. A prepaid block of 10,000 credits costs $5 |
| Structured data | Deep Search: a request in plain words returns every match on the live web as rows that meet each condition you wrote, at 5¢, 15¢ or $1 a row. The most a run can cost is quoted before it starts | Autoparse returns JSON or CSV for Amazon, eBay, Google, Redfin and Walmart | Amazon pages go through its Amazon Scraper API and return structured JSON, at 1 credit | `llm_extract=true` adds 25 credits a page |

## Why teams comparing ScraperAPI, Scrape.do and ScrapeOps use SpecStream

### What 100,000 JavaScript pages cost in a month

Plans sell credits, and a rendered page takes several. 100,000 rendered pages need 1,000,000 ScraperAPI credits, the Startup plan at $149. On Scrape.do they need 500,000 credits, past Hobby's 250,000, so the Pro plan at $99. On ScrapeOps they need 1,000,000 credits, the $99 plan of 1,250,000. On SpecStream they cost $80, and a page that gives no text costs nothing.

For plain pages that load without a browser, each of the three is cheaper per page on paper: $0.12 to $0.49 per 1,000 when every credit is used in the month. SpecStream's $0.80 holds for every page, on any site, from a balance that stays until you spend it.

### Keep the ScraperAPI and Scrape.do calls

Each call changes its address and keeps its parameters and its parser. Both carry the same SpecStream key, where theirs went.

```
# ScraperAPI: was https://api.scraperapi.com
curl -G https://api.specstream.ai/scraperapi \
  --data-urlencode "api_key=$SPECSTREAM_KEY" \
  --data-urlencode "url=https://en.wikipedia.org/wiki/Web_scraping" \
  --data-urlencode "output_format=markdown"

# Scrape.do: was https://api.scrape.do
curl -G https://api.specstream.ai/scrapedo \
  --data-urlencode "token=$SPECSTREAM_KEY" \
  --data-urlencode "url=https://en.wikipedia.org/wiki/Web_scraping" \
  --data-urlencode "output=markdown"
```

The parameter tables are in the [ScraperAPI migration guide](https://specstream.ai/migrate/scraperapi?utm_source=alternatives&utm_campaign=scraperapi-vs-scrape-do-vs-scrapeops) and the [Scrape.do migration guide](https://specstream.ai/migrate/scrape-do?utm_source=alternatives&utm_campaign=scraperapi-vs-scrape-do-vs-scrapeops).

### A ScrapeOps call on the Extract API

ScrapeOps sends each request on to one of 20+ scraping APIs and bills its own credits for it. SpecStream reads the page itself. The call becomes a `POST` with up to 20 URLs, and each result carries `url`, `status` and the page's main `text`.

```
# ScrapeOps: was GET https://proxy.scrapeops.io/v1/?api_key=&url=
curl https://api.specstream.ai/v1/extract \
  -H "Authorization: Bearer $SPECSTREAM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://en.wikipedia.org/wiki/Web_scraping"], "format": "markdown"}'
```

### Check the price on your own pages

ScraperAPI returns the credits a call took in its `sa-credit-cost` header, and Scrape.do in its `Scrape.do-Request-Cost` header. On SpecStream every charged reply carries `X-Balance-Cents`, an Extract API reply carries `price_usd`, and `GET https://api.specstream.ai/v1/account/requests` lists each call with its price. Send the same 100 URLs through each and compare the totals.

### Scores published on official benchmarks

The SpecStream Extract API scores 0.908 F1 on WCXB. The Search API scores a 97.9 F-score on all 1,000 official SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks. The scores and the method are at [specstream.ai/benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=scraperapi-vs-scrape-do-vs-scrapeops).

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

A scraper reads the pages you already know. The same key finds them: the [Search API](https://specstream.ai/search-api?utm_source=alternatives&utm_campaign=scraperapi-vs-scrape-do-vs-scrapeops) at $5 per 1,000 searches, `POST /v1/map` for a site's links and `POST /v1/crawl` for a whole site, each page with text at the page price. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=scraperapi-vs-scrape-do-vs-scrapeops) returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row, and a saved request reruns hourly to yearly with each row labeled changed, unchanged or no longer matching.

## Other scraping APIs

### Firecrawl

Scrape, crawl and search by monthly credits: Hobby is $19 a month for 5,000 credits, and a 403 or 404 page costs 1 credit. SpecStream answers Firecrawl v2 scrape, map and crawl at `https://api.specstream.ai/firecrawl`, at $0.0008 a page.

### ScrapingBee

Hobby is $19 a month for 75,000 credits, and each request with JavaScript rendering costs 5. SpecStream answers ScrapingBee's call at `https://api.specstream.ai/scrapingbee/api/v1/`, at one price for every page.

### Scrapfly

Discovery is $30 a month for 200,000 credits, and `render_js` adds 5 credits a call. SpecStream answers Scrapfly's call at `https://api.specstream.ai/scrapfly/scrape`, at $0.80 per 1,000 pages.

## How to move your calls 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 each call at SpecStream. The key goes as `api_key` on the ScraperAPI path, as `token` on the Scrape.do path, and as the Bearer token on the Extract API. In Python:

```
import requests

PAGE = "https://en.wikipedia.org/wiki/Web_scraping"

# ScraperAPI's call, was https://api.scraperapi.com
scraper = requests.get(
    "https://api.specstream.ai/scraperapi",
    params={"api_key": SPECSTREAM_KEY, "url": PAGE, "output_format": "markdown"},
    timeout=70,
)
print(scraper.status_code, scraper.text[:200])

# Scrape.do's call, was https://api.scrape.do/
scrapedo = requests.get(
    "https://api.specstream.ai/scrapedo",
    params={"token": SPECSTREAM_KEY, "url": PAGE, "output": "markdown"},
    timeout=60,
)
print(scrapedo.status_code, scrapedo.text[:200])

# ScrapeOps' call, was https://proxy.scrapeops.io/v1/
read = requests.post(
    "https://api.specstream.ai/v1/extract",
    headers={"Authorization": f"Bearer {SPECSTREAM_KEY}"},
    json={"urls": [PAGE], "format": "markdown"},
    timeout=60,
).json()
for result in read["data"]["results"]:
    print(result["url"], result["status"], (result.get("text") or "")[:200])
```

3. Leave the rest. Each page is billed at $0.0008, and a page that gives no text is not charged. On a `429`, wait the seconds in `Retry-After` and send the call again; nothing was charged.

When you scrape pages to build a list, write the list you want in plain words. SpecStream reads it back as the conditions every row must meet and the facts to bring back, quotes the most it can cost, and delivers the rows after you approve.

## Frequently asked questions

### Which is cheapest: ScraperAPI, Scrape.do or ScrapeOps?

By entry plan, ScrapeOps at $9 a month for 25,000 credits, then Scrape.do at $29 for 250,000 and ScraperAPI at $49 for 100,000. For 100,000 JavaScript pages in a month the plans come to $99, $99 and $149, and SpecStream to $80 with no plan.

### What does a JavaScript page cost on each?

10 credits on ScraperAPI, 5 on Scrape.do and 10 on ScrapeOps: $4.90, $0.58 and $1.90 per 1,000 pages on ScraperAPI's Hobby, Scrape.do's Hobby and ScrapeOps' $19 plan. SpecStream charges $0.80 per 1,000 for every page.

### Is ScrapeOps a scraping API?

ScrapeOps sends each request on to one of 20+ scraping APIs and bills its own credits for it, from $9 a month. SpecStream reads the page itself with its Extract API, which scores 0.908 F1 on WCXB.

### Do unused credits roll over?

No: ScraperAPI's balance resets when the subscription renews, and ScrapeOps credits do not carry to the next period. SpecStream credit you buy never expires.

### Which ones charge for a 404?

All three: ScraperAPI and ScrapeOps charge `200` and `404`, and Scrape.do counts `400`, `404` and `410` as successful. On SpecStream a page with no text and a busy call are not charged, and the Extract API does not charge a site's `404`.

### Can I keep my code?

Yes for ScraperAPI and Scrape.do: change the address to `https://api.specstream.ai/scraperapi` or `https://api.specstream.ai/scrapedo` and send the SpecStream key where theirs went. A ScrapeOps call moves to `POST https://api.specstream.ai/v1/extract`, up to 20 pages a call.

## Sources

SpecStream wrote this page. Each figure for ScraperAPI, Scrape.do, ScrapeOps and the other APIs comes from that company's own page.

- [ScraperAPI pricing](https://scraperapi.com/pricing.md), read Nov 12, 2026
- [ScraperAPI credits and request costs](https://docs.scraperapi.com/getting-started/quick-start/credits-and-requests-costs.md), read Nov 12, 2026
- [ScraperAPI first request](https://docs.scraperapi.com/getting-started/quick-start/send-your-first-request.md), read Nov 12, 2026
- [ScraperAPI Autoparse](https://docs.scraperapi.com/data-pipeline/creating-a-datapipeline-project/results-and-output-formats.md), read Nov 12, 2026
- [Scrape.do pricing](https://scrape.do/pricing/), read Nov 12, 2026
- [Scrape.do request costs](https://scrape.do/documentation/request-costs/), read Nov 12, 2026
- [Scrape.do documentation](https://scrape.do/documentation/), read Nov 12, 2026
- [ScrapeOps Proxy API Aggregator and pricing](https://scrapeops.io/proxy-api-aggregator/), read Nov 12, 2026
- [ScrapeOps request costs](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/account/request-costs/), read Nov 12, 2026
- [ScrapeOps quick start](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/quickstart/), read Nov 12, 2026
- [Firecrawl pricing](https://www.firecrawl.dev/pricing.md), read Nov 12, 2026
- [ScrapingBee pricing](https://www.scrapingbee.com/pricing/), read Nov 12, 2026
- [Scrapfly pricing](https://scrapfly.io/pricing), read Nov 12, 2026
- [Scrapfly billing](https://scrapfly.io/docs/scrape-api/billing), 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
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 12, 2026
