# API Яндекс Погоды: Получить почасовой прогноз

Сценарий из mcp-everything. Актуально на 2026-10-24.

Прогноз на ближайшие дни по часам — для планирования доставки, мероприятий или выездных работ.

1. Отправь запрос: POST /graphql/query с блоком forecast { days(limit: N) { hours { ... } } } внутри weatherByPoint. limit задаёт число дней прогноза.
2. Для каждого часа выбери поля: time, temperature, humidity, pressure, windSpeed, windDirection.
3. Ответ — в data.weatherByPoint.forecast.days[].hours[]; time — в часовом поясе точки.
4. Набор доступных полей зависит от тарифа: если поле недоступно, запрос вернёт ошибку — проверь схему в консоли API.

```python
import requests

query = """
{ weatherByPoint(request: { lat: 55.7558, lon: 37.6173 }) {
    forecast { days(limit: 2) { hours { time temperature humidity windSpeed windDirection } } }
} }
"""
r = requests.post("https://api.weather.yandex.ru/graphql/query",
                  headers={"X-Yandex-Weather-Key": "<ключ>"}, json={"query": query}).json()
for day in r["data"]["weatherByPoint"]["forecast"]["days"]:
    for h in day["hours"]:
        print(h["time"], h["temperature"], h["windSpeed"])
```

## Базовые URL

- Боевой: `https://api.weather.yandex.ru`
- Схему GraphQL и тестовые запросы можно посмотреть в консоли API ().: `https://yandex.ru/pogoda/b2b/console`

## Авторизация

Тип: API-ключ

Ключ создают в Кабинете разработчика (`https://yandex.ru/pogoda/b2b/console`), выбрав «API Погодных Данных»; активируется через несколько минут. Ключ передаётся в заголовке `X-Yandex-Weather-Key`.

```
X-Yandex-Weather-Key: <Key>
```

## Методы сценария

### POST /graphql/query — GraphQL-запрос погоды

Текст GraphQL-запроса передаётся в теле POST-запроса, в JSON-поле `query`. Точка задаётся в `weatherByPoint(request: { lat, lon })`; внутри выбираются `now` (фактическая погода) и/или `forecast` (прогноз).

Пример запроса (текущая температура):

Пример запроса (почасовой прогноз):

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `X-Yandex-Weather-Key` | header | string | да | Ключ доступа |
| `query` | body | string | да | Текст GraphQL-запроса |

Пример запроса:

```
{
  weatherByPoint(request: { lat: 52.37125, lon: 4.89388 }) {
    now {
      temperature
    }
  }
}
```

Пример ответа:

```json
{
  "data": {
    "weatherByPoint": {
      "now": {
        "temperature": 20
      }
    }
  }
}
```

## Нюансы

- Поля `now`: `temperature`, `humidity`, `pressure`, `precType`, `precStrength`, `windSpeed`, `windDirection`, `cloudiness` и др.; единицы задаются аргументами, например `temperature(unit: FAHRENHEIT)` (`TemperatureUnit`, `PressureUnit`, `WindSpeedUnit`).
- `days(limit: N)` — сколько дней прогноза вернуть (необязательный аргумент).
- Поля `...OnHeight` (например, `temperatureOnHeight`) принимают аргумент `height`; подбирается ближайшая доступная высота.
- API не предназначено для запросов из браузера пользователя: ключ виден в инструментах браузера, а запросы падают с ошибкой CORS. Делайте запросы через свой сервер.
- Набор доступных полей зависит от тарифа.
- Старая версия v2 использует адреса `https://api.weather.yandex.ru/v2/forecast/` (тариф «Тестовый») и `https://api.weather.yandex.ru/v2/informers/` («Погода на вашем сайте»).

## Другие сценарии

- [Узнать текущую погоду в точке](https://mcp-everything.ru/integrations/yandex-weather/scenarios/uznat-tekuschuyu-pogodu-v-tochke.md)

---

Если этого недостаточно — официальная документация: https://yandex.ru/dev/weather/doc/ru/concepts/index-v3
Вся интеграция одним документом: https://mcp-everything.ru/integrations/yandex-weather.md
