# Быстрый старт: Search

> Первая поисковая выдача, секции сверх органики и разбор отказов

Источник: https://docs.parreq.com/quickstart-search/

`/v1/search` отдаёт разобранную выдачу Google и Яндекса в JSON. Обязательных
параметра два: `q` и `engine` — умолчания у движка нет намеренно, чтобы запрос
не уходил не в тот поисковик молча.

**1. Первый запрос**

    ```python Python
    from parreq import Parreq

    client = Parreq("pr_ВАШКЛЮЧ")
    res = client.google("coffee machine", gl="us", hl="en")
    print(res.organic[0]["title"], res.organic[0]["link"])
    ```

    ```javascript Node
    import { Parreq } from "parreq-client";

    const client = new Parreq({ apiKey: "pr_ВАШКЛЮЧ" });
    const res = await client.google({ q: "coffee machine", gl: "us", hl: "en" });
    console.log(res.organic[0].title, res.organic[0].link);
    ```

    ```bash cURL
    curl -H "Authorization: Bearer pr_ВАШКЛЮЧ" \
      "https://api.parreq.com/v1/search?q=coffee+machine&engine=google&gl=us&hl=en"
    ```

    В ответе три блока: `search_metadata`, `search_parameters` и
    `organic_results`. Больше по умолчанию не приходит ничего.

**2. Добавьте секции**

    Реклама, товары, карты и остальное запрашиваются явно через `include` —
    каждая стоит отдельно, и молча включать их в счёт нельзя.

    ```python Python
    res = client.yandex("кофемашина", gl="by", hl="ru",
                        include=["ads", "shopping", "videos"])
    print(len(res.ads), "объявлений,", len(res.shopping), "товаров")
    ```

    ```javascript Node
    const res = await client.yandex({ q: "кофемашина", gl: "by", hl: "ru",
                                      include: "ads,shopping,videos" });
    console.log(res.ads.length, "объявлений,", res.shopping.length, "товаров");
    ```

    ```bash cURL
    curl -H "Authorization: Bearer pr_ВАШКЛЮЧ" \
      "https://api.parreq.com/v1/search?q=кофемашина&engine=yandex&gl=by&hl=ru&include=ads,shopping,videos"
    ```

    Полный список и форма каждой секции — [Секции ответа](https://docs.parreq.com/sections).

**3. Проверьте, что выдача та самая**

    `screenshot: true` снимает страницу поисковика целиком — от строки запроса
    до пагинации. Ссылка приходит в `search_metadata.screenshot_url`.

    ```bash
    curl -X POST https://api.parreq.com/v1/search \
      -H "Authorization: Bearer pr_ВАШКЛЮЧ" -H 'Content-Type: application/json' \
      -d '{"q":"coffee machine","engine":"google","screenshot":true}'
    ```

    Подробнее — [Поиск](https://docs.parreq.com/search#снимок-выдачи).

**4. Разберите отказы**

    Три ответа, которые обязан уметь любой клиент:

    | код | что делать |
    |---|---|
    | `429` | подождать `Retry-After` секунд и повторить |
    | `503 no_workers_available` | свободного обработчика нет — повторить позже |
    | `502 search_blocked` | источник не отдал выдачу на этой попытке — повторить |

    Библиотеки делают это сами: три попытки, пауза по `Retry-After`. Руками —
    пример в [Ошибках](https://docs.parreq.com/errors).

## Что дальше

**[Поиск](https://docs.parreq.com/search)**
    Все параметры: устройство, страна, язык, страница, домен движка.

**[Секции ответа](https://docs.parreq.com/sections)**
    Что приходит в каждой секции и у какого движка она есть.

**[Кредиты и права](https://docs.parreq.com/pricing)**
    Сколько стоит запрос с секциями и снимком.

**[Справочник Search](https://docs.parreq.com/api-reference/search)**
    Параметры и схема ответа, с примерами на Python и Node.
