# Yandex Search Scraper / Парсер поиска Яндекса (`igolaizola/yandex-search`) Actor

Yandex Search scraper and Google alternative for localized organic SERP rankings, URLs, snippets, domains, and sitelinks.
Парсер поиска Яндекса: собирайте органическую выдачу, позиции, ссылки и сниппеты по странам и языкам для SEO-анализа и мониторинга конкурентов

- **URL**: https://apify.com/igolaizola/yandex-search.md
- **Developed by:** [Iñigo Garcia Olaizola](https://apify.com/igolaizola) (community)
- **Categories:** SEO tools, Developer tools, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Yandex Search Scraper — Organic Rankings, URLs & SERP Data

**Русская версия ниже →** [Перейти к русскому описанию](#yandex-search-scraper--органическая-выдача-позиции-и-serp-данные)

Extract organic Yandex search results and download structured ranking data for SEO monitoring, competitor research, content discovery, and lead generation. Use it as a Google Search alternative, run one or many queries, and export the results to JSON, CSV, Excel, or your preferred workflow.

### 🤖 What does Yandex Search Scraper do?

Yandex Search Scraper collects organic web-search results from Yandex and saves each result as a clean Dataset item.

- **Organic rankings** — capture each result's position across the complete run
- **Titles and URLs** — collect headlines, destination links, display URLs, and domains
- **Search snippets** — save the descriptive text shown below each result
- **Sitelinks** — collect related links when Yandex displays them
- **Multiple queries** — research several keywords in one run with a shared result limit
- **Localized results** — choose a regional Yandex domain, search country, proxy country, and result language
- **Recency and exact-query controls** — filter by time range and optionally disable spelling correction
- **Per-query depth** — cap pages separately for each keyword while retaining one global result limit

**Great for:** rank tracking, keyword research, competitor intelligence, link prospecting, content research, and lead generation.

> SEO keywords: **Yandex scraper**, **Yandex Search scraper**, **Google Search alternative**, **Yandex SERP API**, **scrape Yandex results**, **Yandex rank tracker**, **Apify actor**.

### 💡 Why scrape Yandex Search?

- 📈 **Monitor SEO visibility** — follow which pages and domains rank for important keywords
- 🔍 **Research competitors** — identify the sites winning visibility in your market
- 🎯 **Build prospect lists** — find relevant websites and pages for outreach or partnerships
- 🧭 **Discover content opportunities** — compare titles, snippets, and topics already appearing in search
- 🔄 **Automate reporting** — schedule repeat runs and connect the Dataset to analytics tools

### 🚀 How to use

1. **Add the actor** — Open **Yandex Search Scraper** in Apify Store.
2. **Enter queries** — Add one or more terms to `queries`, including supported search operators when useful.
3. **Choose your market** — Set the Yandex domain, search country, optional proxy country, language, and time range.
4. **Set the result limits** — Choose `maxItems` for the whole run and `maxPagesPerQuery` for each keyword.
5. **Run the actor** — Click **Run** or trigger it through the Apify API or a schedule.
6. **Download results** — Export the Dataset as JSON, CSV, Excel, XML, or RSS.

### 💳 Pricing

This Actor uses pay-per-result pricing, so you pay for the Dataset items it produces. Apify's **Free plan** includes monthly credits suitable for small tests; larger workloads can use a paid Apify plan for additional usage.

### 📝 Input Parameters

| Parameter                | Type             | Required | Description                                                                                                                        |
| ------------------------ | ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `queries`                | Array of strings | Yes      | One or more Yandex search queries. Queries run in order, and each query is paginated before the next begins.                       |
| `maxItems`               | Integer          | Yes      | Maximum results saved across all queries. The default prefill is `10`; use `0` to rely only on `maxPagesPerQuery`.                 |
| `yandexDomain`           | String           | No       | Regional search host: `yandex.com`, `yandex.ru`, `yandex.by`, `yandex.kz`, `yandex.uz`, or `yandex.com.tr`. Default: `yandex.com`. |
| `country`                | String           | No       | Two-letter country code used to localize results, such as `us`, `ru`, `de`, `es`, or `gb`. Default: `us`.                          |
| `proxyCountry`           | String           | No       | Optional two-letter country code for the proxy exit location.                                                                      |
| `language`               | String           | No       | Optional result-language filter, such as `en`, `ru`, `tr`, `de`, or `fr`. Default: `any`.                                          |
| `timeRange`              | String           | No       | Recency filter: `any`, `day`, `week`, `month`, or `year`. Default: `any`.                                                          |
| `maxPagesPerQuery`       | Integer          | No       | Maximum pages fetched for each query, from `1` to `10`. Default: `10`.                                                             |
| `disableSpellCorrection` | Boolean          | No       | When `true`, asks Yandex to search the entered spelling without correcting it. Default: `false`.                                   |

#### Example inputs

**Track rankings for one keyword**

```json
{
  "queries": ["web scraping platforms"],
  "maxItems": 50,
  "country": "us",
  "proxyCountry": "us",
  "language": "en",
  "timeRange": "month",
  "maxPagesPerQuery": 5
}
````

**Research several focused queries**

```json
{
  "queries": [
    "site:apify.com yandex scraper",
    "best SERP data tools",
    "competitor keyword monitoring"
  ],
  "maxItems": 100,
  "yandexDomain": "yandex.ru",
  "country": "ru",
  "language": "ru",
  "maxPagesPerQuery": 3,
  "disableSpellCorrection": true
}
```

`maxItems` applies to the complete run, not separately to each query. For example, a limit of `100` stops after 100 total saved results.

### 📊 Output Results

Each Dataset item represents one organic Yandex result:

- **query** *(string)* — search query that produced the result
- **position** *(integer)* — result position across the complete run
- **title** *(string)* — result headline
- **url** *(string)* — destination URL
- **displayUrl** *(string, optional)* — URL text displayed by Yandex
- **domain** *(string, optional)* — normalized destination domain
- **snippet** *(string, optional)* — descriptive result text
- **sitelinks** *(array, optional)* — related links displayed below the result

```json
{
  "query": "web scraping platforms",
  "position": 1,
  "title": "Apify: The largest marketplace of trusted tools for AI",
  "url": "https://apify.com/",
  "displayUrl": "Apify.com",
  "domain": "apify.com",
  "snippet": "Build, deploy, and publish web scrapers and automation tools.",
  "sitelinks": [
    {
      "title": "Apify Store",
      "url": "https://apify.com/store"
    }
  ]
}
```

Optional fields are omitted when Yandex does not display them for a particular result.

### 🧭 Tips and Common Recipes

- **Start a new keyword project:** request 10–50 results while refining your search terms.
- **Track a known domain:** use a focused query such as `site:example.com product category`.
- **Compare several topics:** add multiple entries to `queries`; remember that `maxItems` is shared across them.
- **Localize a market:** pair a regional `yandexDomain` with the matching two-letter `country`, `proxyCountry`, and `language` values.
- **Choose the proxy location:** set `proxyCountry` when the network exit location matters.
- **Balance multiple queries:** lower `maxPagesPerQuery` so one broad keyword does not consume the whole global result allowance.
- **Find recent pages:** set `timeRange` to `day`, `week`, `month`, or `year`.
- **Create recurring reports:** schedule the Actor with the same queries and compare exported rankings over time.
- **Collect deeper rankings:** increase `maxItems` in multiples of 10 because Yandex commonly returns ten organic results per page.

### ⚙️ Best Practices

- Keep query sets stable when comparing rankings between scheduled runs.
- Search results can vary over time as Yandex updates its index and ranking systems.
- Snippets and sitelinks are presentation-dependent, so they may appear for some results but not others.
- Choose a practical `maxItems` value to keep runs focused and predictable.
- Keep `country` and `proxyCountry` aligned for consistent regional results unless you intentionally need different search and network locations.

### ⚖️ Legal & Ethical Considerations

- **Respect Yandex's Terms of Service** and applicable website policies.
- **Use data lawfully** and only for a legitimate research or business purpose.
- **Protect privacy** and comply with GDPR, CCPA, and other applicable data-protection rules.
- **Respect copyrights and attribution** when publishing or redistributing collected content.
- **Keep workloads reasonable** and avoid abusive or disruptive collection patterns.

This Actor is an independent tool and is **not** affiliated with, endorsed by, or sponsored by Yandex. All trademarks are the property of their respective owners.

### ❓ FAQ

**Does `maxItems` apply to every query?**

No. It is a global limit across the complete run. Queries are processed in the order provided until that limit is reached.

**Can I use Yandex search operators?**

Yes. Add supported operators directly to a query, such as `site:example.com analytics`.

**Why are some fields missing?**

Yandex does not show snippets, display URLs, or sitelinks for every result. Optional fields are included only when available.

**Can rankings change between runs?**

Yes. Search results naturally change as Yandex updates its index, ranking signals, and presentation.

**How do I collect more than one page?**

Set `maxItems` above 10 and `maxPagesPerQuery` above 1. The Actor continues through available result pages until either limit is reached.

**How do `country` and `yandexDomain` differ?**

`yandexDomain` selects the regional Yandex website. `country` localizes rankings and must be a supported two-letter country code such as `us`, `ru`, or `de`.

**Do I need to set `proxyCountry`?**

No. Set it when you need the proxy exit IP to come from a specific country.

**Can I prevent Yandex from correcting a misspelled query?**

Yes. Set `disableSpellCorrection` to `true` when exact spelling matters.

### 🛟 Support

Need a custom field or export?
Open an issue or contact the developer at https://igolaizola.com/#contact or https://t.me/igolaizola.

***

## Yandex Search Scraper — Органическая выдача, позиции и SERP-данные

Собирайте органические результаты поиска Яндекса и выгружайте структурированные данные о позициях для SEO-мониторинга, анализа конкурентов, поиска контента и лидогенерации. Используйте актор как альтернативу Google Search, запускайте один или несколько запросов и экспортируйте результаты в JSON, CSV или Excel.

### 🤖 Что делает Yandex Search Scraper?

Yandex Search Scraper собирает органическую поисковую выдачу Яндекса и сохраняет каждый результат как отдельную запись в Dataset.

- **Позиции в выдаче** — определяйте место каждого результата в рамках запуска
- **Заголовки и ссылки** — получайте заголовки, целевые URL, отображаемые адреса и домены
- **Сниппеты** — сохраняйте описание результата из поисковой выдачи
- **Быстрые ссылки** — собирайте дополнительные ссылки, которые показывает Яндекс
- **Несколько запросов** — исследуйте несколько ключевых слов за один запуск с общим лимитом
- **Локализованная выдача** — выбирайте домен Яндекса, страну поиска, страну прокси и язык результатов
- **Фильтры по времени и написанию** — ограничивайте период публикации и отключайте исправление опечаток
- **Глубина поиска** — задавайте максимальное число страниц отдельно для каждого запроса

**Подходит для:** мониторинга позиций, исследования ключевых слов, анализа конкурентов, поиска площадок, контент-анализа и лидогенерации.

> SEO-ключи: **парсер Яндекса**, **парсер поисковой выдачи Яндекса**, **Yandex SERP API**, **альтернатива Google Search**, **мониторинг позиций в Яндексе**, **актор Apify**.

### 💡 Зачем собирать поисковую выдачу Яндекса?

- 📈 **Контролировать SEO-видимость** — отслеживайте страницы и домены, которые ранжируются по важным запросам
- 🔍 **Анализировать конкурентов** — находите сайты с высокой видимостью в вашей нише
- 🎯 **Создавать базы для аутрича** — собирайте релевантные сайты и страницы для партнерств и продаж
- 🧭 **Находить идеи для контента** — сравнивайте темы, заголовки и сниппеты в текущей выдаче
- 🔄 **Автоматизировать отчеты** — запускайте актор по расписанию и подключайте Dataset к аналитическим системам

### 🚀 Как пользоваться актором

1. **Добавьте актор** — откройте **Yandex Search Scraper** в Apify Store.
2. **Введите запросы** — добавьте одно или несколько ключевых слов в `queries`.
3. **Выберите рынок** — укажите домен Яндекса, страну поиска, страну прокси, язык и период.
4. **Настройте лимиты** — задайте общий `maxItems` и `maxPagesPerQuery` для каждого запроса.
5. **Запустите актор** — нажмите **Run** или используйте Apify API либо расписание.
6. **Скачайте результаты** — экспортируйте Dataset в JSON, CSV, Excel, XML или RSS.

### 💳 Стоимость

Актор использует оплату за результат: вы платите за записи, сохраненные в Dataset. Ежемесячные кредиты бесплатного плана Apify подходят для небольших тестов; для крупных задач можно перейти на платный план.

### 📝 Входные параметры

| Параметр | Тип | Обязательный | Описание |
| -------- | --- | ------------ | -------- |
| `queries` | Массив строк | Да | Один или несколько поисковых запросов. Запросы выполняются по порядку. |
| `maxItems` | Целое число | Да | Максимальное число результатов по всем запросам. Значение `0` оставляет только ограничение `maxPagesPerQuery`. |
| `yandexDomain` | Строка | Нет | Домен поиска: `yandex.com`, `yandex.ru`, `yandex.by`, `yandex.kz`, `yandex.uz` или `yandex.com.tr`. По умолчанию: `yandex.com`. |
| `country` | Строка | Нет | Двухбуквенный код страны для локализации выдачи, например `ru`, `kz`, `by`, `de` или `us`. По умолчанию: `us`. |
| `proxyCountry` | Строка | Нет | Необязательный двухбуквенный код страны, из которой должен выходить прокси-трафик. |
| `language` | Строка | Нет | Язык результатов, например `ru`, `en`, `tr`, `de` или `fr`. По умолчанию: `any` — любой язык. |
| `timeRange` | Строка | Нет | Период: `any`, `day`, `week`, `month` или `year`. По умолчанию: `any`. |
| `maxPagesPerQuery` | Целое число | Нет | Максимальное число страниц для каждого запроса: от `1` до `10`. По умолчанию: `10`. |
| `disableSpellCorrection` | Логическое значение | Нет | Если `true`, Яндекс не будет исправлять вероятные опечатки. По умолчанию: `false`. |

#### Примеры входных данных

**Мониторинг позиций в российской выдаче**

```json
{
  "queries": ["парсер сайтов"],
  "maxItems": 50,
  "yandexDomain": "yandex.ru",
  "country": "ru",
  "proxyCountry": "ru",
  "language": "ru",
  "timeRange": "month",
  "maxPagesPerQuery": 5
}
```

**Исследование нескольких запросов**

```json
{
  "queries": [
    "site:apify.com парсер яндекса",
    "сервисы для сбора SERP",
    "мониторинг позиций конкурентов"
  ],
  "maxItems": 100,
  "yandexDomain": "yandex.ru",
  "country": "ru",
  "language": "ru",
  "maxPagesPerQuery": 3,
  "disableSpellCorrection": true
}
```

`maxItems` действует на весь запуск, а не на каждый запрос отдельно. Например, лимит `100` останавливает актор после сохранения 100 результатов.

### 📊 Результаты

Каждая запись Dataset соответствует одному органическому результату Яндекса:

- **query** *(строка)* — поисковый запрос
- **position** *(целое число)* — позиция результата в рамках запуска
- **title** *(строка)* — заголовок результата
- **url** *(строка)* — целевая ссылка
- **displayUrl** *(строка, необязательно)* — адрес, отображаемый Яндексом
- **domain** *(строка, необязательно)* — нормализованный домен
- **snippet** *(строка, необязательно)* — текст сниппета
- **sitelinks** *(массив, необязательно)* — дополнительные быстрые ссылки

```json
{
  "query": "парсер сайтов",
  "position": 1,
  "title": "Apify — платформа для веб-скрейпинга и автоматизации",
  "url": "https://apify.com/",
  "displayUrl": "Apify.com",
  "domain": "apify.com",
  "snippet": "Создавайте и запускайте инструменты для сбора данных и автоматизации.",
  "sitelinks": [
    {
      "title": "Apify Store",
      "url": "https://apify.com/store"
    }
  ]
}
```

Необязательные поля отсутствуют, если Яндекс не показывает их для конкретного результата.

### 🧭 Советы и готовые сценарии

- **Начните новый SEO-проект:** запросите 10–50 результатов, пока уточняете ключевые слова.
- **Отслеживайте известный домен:** используйте запрос вида `site:example.com категория товара`.
- **Сравнивайте несколько тем:** добавьте несколько значений в `queries`; лимит `maxItems` будет общим.
- **Локализуйте выдачу:** согласуйте `yandexDomain`, `country`, `proxyCountry` и `language`.
- **Распределяйте лимит между запросами:** уменьшите `maxPagesPerQuery`, чтобы один широкий запрос не занял весь лимит.
- **Ищите свежие страницы:** задайте `timeRange` равным `day`, `week`, `month` или `year`.
- **Создавайте регулярные отчеты:** запускайте актор по расписанию с одинаковыми запросами и сравнивайте позиции.

### ⚙️ Рекомендации

- Используйте стабильный набор запросов при сравнении позиций между запусками.
- Поисковая выдача меняется со временем вместе с индексом и алгоритмами ранжирования Яндекса.
- Сниппеты и быстрые ссылки зависят от оформления конкретного результата и могут отсутствовать.
- Согласуйте `country` и `proxyCountry`, если вам нужна последовательная региональная выдача.
- Выбирайте разумный `maxItems`, чтобы контролировать продолжительность и стоимость запуска.

### ⚖️ Правовые и этические аспекты

- **Соблюдайте условия использования Яндекса** и правила сайтов из поисковой выдачи.
- **Используйте данные законно** и только для обоснованных исследовательских или коммерческих задач.
- **Защищайте персональные данные** и соблюдайте применимые требования законодательства.
- **Уважайте авторские права и указывайте источники** при публикации собранных материалов.
- **Поддерживайте разумную нагрузку** и не используйте актор для вредоносного или чрезмерного сбора данных.

Этот актор является независимым инструментом и **не связан с Яндексом, не одобрен и не спонсируется им**. Все товарные знаки принадлежат их владельцам.

### ❓ Частые вопросы

**Лимит `maxItems` применяется к каждому запросу?**

Нет. Это общий лимит для всего запуска. Запросы выполняются по порядку, пока лимит не будет достигнут.

**Можно использовать поисковые операторы Яндекса?**

Да. Добавляйте поддерживаемые операторы прямо в запрос, например `site:example.com аналитика`.

**Почему некоторые поля отсутствуют?**

Яндекс показывает сниппеты, отображаемые URL и быстрые ссылки не для каждого результата. Такие поля добавляются только при наличии.

**Как собрать больше одной страницы?**

Установите `maxItems` больше 10 и `maxPagesPerQuery` больше 1. Актор продолжит работу, пока не достигнет одного из лимитов.

**Чем отличаются `country` и `yandexDomain`?**

`yandexDomain` выбирает региональный сайт Яндекса, а `country` локализует ранжирование с помощью двухбуквенного кода страны.

**Обязательно ли задавать `proxyCountry`?**

Нет. Укажите его, если прокси должен выходить в интернет из определенной страны.

**Как отключить исправление опечаток?**

Установите `disableSpellCorrection` в `true`, если важно точное написание запроса.

### 🛟 Поддержка

Нужно дополнительное поле или другой формат экспорта?
Откройте issue или свяжитесь с разработчиком: https://igolaizola.com/#contact или https://t.me/igolaizola.

# Actor input Schema

## `queries` (type: `array`):

One or more Yandex web-search queries. Each query is paginated before the next one starts.

## `maxItems` (type: `integer`):

Maximum number of organic search results to save across all queries. Use 0 to rely only on the per-query page limit.

## `yandexDomain` (type: `string`):

Regional Yandex search domain used for every query.

## `country` (type: `string`):

Two-letter country code used to localize results, such as us, ru, de, es, or gb.

## `proxyCountry` (type: `string`):

Optional country code for the proxy exit location.

## `language` (type: `string`):

Optional language filter for Yandex results, or Any language to leave results unrestricted.

## `timeRange` (type: `string`):

Only return pages published or updated within the selected period.

## `maxPagesPerQuery` (type: `integer`):

Maximum Yandex result pages fetched for each query. Each page normally contains up to 10 organic results.

## `disableSpellCorrection` (type: `boolean`):

Search the exact text entered instead of allowing Yandex to correct likely misspellings.

## Actor input object example

```json
{
  "queries": [
    "apify"
  ],
  "maxItems": 10,
  "yandexDomain": "yandex.com",
  "country": "us",
  "proxyCountry": "",
  "language": "any",
  "timeRange": "any",
  "maxPagesPerQuery": 10,
  "disableSpellCorrection": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "apify"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("igolaizola/yandex-search").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["apify"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("igolaizola/yandex-search").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "apify"
  ],
  "maxItems": 10
}' |
apify call igolaizola/yandex-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=igolaizola/yandex-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Yandex Search Scraper / Парсер поиска Яндекса",
        "description": "Yandex Search scraper and Google alternative for localized organic SERP rankings, URLs, snippets, domains, and sitelinks.\nПарсер поиска Яндекса: собирайте органическую выдачу, позиции, ссылки и сниппеты по странам и языкам для SEO-анализа и мониторинга конкурентов",
        "version": "0.0",
        "x-build-id": "2kZJ4s9un9j9lSShS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/igolaizola~yandex-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-igolaizola-yandex-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/igolaizola~yandex-search/runs": {
            "post": {
                "operationId": "runs-sync-igolaizola-yandex-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/igolaizola~yandex-search/run-sync": {
            "post": {
                "operationId": "run-sync-igolaizola-yandex-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "queries",
                    "maxItems"
                ],
                "properties": {
                    "queries": {
                        "title": "Search queries",
                        "minItems": 1,
                        "type": "array",
                        "description": "One or more Yandex web-search queries. Each query is paginated before the next one starts.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of organic search results to save across all queries. Use 0 to rely only on the per-query page limit."
                    },
                    "yandexDomain": {
                        "title": "Yandex domain",
                        "enum": [
                            "yandex.com",
                            "yandex.ru",
                            "yandex.by",
                            "yandex.kz",
                            "yandex.uz",
                            "yandex.com.tr"
                        ],
                        "type": "string",
                        "description": "Regional Yandex search domain used for every query.",
                        "default": "yandex.com"
                    },
                    "country": {
                        "title": "Country code (2 letters)",
                        "pattern": "^[a-zA-Z]{2}$",
                        "type": "string",
                        "description": "Two-letter country code used to localize results, such as us, ru, de, es, or gb.",
                        "default": "us"
                    },
                    "proxyCountry": {
                        "title": "Proxy country code (2 letters)",
                        "pattern": "^[a-zA-Z]{0,2}$",
                        "type": "string",
                        "description": "Optional country code for the proxy exit location.",
                        "default": ""
                    },
                    "language": {
                        "title": "Result language",
                        "enum": [
                            "any",
                            "en",
                            "ru",
                            "tr",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "uk",
                            "be",
                            "kk",
                            "uz",
                            "az",
                            "hy"
                        ],
                        "type": "string",
                        "description": "Optional language filter for Yandex results, or Any language to leave results unrestricted.",
                        "default": "any"
                    },
                    "timeRange": {
                        "title": "Time range",
                        "enum": [
                            "any",
                            "day",
                            "week",
                            "month",
                            "year"
                        ],
                        "type": "string",
                        "description": "Only return pages published or updated within the selected period.",
                        "default": "any"
                    },
                    "maxPagesPerQuery": {
                        "title": "Maximum pages per query",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum Yandex result pages fetched for each query. Each page normally contains up to 10 organic results.",
                        "default": 10
                    },
                    "disableSpellCorrection": {
                        "title": "Disable spelling correction",
                        "type": "boolean",
                        "description": "Search the exact text entered instead of allowing Yandex to correct likely misspellings.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
