# Yandex Search API's documented calls on SpecStream

Date: 2026-11-10

Client: requests 2.34.2 (PyPI), Python 3.14.4, the documented REST call

The one line a user changes:

```sh
curl -X POST "https://api.specstream.ai/yandex/v2/web/search" -H "Authorization: Api-Key $SPECSTREAM_KEY" -d '{"query": {"searchType": "SEARCH_TYPE_COM", "queryText": "pizza"}}'
```

## Request parameters

| Parameter | Sent | Status | Result |
| --- | --- | --- | --- |
| `query.queryText` | `query={'queryText': 'Larkspur Colorado mayor'}` | 200 | honoured (checked in code: tests/finder/test_dialect_yandex.py::test_a_search_is_one_web_search_with_the_xml_in_raw_data) |
| `groupSpec.groupsOnPage` | `groupSpec={'groupsOnPage': '5'}` | 200 | honoured |
| `query.page` | `query={'page': '1'}` | 200 | honoured |
| `query.searchType` | `query={'searchType': 'SEARCH_TYPE_TR'}` | 200 | honoured (the search domain's country and language) |
| `query.familyMode` | `query={'familyMode': 'FAMILY_MODE_STRICT'}` | 200 | honoured (checked in code: tests/finder/test_dialect_yandex.py::test_the_search_type_family_mode_period_and_sort_reach_the_search) |
| `period` | `period=PERIOD_2_WEEKS` | 200 | honoured (checked in code: tests/finder/test_dialect_yandex.py::test_the_search_type_family_mode_period_and_sort_reach_the_search) |
| `resultsWithin` | `resultsWithin=WITHIN_1_MONTH` | 200 | honoured (checked in code: tests/finder/test_dialect_yandex.py::test_a_call_that_names_no_count_reads_ten_and_pages_by_groups) |
| `sortSpec.sortMode` | `sortSpec={'sortMode': 'SORT_MODE_BY_TIME'}` | 200 | honoured (dated results newest first) |
| `sortSpec.sortOrder` | `sortSpec={'sortOrder': 'SORT_ORDER_ASC'}` | 200 | accepted, not applied |
| `query.fixTypoMode` | `query={'fixTypoMode': 'FIX_TYPO_MODE_OFF'}` | 200 | accepted, not applied |
| `groupSpec.groupMode` | `groupSpec={'groupMode': 'GROUP_MODE_FLAT'}` | 200 | accepted, not applied (one document per group either way) |
| `groupSpec.docsInGroup` | `groupSpec={'docsInGroup': '3'}` | 200 | accepted, not applied |
| `maxPassages` | `maxPassages=3` | 200 | accepted, not applied (one passage per document) |
| `region` | `region=213` | 200 | accepted, not applied |
| `l10n` | `l10n=LOCALIZATION_EN` | 200 | accepted, not applied |
| `folderId` | `folderId=b1g0000000000000000` | 200 | accepted, not applied |
| `userAgent` | `userAgent=Mozilla/5.0` | 200 | accepted, not applied |
| `metadata` | `metadata={'fields': {'team': 'search'}}` | 200 | accepted, not applied |
| `responseFormat=FORMAT_XML` | `responseFormat=FORMAT_XML` | 200 | accepted, not applied |
| `responseFormat=FORMAT_HTML` | `responseFormat=FORMAT_HTML` | 400 | refused (Yandex's own results page) |
| `query.queryText over 400 characters` | `query=<419 characters>` | 400 | refused (as Yandex refuses it) |
| `Authorization (none)` | `Authorization=` | 401 | refused |

## Response fields

| Field | State |
| --- | --- |
| `xml.yandexsearch/request/query` | present |
| `xml.yandexsearch/request/page` | present |
| `xml.yandexsearch/request/sortby` | present |
| `xml.yandexsearch/request/maxpassages` | present |
| `xml.yandexsearch/request/groupings/groupby@groups-on-page` | present |
| `xml.yandexsearch/response@date` | present |
| `xml.yandexsearch/response/reqid` | present |
| `xml.yandexsearch/response/found` | present |
| `xml.yandexsearch/response/found-human` | present |
| `xml.yandexsearch/response/misspell` | absent |
| `xml.yandexsearch/response/reask` | absent |
| `xml.yandexsearch/response/results/grouping/found` | present |
| `xml.yandexsearch/response/results/grouping/found-docs` | present |
| `xml.yandexsearch/response/results/grouping/found-docs-human` | present |
| `xml.yandexsearch/response/results/grouping/page` | present |
| `xml.yandexsearch/response/results/grouping/group/categ@name` | present |
| `xml.yandexsearch/response/results/grouping/group/doccount` | present |
| `xml.yandexsearch/response/results/grouping/group/relevance` | empty |
| `xml.yandexsearch/response/results/grouping/group/doc@id` | absent |
| `xml.yandexsearch/response/results/grouping/group/doc/url` | present |
| `xml.yandexsearch/response/results/grouping/group/doc/domain` | present |
| `xml.yandexsearch/response/results/grouping/group/doc/title` | present |
| `xml.yandexsearch/response/results/grouping/group/doc/headline` | absent |
| `xml.yandexsearch/response/results/grouping/group/doc/modtime` | absent |
| `xml.yandexsearch/response/results/grouping/group/doc/size` | absent |
| `xml.yandexsearch/response/results/grouping/group/doc/charset` | absent |
| `xml.yandexsearch/response/results/grouping/group/doc/passages/passage` | present |
| `xml.yandexsearch/response/results/grouping/group/doc/properties` | absent |
| `xml.yandexsearch/response/results/grouping/group/doc/mime-type` | absent |
| `xml.yandexsearch/response/results/grouping/group/doc/saved-copy-url` | absent |
