Brave image search API compatible
Change the address.
Brave's Search plan is $5 per 1,000 requests, images included, up to 50 queries per second. Since November 10, 2026, SpecStream answers Brave's /res/v1/images/search call in Brave's JSON at the same $5 per 1,000.
The switch is the host: https://api.specstream.ai where your code has https://api.search.brave.com. The path, the X-Subscription-Token header and your parser stay; the token is now a SpecStream key.
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.
Brave image search to SpecStream, parameter by parameter and field by field
| SpecStream | Brave | |
|---|---|---|
| Address | GET https://api.specstream.ai/res/v1/images/search, or POST with a JSON body | GET https://api.search.brave.com/res/v1/images/search |
| The key | A SpecStream key in the X-Subscription-Token header | A Brave key in the X-Subscription-Token header |
| Request | q, country, search_lang, safesearch, and count from 1 to 100 (10 when unset) | q, country, search_lang, and count up to 200 images (50 by default) |
| Each image | type, title, url (the page the image is on), source, properties.url (the image) and meta_url. thumbnail, the image's width and height, and format when the search engines give them | results[] with a thumbnail and properties holding the original image's url |
| Rate | No limit per key and no daily limit. A busy call gets 429 with Retry-After and is not charged | Up to 50 queries per second on the Search plan |
| Price | $0.005 a search of up to 10 images, $5 per 1,000 | $5 per 1,000 requests on the Search plan, images included |
| Free to start | $10 of credit, no card, which covers 2,000 image searches | $5 in free credits every month |
The Brave image search reference, on SpecStream
The call, before and after
# Before
curl -G "https://api.search.brave.com/res/v1/images/search" \
-H "X-Subscription-Token: $BRAVE_API_KEY" \
--data-urlencode "q=desert dunes" -d count=10
# After
curl -G "https://api.specstream.ai/res/v1/images/search" \
-H "X-Subscription-Token: $SPECSTREAM_API_KEY" \
--data-urlencode "q=desert dunes" -d count=10The same path also answers POST with the parameters in a JSON body, for a client that builds its requests that way. The web search at /res/v1/web/search answers at the same host with the same key.
What the route reads, and what it refuses
Read and applied: q, country, search_lang, safesearch and count. A call that sends no count gets 10 results at the base price, where Brave's default is 50; send count to ask for more, up to 100 in one call.
Refused, in Brave's ErrorResponse form: a call with no X-Subscription-Token gets 401, and a count outside 1 to 100 gets 400 naming the range, so a client that sends Brave's maximum of 200 sets count=100.
Every field that comes back
The reply has type set to images, query with original and the country you sent, and results[]. Each result has type set to image_result, title, url for the page the image is on, source, properties with url for the image itself, and meta_url with scheme, netloc, hostname and path.
thumbnail with src, width and height, the image's properties.width and properties.height, and properties.format such as jpeg or png are there when the search engines give them, and absent otherwise; the route never fills them in. One field is added, specstream, with the call's price.
Left out of each result: page_fetched, properties.placeholder, meta_url.favicon and confidence.
The same price, no cap a second
Brave's Search plan prices a request at $5 per 1,000 and caps a key at 50 queries per second. On SpecStream an image search of up to 10 results is $0.005, the same as a web search with no daily limit. count asks for up to 100, and each started block of 10 more adds $0.006, so count=100 costs $0.059. Credit you buy never expires. A busy call gets 429 in Brave'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 Brave 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 Brave's web search at the same host (the Brave migration has every web field), and SerpApi's, Serper's and Google Custom Search's image calls too (see the SerpApi Google Images and Google image search migrations).
The Extract API reads the page behind each url, 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 Brave image search users price
Serper
Google results sold in credit packs from $1.00 per 1,000 for 50,000 credits, valid for 6 months, with 2,500 free queries. SpecStream credit never expires, and the same key answers Serper's /images call (Serper images migration).
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 $0.005 with no plan (SerpApi Google Images 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 host to https://api.specstream.ai where your code has https://api.search.brave.com, and put the SpecStream key in X-Subscription-Token. In Python:
import requests
URL = "https://api.specstream.ai/res/v1/images/search" # was https://api.search.brave.com/res/v1/images/search
reply = requests.get(URL, {"q": "desert dunes", "count": 20, "country": "us", "search_lang": "en"}, headers={"X-Subscription-Token": SPECSTREAM_KEY}, timeout=30)
reply.raise_for_status()
for result in reply.json()["results"]:
image = result["properties"]
print(image["url"], image.get("width"), image.get("height"), result["url"])3. In JavaScript:
const url = new URL("https://api.specstream.ai/res/v1/images/search");
url.search = new URLSearchParams({ q: "desert dunes", count: "20" });
const reply = await fetch(url, { headers: { "X-Subscription-Token": process.env.SPECSTREAM_KEY } });
const data = await reply.json();
for (const result of data.results) console.log(result.title, result.properties.url, result.thumbnail?.src ?? "");4. Set count to the number of images you want, from 1 to 100. 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 Brave image search API alternative with the same JSON?
GET https://api.specstream.ai/res/v1/images/search in Brave's shape, with the key in X-Subscription-Token. A search of up to 10 images costs $0.005.How much does the Brave image search API cost?
How do I migrate from Brave image search?
https://api.search.brave.com becomes https://api.specstream.ai, and a SpecStream key goes in X-Subscription-Token. q, country, search_lang, safesearch and count keep their meaning.How many images can one call ask for?
count, and 10 when count is unset. Each started block of 10 above the first 10 adds $0.006.Which Brave image fields does SpecStream return?
type, title, url, source, properties.url and meta_url. thumbnail, the image's width and height, and format come when the search engines give them.Which Brave image fields are left out?
page_fetched, properties.placeholder, meta_url.favicon and confidence.Sources
SpecStream wrote this page. Each Brave figure comes from Brave's own pages, 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.
- Brave Search APIbrave.com/search/api/, read Nov 10, 2026
- Brave Image Search API documentationapi-dashboard.search.brave.com/app/documentation/image-search/get-started, read Nov 10, 2026
- Serperserper.dev/, read Nov 10, 2026
- SerpApi pricingserpapi.com/pricing.md, 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




