<!-- twin of https://specstream.ai/migrate/scrapingant -->
# ScrapingAnt compatible: change the address, keep the client

Compared on Nov 10, 2026. The page: https://specstream.ai/migrate/scrapingant

ScrapingAnt sells monthly credits: Enthusiast is $19 for 100,000, and a page with its default browser takes 10. SpecStream answers the same `/v2/general`, `/v2/extended` and `/v2/markdown` calls at $0.80 per 1,000 pages.

The switch is one line: `https://api.specstream.ai/scrapingant/v2` in place of `https://api.scrapingant.com/v2`, and a SpecStream key in `x-api-key`. The client and your parser stay.

The Extract API behind each call scores 0.908 F1 on WCXB. A new account gets $10 of credit, no card, which covers 12,500 pages.

[Get an API key](https://specstream.ai/signup?src=alternatives-migrate-scrapingant&utm_source=alternatives-md&utm_campaign=migrate-scrapingant&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dscrapingant) New accounts get $10 of credit, no card. It covers 12,500 pages.

## ScrapingAnt to SpecStream, parameter by parameter and field by field

| | SpecStream | ScrapingAnt |
|---|---|---|
| Address | `GET https://api.specstream.ai/scrapingant/v2/general`, `/v2/extended` and `/v2/markdown` | `GET https://api.scrapingant.com/v2/general` |
| The key | A SpecStream key in the `x-api-key` header or parameter | A ScrapingAnt key as `x-api-key` |
| Output | The page's HTML on `/general`, `html`, `text` and `status_code` on `/extended`, `url` and `markdown` on `/markdown` | The page's HTML on `/v2/general` |
| Errors | ScrapingAnt's `{"detail"}`: `403` for a wrong key, `422` with no key, `404` for a site that cannot be reached. A busy call gets `409` with `Retry-After` and is not charged | `403` for a wrong token, `409` past the free plan's one active request |
| Price | $0.0008 a page, $0.80 per 1,000, with no plan. A failed page costs nothing | Enthusiast $19 a month for 100,000 credits, Startup $49 for 500,000. A page with the default browser takes 10 credits |
| Free to start | $10 of credit, no card, which covers 12,500 pages | 10,000 free credits every month |

## The ScrapingAnt reference, on SpecStream

### The call, before and after

```
# Before
curl -G https://api.scrapingant.com/v2/general \
  -H "x-api-key: $SCRAPINGANT_API_KEY" \
  --data-urlencode "url=https://en.wikipedia.org/wiki/Web_scraping"

# After
curl -G https://api.specstream.ai/scrapingant/v2/general \
  -H "x-api-key: $SPECSTREAM_API_KEY" \
  --data-urlencode "url=https://en.wikipedia.org/wiki/Web_scraping"
```

With ScrapingAnt's Python client, `scrapingant-client` 2.1.0, the change is one line before you build the client: `scrapingant_client.client.SCRAPINGANT_API_BASE_URL = "https://api.specstream.ai/scrapingant/v2"`. Then `ScrapingAntClient(token=SPECSTREAM_KEY)`, `general_request()` and `markdown_request()` run as before.

### What the route reads, and what it refuses

Read and applied: `url` on `/v2/general`, `/v2/extended` and `/v2/markdown`, and the key in the `x-api-key` header the client sends or as the `x-api-key` parameter of the documented curl. A page the site does not have comes back with its own `404` in `status_code`.

Refused, in ScrapingAnt's `{"detail"}` form: a site that cannot be reached gets `404`, a wrong key `403` and a missing key `422`, as the client expects them. An account with no credit left gets `403`, as on ScrapingAnt. Every parameter was measured on production on Nov 10, 2026, and the full [pass table](https://specstream.ai/specstream/dialects/scrapingant.md) lists each one and its result.

### What comes back

`/v2/general` returns the page's HTML. `/v2/extended`, which the Python client's `general_request()` reads, returns `html`, `text` and `status_code`, the page's own status, with `cookies` as an empty string. `/v2/markdown` returns `url` and `markdown`.

`/v2/extended` has no `headers`, `xhrs` or `iframes`, and the `Ant-page-status-code` and `Ant-credits-cost` response headers are not sent.

### One price a page, no credits to count

On ScrapingAnt a page with the default browser takes 10 credits and a simple request 1. On SpecStream every page costs $0.0008, a failed page costs nothing, there is no plan to renew, and credit you buy never expires. A busy call gets `409`, ScrapingAnt's status for too many requests at once, with `Retry-After`, and charges nothing.

### Measured on the official benchmarks

The Extract API that reads each page scores 0.908 F1 on WCXB. Each call is one Extract API read of the page.

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

### You decide what is kept, on each key

Create the key with `zero_retention` and the pages it reads are not kept: the Extract API keeps the pages it returned for 7 days in the request log, and keeps none for a zero-retention key. `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}'
```

### Search, pages and rows on one key

The same key calls `GET /v1/web-search`, which returns up to 100 results for one search, at $5 per 1,000 searches of up to 10 results. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=migrate-scrapingant) 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 most a run can cost is approved before it starts.

## What else ScrapingAnt users price

### Scrape.do

A scraping API sold by monthly credits: Hobby is $29 for 250,000, and a rendered page takes 5 credits. SpecStream answers Scrape.do's own `?token=&url=` call at `/scrapedo`, at $0.0008 a page with no plan.

### ScrapingBee

A scraping API sold by monthly credits: Hobby is $19 for 75,000, and a request with JavaScript rendering costs 5 credits. SpecStream charges $0.0008 a page, and its credit never expires.

### ScraperAPI

A scraping API on monthly plans: Hobby is $49 a month for 100,000 credits, and a standard page costs 1 credit. SpecStream charges $0.80 per 1,000 pages from a balance, and a failed page costs nothing.

## 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/scrapingant/v2` where your code has `https://api.scrapingant.com/v2`, and send the SpecStream key in `x-api-key`. In Python:

```
import requests

URL = "https://api.specstream.ai/scrapingant/v2/markdown"  # was https://api.scrapingant.com/v2/markdown

reply = requests.get(URL, {"url": "https://en.wikipedia.org/wiki/Web_scraping"}, headers={"x-api-key": SPECSTREAM_KEY}, timeout=60)
reply.raise_for_status()
print(reply.json()["markdown"][:500])
```

3. In JavaScript:

```
const url = new URL("https://api.specstream.ai/scrapingant/v2/extended");
url.search = new URLSearchParams({ url: "https://en.wikipedia.org/wiki/Web_scraping" });
const page = await (await fetch(url, { headers: { "x-api-key": process.env.SPECSTREAM_KEY } })).json();
console.log(page.status_code, page.text.slice(0, 200));
```

4. Read `409` as a call to send again after `Retry-After`. It is not charged, and neither is a page that fails.

## Frequently asked questions

### Is there a ScrapingAnt compatible API?

Yes. SpecStream answers ScrapingAnt's `/v2/general`, `/v2/extended` and `/v2/markdown` at `https://api.specstream.ai/scrapingant/v2` in ScrapingAnt's form, as measured on production on Nov 10, 2026. A page costs $0.0008.

### How do I migrate from ScrapingAnt?

Change one address: `https://api.scrapingant.com/v2` becomes `https://api.specstream.ai/scrapingant/v2`, and a SpecStream key goes in `x-api-key`. `url` and the three endpoints keep their meaning.

### How much does ScrapingAnt cost?

Enthusiast is $19 a month for 100,000 credits and Startup $49 for 500,000, and a page with the default browser takes 10 credits. Every plan includes 10,000 free credits a month. SpecStream costs $0.80 per 1,000 pages with no plan.

### Does the ScrapingAnt Python client work with SpecStream?

Yes. `scrapingant-client` 2.1.0 works once `scrapingant_client.client.SCRAPINGANT_API_BASE_URL` is `https://api.specstream.ai/scrapingant/v2`, as tested on production on Nov 10, 2026. `general_request()` and `markdown_request()` run unchanged.

### Is a failed page charged?

No. A page that cannot be read costs nothing, and a site that cannot be reached answers `404`, as on ScrapingAnt. A read page costs $0.0008.

### What does SpecStream not return from ScrapingAnt's API?

The `headers`, `xhrs` and `iframes` of `/v2/extended`, its cookies, and the `Ant-page-status-code` and `Ant-credits-cost` headers. The page comes back as HTML, text or markdown with its `status_code`.

## Sources

SpecStream wrote this page. Each ScrapingAnt figure comes from ScrapingAnt'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.

- [ScrapingAnt pricing](https://scrapingant.com/price-scraping-api), read Nov 10, 2026
- [ScrapingAnt credits cost](https://docs.scrapingant.com/credits-cost), read Nov 10, 2026
- [ScrapingAnt errors](https://docs.scrapingant.com/errors), read Nov 10, 2026
- [ScrapingAnt API basics](https://docs.scrapingant.com/api-basics), read Nov 10, 2026
- [ScrapingAnt headless browser](https://docs.scrapingant.com/headless-browser), read Nov 10, 2026
- [SpecStream ScrapingAnt pass table](https://specstream.ai/specstream/dialects/scrapingant.md), read Nov 10, 2026
- [Scrape.do pricing](https://scrape.do/pricing/), read Nov 10, 2026
- [ScrapingBee pricing](https://www.scrapingbee.com/pricing/), read Nov 10, 2026
- [ScraperAPI pricing](https://scraperapi.com/pricing.md), read Nov 10, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 10, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 10, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 10, 2026
