<!-- twin of https://specstream.ai/migrate/yandex-search -->
# Yandex Search API compatible: change the address

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

Since November 10, 2026 SpecStream answers the Yandex Search API's `POST /v2/web/search` with Yandex's own reply: the `yandexsearch` XML document, Base64 in `rawData`. A search of up to 10 results costs $0.005, with no Yandex Cloud folder to set up.

The switch is one line: `https://api.specstream.ai/yandex` in place of `https://searchapi.api.cloud.yandex.net`, and a SpecStream key in `Authorization: Api-Key`. The request body and your XML parser stay.

The SpecStream Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on WideSearch. A new account gets $10 of credit, no card.

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

## Yandex Search API to SpecStream, parameter by parameter and field by field

| | SpecStream | Yandex Search API |
|---|---|---|
| Address | `POST https://api.specstream.ai/yandex/v2/web/search` | `POST https://searchapi.api.cloud.yandex.net/v2/web/search` |
| The key | A SpecStream key as `Authorization: Api-Key`, or as `Bearer` | A Yandex Cloud API key as `Authorization: Api-Key`, or an IAM token as `Bearer` |
| Parameters applied | `query.queryText`, `query.searchType`, `query.page`, `query.familyMode`, `groupSpec.groupsOnPage` (1 to 100), `period`, `resultsWithin` and `sortSpec.sortMode` | The same, plus `region`, `l10n`, `maxPassages`, `docsInGroup` and `responseFormat` |
| Reply | `{"rawData": "<Base64>"}`, the `yandexsearch` XML with `request`, `found`, `reqid` and each `group` with `doc` `url`, `domain`, `title` and a `passage` | `rawData` with the XML or HTML results document |
| Errors | Yandex Cloud's own `{"code", "message", "details"}`: `400` for a `queryText` over 400 characters or `FORMAT_HTML`, `401` for no key. A busy call gets `429` with `Retry-After` and is not charged | `queryText` at most 400 characters |
| Price | $0.005 a search of up to 10 results, $5 per 1,000. Each started block of 10 more results adds $0.006 | $4.00 per 1,000 synchronous requests by day, $3.00 at night, without VAT. One request is the billing unit |
| Account | A SpecStream key. Credit you buy never expires | A Yandex Cloud folder, named in `folderId` |
| Free to start | $10 of credit, no card, which covers 2,000 searches | Billed from the first request |
| Pages behind the results | Read on the same key at $0.0008 a page with the Extract API | A search API |

## The Yandex Search API reference, on SpecStream

### The call, before and after

```
# Before
curl -X POST "https://searchapi.api.cloud.yandex.net/v2/web/search" \
  -H "Authorization: Api-Key $YANDEX_API_KEY" -H "Content-Type: application/json" \
  -d '{"query": {"searchType": "SEARCH_TYPE_COM", "queryText": "pizza"}, "folderId": "<folder>"}'

# After
curl -X POST "https://api.specstream.ai/yandex/v2/web/search" \
  -H "Authorization: Api-Key $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"query": {"searchType": "SEARCH_TYPE_COM", "queryText": "pizza"}, "folderId": "<folder>"}'
```

The reply is Yandex's: `{"rawData": "PD94bWwg..."}`. Decoded, it is the `yandexsearch` document your parser already reads: `request` with `query`, `page`, `sortby` and `groupings`, then `response` with `reqid`, `found`, `found-human` and `results/grouping`, one `group` per result.

Yandex's Python SDK, yandex-ai-studio-sdk, speaks gRPC and has no REST address setting, so the switch is in your own HTTP call: the address and the key. `folderId` can stay in the body.

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

Applied: `query.queryText`, `query.searchType` as the search's country and language (`SEARCH_TYPE_RU`, `TR`, `COM`, `KK`, `BE`, `UZ`), `query.page`, `query.familyMode`, `groupSpec.groupsOnPage` from 1 to 100, `period` and the older `resultsWithin`, and `sortSpec.sortMode` with `SORT_MODE_BY_TIME` for dated results newest first. A call that names no count reads 10.

Refused, in Yandex Cloud's own `{"code", "message", "details"}` body: a `queryText` over 400 characters gets `400`, as on Yandex, `responseFormat` `FORMAT_HTML` gets `400` with a message that names `FORMAT_XML`, and a call with no key gets `401`. Every parameter was measured on production on Nov 10, 2026, and the full [pass table](https://specstream.ai/specstream/dialects/yandex.md) lists each one and its result.

The route answers the synchronous search. The deferred form, `searchAsync` and its operation, is not served.

### Every field that comes back

In the XML: `request` with `query`, `page`, `sortby`, `maxpassages` and `groupings/groupby`, and `response` with its `date`, `reqid`, `found`, `found-human` and `results/grouping` with `found`, `found-docs`, `found-docs-human` and `page`. Each `group` has `categ`, `doccount`, `relevance` and a `doc` with `url`, `domain`, `title` and `passages/passage`. A search with no results carries Yandex's `error` code 15.

The route does not return `misspell`, `reask`, `doc@id`, `headline`, `size`, `charset`, `properties`, `mime-type` or `saved-copy-url`, and `relevance` is empty. `modtime` comes back when the source gave a date.

### One price a search, on one key

On SpecStream a search of up to 10 results costs $0.005, which is $5 per 1,000, each started block of 10 more adds $0.006, and a busy call gets `429` with `Retry-After` and charges nothing. There is no folder or IAM token to set up, the same key reads the page behind any result at $0.0008, and credit you buy never expires.

### Speed, measured on production

On November 9, 2026 the fast search every drop-in route uses had a median of 0.82 s at 1 search a second and 1.07 s at 20 a second, with the 95th percentile between 1.09 and 1.73 s, and answered 718 of 720 calls. There is no limit per key and no daily limit.

### Scored on the official benchmarks

The SpecStream Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions, 978 of them correct, and 64.0 item F1 and 43.4 row F1 on all 200 WideSearch 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-yandex-search) page.

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

Create the key with `zero_retention` and a call made with it keeps no request text and no answer after the reply. `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}'
```

### Pages, search and rows on one key

The same key reads up to 20 pages or documents a call with the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=migrate-yandex-search) at $0.80 per 1,000 pages. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=migrate-yandex-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.

## What else Yandex Search API users price

### Brave Search API

A search API on Brave's own index at $5 per 1,000 requests. SpecStream answers Brave's call at `https://api.specstream.ai/res/v1/web/search` and reads the pages behind the results on the same key.

### Serper

Google results as JSON, in credit packs from $1.00 per 1,000 that are valid for 6 months. SpecStream answers Serper's call at `https://api.specstream.ai/serper`, and its credit never expires.

### SerpApi

Search engine result pages as JSON, sold by monthly plan: Starter is $25 a month for 1,000 searches. On SpecStream $25 pays for 5,000 searches.

## 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 searches.

2. Set the address to `https://api.specstream.ai/yandex` where your code has `https://searchapi.api.cloud.yandex.net`, and send the SpecStream key as `Authorization: Api-Key`. In Python:

```
import base64
import xml.etree.ElementTree as ET
import requests

BASE = "https://api.specstream.ai/yandex"  # was https://searchapi.api.cloud.yandex.net

reply = requests.post(
    f"{BASE}/v2/web/search",
    headers={"Authorization": f"Api-Key {SPECSTREAM_KEY}"},
    json={"query": {"searchType": "SEARCH_TYPE_COM", "queryText": "pizza"}, "groupSpec": {"groupsOnPage": 10}},
    timeout=30,
)
reply.raise_for_status()
root = ET.fromstring(base64.b64decode(reply.json()["rawData"]))
for doc in root.iter("doc"):
    print(doc.findtext("url"), doc.findtext("title"))
```

3. In JavaScript:

```
const reply = await fetch("https://api.specstream.ai/yandex/v2/web/search", {
  method: "POST",
  headers: { Authorization: `Api-Key ${process.env.SPECSTREAM_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ query: { searchType: "SEARCH_TYPE_TR", queryText: "pizza" } }),
});
const { rawData } = await reply.json();
const xml = Buffer.from(rawData, "base64").toString("utf8");
console.log(xml.slice(0, 500));
```

4. Read `429` as a call to send again after `Retry-After`. It is not charged.

## Frequently asked questions

### Is there a Yandex Search API compatible API?

Yes. Since Nov 10, 2026 SpecStream answers `POST /v2/web/search` at `https://api.specstream.ai/yandex` with Yandex's XML document in `rawData`, as measured on production. A search costs $0.005.

### How do I migrate from the Yandex Search API?

Change one address: `https://searchapi.api.cloud.yandex.net` becomes `https://api.specstream.ai/yandex`, and a SpecStream key goes in `Authorization: Api-Key`. `queryText`, `searchType`, `page`, `familyMode`, `groupsOnPage`, `period` and `sortMode` keep their meaning.

### How much does the Yandex Search API cost?

Synchronous web search is $4.00 per 1,000 requests by day and $3.00 at night, without VAT. SpecStream costs $5 per 1,000 searches on one key, with no folder to set up, and its credit never expires.

### Does the Yandex AI Studio SDK work with SpecStream?

No: yandex-ai-studio-sdk speaks gRPC and has no REST address setting. Call `https://api.specstream.ai/yandex/v2/web/search` with `requests` or `fetch`, as in the steps on this page, with the same body.

### Does SpecStream return Yandex's HTML results page?

No. Since Nov 10, 2026 the route answers the XML form, Yandex's default, and refuses `FORMAT_HTML` with `400` and a message that names `FORMAT_XML`.

### Which Yandex XML fields does SpecStream not return?

`misspell`, `reask`, `doc@id`, `headline`, `size`, `charset`, `properties`, `mime-type` and `saved-copy-url`. Each result keeps `url`, `domain`, `title` and a `passage`.

## Sources

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

- [Yandex Search API pricing](https://aistudio.yandex.ru/docs/en/search-api/pricing), read Nov 10, 2026
- [Yandex Search API web search](https://aistudio.yandex.ru/docs/en/search-api/operations/web-search), read Nov 10, 2026
- [SpecStream Yandex pass table](https://specstream.ai/specstream/dialects/yandex.md), read Nov 10, 2026
- [Brave Search API](https://brave.com/search/api/), read Nov 10, 2026
- [Serper](https://serper.dev/), read Nov 10, 2026
- [SerpApi pricing](https://serpapi.com/pricing), read Nov 10, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 10, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 10, 2026
