<!-- twin of https://specstream.ai/migrate/serper-images -->
# Serper images compatible: change the address

Compared on Nov 10, 2026. The page: https://specstream.ai/migrate/serper-images

Serper sells credits in packs from $1.00 per 1,000, valid for 6 months. Since November 10, 2026, SpecStream answers Serper's `/images` call in Serper's JSON at $0.005 a search, and credit you buy never expires.

The switch is the base address: `https://api.specstream.ai/serper` where your code has `https://google.serper.dev`. The key stays in the `X-API-KEY` header, now a SpecStream key, and the body stays as it is.

An image search of up to 10 results costs $0.005, the price of a web search, with no daily limit. A new account gets $10 of credit, no card, which covers 2,000 image searches.

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

## Serper images to SpecStream, parameter by parameter and field by field

| | SpecStream | Serper |
|---|---|---|
| Address | `POST https://api.specstream.ai/serper/images`, or `GET` with `apiKey` in the address | `POST https://google.serper.dev/images` |
| The key | A SpecStream key in the `X-API-KEY` header | A Serper key in the `X-API-KEY` header |
| Request | `q`, `gl`, `hl`, `num` from 1 to 100 (10 when unset) and `page` from 1 | `q`, `gl`, `hl`, `num` from 1 to 100 (10 by default) and `page` from 1 |
| Each image | `title`, `imageUrl`, `source`, `domain`, `link` (the page the image is on) and `position`. `imageWidth`, `imageHeight`, `thumbnailUrl`, `thumbnailWidth` and `thumbnailHeight` when the search engines give them | `title`, `imageUrl`, `imageWidth`, `imageHeight`, `thumbnailUrl`, `thumbnailWidth`, `thumbnailHeight`, `source`, `domain`, `link`, `googleUrl` and `position` |
| Rate | No limit per key and no daily limit. A busy call gets `429` with `Retry-After` and is not charged | 50 queries per second on the 50k pack, 300 on Ultimate |
| Price | $0.005 a search of up to 10 images, $5 per 1,000, with no pack | Packs from $1.00 per 1,000 for 50k credits down to $0.30 per 1,000 for 12.5M |
| Credit lifetime | Credit you buy never expires | Credits valid for 6 months |
| Free to start | $10 of credit, no card, which covers 2,000 image searches | 2,500 free queries |

## The Serper images reference, on SpecStream

### The call, before and after

```
# Before
curl https://google.serper.dev/images \
  -H "X-API-KEY: $SERPER_API_KEY" -H "Content-Type: application/json" \
  -d '{"q": "sushi platter", "num": 10}'

# After
curl https://api.specstream.ai/serper/images \
  -H "X-API-KEY: $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"q": "sushi platter", "num": 10}'
```

The body, the header name and the parser stay. A client that cannot set headers can send `GET https://api.specstream.ai/serper/images?q=sushi+platter&apiKey=$SPECSTREAM_API_KEY`.

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

Read and applied: `q`, `gl` for the country, `hl` for the language, `num` from 1 to 100 and `page` from 1. `location`, `tbs` and `autocorrect` are accepted, and `searchParameters` echoes each one you sent.

Refused, in Serper's `{"message", "statusCode"}` form: a call with no key gets `401`, and a `num` outside 1 to 100 or a `page` below 1 gets `400` naming the range.

### Every field that comes back

`searchParameters` carries `q`, the `gl`, `hl`, `location`, `tbs` and `autocorrect` you sent, `type` set to `images`, `num`, `page` and `engine`. Each of `images[]` has `title`, `imageUrl` for the image, `source`, `domain`, `link` for the page the image is on and `position`, counted across pages. `imageWidth`, `imageHeight`, `thumbnailUrl`, `thumbnailWidth` and `thumbnailHeight` are there when the search engines give them, and absent otherwise; the route never fills them in.

`credits` is 1 on every call, as one call is one image search. One field is added, `specstream`, with the call's price. Left out of each image: `googleUrl`.

### One price a search, and credit that stays

On Serper a pack sets the price and the date the credits end. On SpecStream an image search of up to 10 results is $0.005, the same as a web search. `num` asks for up to 100, and each started block of 10 more adds $0.006, so `num=100` costs $0.059. Credit you buy never expires, and there is no daily limit. A busy call gets `429` in Serper's form with `Retry-After` and charges nothing.

### What is kept, set on the key

A key made with `zero_retention` keeps no request text and no answer once the reply is sent, on image searches as on every other call. `spend_cap_cents` sets the most that key can spend, so a loop in a Serper client cannot run past it.

```
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}'
```

### Images, web, news and pages on one key

The results come from the image search of several engines at once, one result for each image address. The same key answers Serper's `/search` and `/news` at the same base address (the [Serper migration](https://specstream.ai/migrate/serper?utm_source=alternatives&utm_campaign=migrate-serper-images) has every web field), and SerpApi's and Google Custom Search's image calls too (see the [SerpApi Google Images migration](https://specstream.ai/migrate/serpapi-google-images?utm_source=alternatives&utm_campaign=migrate-serper-images) and the [Google image search migration](https://specstream.ai/migrate/google-image-search?utm_source=alternatives&utm_campaign=migrate-serper-images)).

The [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=migrate-serper-images) reads the page behind each `link`, up to 20 pages a call at $0.80 per 1,000 pages, and a page with no text is not charged. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=migrate-serper-images) 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.

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

## What else Serper images users price

### SerpApi

A plan per month: Starter is $25 for 1,000 searches, 200 an hour, and the free plan has 250 searches a month. SpecStream answers SerpApi's `engine=google_images` call at `/serpapi/search.json` at $0.005, with no plan ([SerpApi Google Images migration](https://specstream.ai/migrate/serpapi-google-images?utm_source=alternatives&utm_campaign=migrate-serper-images)).

### Brave Search API

$5 per 1,000 requests, images included, up to 50 queries per second, with $5 in free credits every month. SpecStream answers Brave's `/res/v1/images/search` at the same price, ([Brave image search migration](https://specstream.ai/migrate/brave-image-search?utm_source=alternatives&utm_campaign=migrate-serper-images)).

### SearchApi

Developer is $40 a month for 10,000 searches, $4 per 1,000, after 100 free requests. SpecStream answers SearchApi's `engine=google_images` call with no plan to renew ([SearchApi Google Images migration](https://specstream.ai/migrate/searchapi-google-images?utm_source=alternatives&utm_campaign=migrate-serper-images)).

## 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 2,000 image searches.

2. Set the address to `https://api.specstream.ai/serper/images` where your code has `https://google.serper.dev/images`, and put the SpecStream key in `X-API-KEY`. In Python:

```
import requests

URL = "https://api.specstream.ai/serper/images"  # was https://google.serper.dev/images

reply = requests.post(URL, json={"q": "sushi platter", "gl": "us", "hl": "en", "num": 10, "page": 1}, headers={"X-API-KEY": SPECSTREAM_KEY}, timeout=30)
reply.raise_for_status()
for image in reply.json()["images"]:
    print(image["position"], image["imageUrl"], image.get("imageWidth"), image.get("imageHeight"), image["link"])
```

3. In JavaScript:

```
const reply = await fetch("https://api.specstream.ai/serper/images", {
  method: "POST",
  headers: { "X-API-KEY": process.env.SPECSTREAM_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ q: "sushi platter", num: 10 }),
});
const data = await reply.json();
for (const image of data.images) console.log(image.position, image.title, image.imageUrl, image.thumbnailUrl ?? "");
```

4. Page with `page: 2`, `page: 3` and on. Read `429` as a call to send again after `Retry-After`. It is not charged.

## Frequently asked questions

### Is there a Serper images API alternative with the same JSON?

Yes. Since November 10, 2026, SpecStream answers `POST https://api.specstream.ai/serper/images` with `images[]` in Serper's shape and the key in `X-API-KEY`. A search of up to 10 images costs $0.005.

### How much does Serper cost?

Serper's packs start at $1.00 per 1,000 for 50,000 credits and go down to $0.30 per 1,000 for 12.5 million, each valid for 6 months, with 2,500 free queries. SpecStream costs $5 per 1,000 image searches, and the credit never expires.

### How do I migrate from Serper images?

Change one address: `https://google.serper.dev` becomes `https://api.specstream.ai/serper`, and a SpecStream key goes in `X-API-KEY`. `q`, `gl`, `hl`, `num` and `page` keep their meaning.

### Which image fields does SpecStream return?

Six on every image: `title`, `imageUrl`, `source`, `domain`, `link` and `position`. The image and thumbnail sizes and `thumbnailUrl` come when the search engines give them.

### Which Serper image fields are left out?

One: `googleUrl`. Every other field of Serper's image result keeps its name.

### Is there a cheap Google image search API with no monthly plan?

SpecStream charges $0.005 an image search with no plan, no pack and no expiry date, and a new account gets $10 of credit with no card, which covers 2,000 searches.

## Sources

SpecStream wrote this page. Serper's prices come from Serper's own page and its image search fields from its published API description, and each other provider's figure from that company's own page, all read on Nov 10, 2026. The route's behavior comes from its code.

- [Serper](https://serper.dev/), read Nov 10, 2026
- [Serper image search API description](https://artifacts.apis.io/serper/openapi/serper-images-api-openapi.yml), read Nov 10, 2026
- [SerpApi pricing](https://serpapi.com/pricing.md), read Nov 10, 2026
- [Brave Search API](https://brave.com/search/api/), read Nov 10, 2026
- [SearchApi pricing](https://www.searchapi.io/pricing), 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
