<!-- twin of https://specstream.ai/compare/alterlab-vs-oxylabs -->
# AlterLab vs Oxylabs in 2026: both prices, and one price per page

Compared on Nov 12, 2026. The page: https://specstream.ai/compare/alterlab-vs-oxylabs

AlterLab bills $0.0002 to $0.02 a page by the tier that returned it, from a balance with a $10 minimum deposit. Oxylabs sells one subscription from $15 a month and bills a custom domain at $1.00 per 1,000 results, $1.50 with JavaScript.

SpecStream is the live web data engine. Its Extract API reads any page for $0.80 per 1,000, scores 0.908 F1 on WCXB, and charges nothing for a page that is blocked, missing or empty. Search and rows run on the same key.

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

## SpecStream, AlterLab and Oxylabs on Nov 12, 2026

| | SpecStream | AlterLab | Oxylabs |
|---|---|---|---|
| How you pay | A balance, with no plan. Credit you buy never expires | A balance with a $10 minimum deposit and no subscription. The balance never expires | One subscription for every product: Starter $15 a month, Basic $100, Flexible $500, Enterprise from $2,500. At the plan's limit you top up in the dashboard |
| A plain page, per 1,000 | $0.80 | $0.20 on a direct fetch, $0.30 on the full HTTP client, $2 with managed sessions | $1.00 for a custom domain without JavaScript, on the entry tiers |
| A page in a browser, per 1,000 | $0.80. A real browser is one of the steps a refused page goes through, at the same price | $4 on full browser rendering, or $0.50 when the browser reads the page straight from AlterLab's servers. $20 on extended browser sessions | $1.50 for a custom domain with JavaScript, on the entry tiers |
| What is not charged | A blocked page, a 404, a page with no text, and a busy call that gets `429` with `Retry-After` | Failed requests. A cache hit bills at half the tier price | Its own system errors, with 5xx and 6xx codes. A 2xx or 4xx reply counts as successful and is billed |
| Free to start | $10 of credit, no card: 12,500 pages | Up to 5,000 free requests on a new account | $5 toward any product |
| Search | `GET /v1/web-search` on the same key: $1 per 1,000 on the fast tier, $5 per 1,000 by default, 97.9 F-score on all 1,000 SimpleQA Verified questions | $0.001 a query, $0.004 on Google or Bing | `/search` at $1 per 1,000 searches |
| Structured data | [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=alterlab-vs-oxylabs): 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 | Your JSON schema filled from a page, at $0.001 on top of the tier price | AI parsing at $3.00 per 1,000 parsed pages |
| Many URLs at once | Up to 20 URLs a call on `POST /v1/extract` | Up to 100 URLs a batch call | Batch queries, included in the API plans without additional fees |
| Your code on SpecStream | `POST /v1/extract`, or `read_pages` over MCP at `https://api.specstream.ai/mcp` | The `url` you post to `/api/v1/scrape` goes to `POST /v1/extract` as `urls` | The `url` of a `universal` job goes to `POST /v1/extract` as `urls` |

## Why AlterLab and Oxylabs users read pages with SpecStream

### Each price from its own vendor

AlterLab's comparison page puts Oxylabs at $3.00 or more per 1,000 basic HTML pages. Oxylabs' own pricing page lists a custom domain at $1.00 per 1,000 results without JavaScript and $1.50 with it, on its entry tiers. Every number on this page was copied from the vendor's own page on Nov 12, 2026, and each one is listed under Sources.

### One price, whatever the page needs

AlterLab starts each request at its lightest tier and bills the tier that returned the page, so 1,000 URLs cost $0.20 when a direct fetch reads them all and $20 when each needs an extended browser session. Oxylabs prices by target: Google with JavaScript at $1.35 per 1,000 results, Amazon at $0.50, a custom domain at $1.00 or $1.50 with JavaScript. A 404 counts as a result and is billed.

SpecStream charges $0.0008 for every page that gives text, whatever it took to read it. You know what 1,000 URLs cost before you send them: $0.80.

### Blocked pages are tried again, and never billed

The Extract API tries a page that refuses a plain read again as a browser would ask, then in a real browser, then from the site's own feed, then from its newest public archive capture. Each result says where it was read: `read_from` is `live`, `site` or `archive`, with `captured_at` for an archive copy.

A site that still refuses, or answers with a bot check, comes back as `blocked` and is not charged. A bot check's page is never returned as text, so a challenge page never lands in your data as content. A 404 and a page with no text are not charged either.

### Test all three on your own URLs

A ranking tests the sites its author chose. This script reads the URLs in `urls.txt` through all three APIs, one after the other, and prints how many pages each returned and what each run cost. AlterLab reports its cost in `billing.total_credits`, SpecStream in `price_usd`, and for Oxylabs the script counts the replies its pricing page bills.

```
import os

import requests

urls = [line.strip() for line in open("urls.txt") if line.strip()]

# SpecStream: up to 20 URLs a call, and the price of each call in price_usd
spec = {"pages": 0, "cost": 0.0}
for start in range(0, len(urls), 20):
    data = requests.post(
        "https://api.specstream.ai/v1/extract",
        headers={"Authorization": f"Bearer {os.environ['SPECSTREAM_API_KEY']}"},
        json={"urls": urls[start:start + 20], "format": "markdown"},
        timeout=120,
    ).json()["data"]
    spec["pages"] += sum(page["status"] == "ok" for page in data["results"])
    spec["cost"] += data.get("price_usd", 0)

# AlterLab: one URL a call; billing.total_credits counts $0.0002 as 200
alter = {"pages": 0, "cost": 0.0}
for url in urls:
    reply = requests.post(
        "https://api.alterlab.io/api/v1/scrape",
        headers={"X-API-Key": os.environ["ALTERLAB_API_KEY"]},
        json={"url": url},
        timeout=120,
    ).json()
    alter["pages"] += bool(reply.get("success"))
    alter["cost"] += reply.get("billing", {}).get("total_credits", 0) / 1_000_000

# Oxylabs: one universal job a call; a 2xx or 4xx reply is billed
oxy = {"pages": 0, "billed": 0}
for url in urls:
    result = requests.post(
        "https://realtime.oxylabs.io/v1/queries",
        auth=(os.environ["OXYLABS_USERNAME"], os.environ["OXYLABS_PASSWORD"]),
        json={"source": "universal", "url": url},
        timeout=180,
    ).json()["results"][0]
    oxy["pages"] += 200 <= result["status_code"] < 300
    oxy["billed"] += result["status_code"] < 500

print("SpecStream", spec)
print("AlterLab", alter)
print("Oxylabs", oxy, "at $1.00 per 1,000 results without JavaScript:", oxy["billed"] / 1000)
```

On SpecStream a URL that comes back `blocked`, `empty` or `not_found` is not in the cost line. Send the same list twice and compare the counts, not only the prices.

### Search and rows on the same key

The same key runs the [Search API](https://specstream.ai/search-api?utm_source=alternatives&utm_campaign=alterlab-vs-oxylabs), the most accurate web search API in the world: 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks ([benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=alterlab-vs-oxylabs)). When you need records, not pages, [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=alterlab-vs-oxylabs) returns structured rows that meet every condition you wrote, at 5¢, 15¢ or $1 a delivered row.

## Other AlterLab and Oxylabs alternatives

### Scrapfly

A scrape API sold by monthly plan: Discovery is $30 a month for 200,000 credits. A datacenter page takes 1 credit, a residential proxy 25, and a browser adds 5. SpecStream answers Scrapfly's `/scrape` at `https://api.specstream.ai/scrapfly/scrape` for $0.80 per 1,000 pages.

### Zyte API

Zyte puts each site in a price tier: $0.13 to $1.27 per 1,000 plain responses and $1.01 to $16.08 per 1,000 in a browser, pay as you go. On SpecStream every page is $0.80 per 1,000, whatever the site ([Zyte alternatives](https://specstream.ai/alternatives/zyte?utm_source=alternatives&utm_campaign=alterlab-vs-oxylabs)).

### Firecrawl

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

### ScrapingBee

Hobby is $19 a month for 75,000 credits, valid for one month. JavaScript rendering is the default at 5 credits a call. SpecStream answers its HTML API at `https://api.specstream.ai/scrapingbee/api/v1` for $0.80 per 1,000 pages.

## How to move AlterLab or Oxylabs 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. Send the URLs you scrape to the Extract API, up to 20 a call. AlterLab's `{"url": ...}` and an Oxylabs `universal` job both become `{"urls": [...]}`. The page comes back in `text`, as markdown by default, with its `status`, `title` and `read_from`:

```
import os

import requests

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

3. Read `status`: `ok` is read and charged; `blocked`, `not_found`, `empty`, `unsupported` and `failed` are not charged.

4. Read `429` as a call to send again after `Retry-After`. It is not charged. Each reply carries the price of the call, and every call is listed in your workspace.

## Frequently asked questions

### Is AlterLab better than Oxylabs?

They are sold to different buyers. AlterLab takes a $10 deposit and bills $0.0002 to $0.02 a page with no subscription. Oxylabs sells one subscription from $15 a month, with proxies and scrapers for named targets. SpecStream reads any page for $0.80 per 1,000 with no plan, and never bills a blocked page.

### AlterLab vs Oxylabs pricing: what does each cost?

AlterLab: $0.20 per 1,000 pages on a direct fetch, up to $20 on extended browser sessions. Oxylabs: $1.00 per 1,000 custom domain results without JavaScript and $1.50 with it, inside a plan from $15 a month. SpecStream: $0.80 per 1,000 pages.

### Which is cheaper for JavaScript pages?

Oxylabs, on its entry tiers: $1.50 per 1,000 custom domain results with JavaScript, against $4 on AlterLab's full browser tier, or $0.50 when AlterLab's browser reads the page from its own servers. SpecStream charges $0.80 per 1,000 for every page, browser or not.

### Do failed requests cost money?

Not on AlterLab, which also bills a cache hit at half price. Oxylabs does not bill its own 5xx and 6xx errors, but bills every 2xx or 4xx reply. SpecStream does not charge a blocked page, a 404, a page with no text or a busy call.

### Is there a free trial?

SpecStream gives $10 of credit, no card, which reads 12,500 pages. AlterLab gives up to 5,000 free requests on a new account, and Oxylabs gives $5 toward any product.

### How do I compare them on my own pages?

Run the script on this page with your own `urls.txt`. It sends every URL to all three APIs and prints the pages each returned and what each run cost, from AlterLab's `billing.total_credits`, SpecStream's `price_usd` and the replies Oxylabs bills.

### Does SpecStream have an MCP server?

Yes, at `https://api.specstream.ai/mcp` over Streamable HTTP, with OAuth or an API key. An agent gets `read_pages` and `search_web` on the same balance, inside the limits you set on its key.

## Sources

SpecStream wrote this page. Each figure about AlterLab or Oxylabs comes from that company's own page, read on the date shown. A price per 1,000 pages is the vendor's price for one page or result, times 1,000.

- [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
- [AlterLab pricing](https://alterlab.io/pricing), read Nov 12, 2026
- [AlterLab for agents (llms.txt)](https://alterlab.io/llms.txt), read Nov 12, 2026
- [AlterLab, your first request](https://alterlab.io/docs/quickstart/first-request), read Nov 12, 2026
- [AlterLab vs Oxylabs, by AlterLab](https://alterlab.io/vs/oxylabs), read Nov 12, 2026
- [Oxylabs pricing](https://www.oxylabs.io/pricing), read Nov 12, 2026
- [Oxylabs Web Scraper API pricing](https://oxylabs.io/products/web-api/scrape/targets/pricing), read Nov 12, 2026
- [Oxylabs Web Scraper API docs](https://developers.oxylabs.io/scraping-solutions/web-scraper-api), read Nov 12, 2026
- [Oxylabs realtime integration](https://developers.oxylabs.io/scraping-solutions/web-scraper-api/integration-methods/realtime), 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
- [Zyte pricing](https://www.zyte.com/pricing/), read Nov 12, 2026
- [Firecrawl pricing](https://www.firecrawl.dev/pricing), read Nov 12, 2026
- [ScrapingBee pricing](https://www.scrapingbee.com/pricing/), read Nov 12, 2026
- [ScrapingBee documentation](https://www.scrapingbee.com/documentation/), read Nov 12, 2026
