Serper images compatible
Change the address.
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.
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 has every web field), and SerpApi's and Google Custom Search's image calls too (see the SerpApi Google Images migration and the Google image search migration).
The Extract API 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 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 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).
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).
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).
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 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
Something we didn't answer? Talk to a human
Is there a Serper images API alternative with the same JSON?
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?
How do I migrate from Serper images?
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?
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?
googleUrl. Every other field of Serper's image result keeps its name.Is there a cheap Google image search API with no monthly plan?
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.
- Serperserper.dev/, read Nov 10, 2026
- Serper image search API descriptionartifacts.apis.io/serper/openapi/serper-images-api-openapi.yml, read Nov 10, 2026
- SerpApi pricingserpapi.com/pricing.md, read Nov 10, 2026
- Brave Search APIbrave.com/search/api/, read Nov 10, 2026
- SearchApi pricingsearchapi.io/pricing, read Nov 10, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026




