# Aviasales Data API (Travelpayouts): Построить календарь цен

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

Календарь «самая низкая цена на каждый день» — чтобы пользователь сразу видел дешёвые даты.

1. Запроси минимальные цены с группировкой по дням: GET /aviasales/v3/grouped_prices с origin, destination, departure_at (месяц) и group_by = departure_at. Для обзора по месяцам — group_by = month.
2. В data — объект, где ключ — дата (или месяц), значение — самый дешёвый билет на неё. Пустые дни в кэше просто отсутствуют — так и показывай их в календаре.
3. Для поездок туда-обратно ограничь длительность: min_trip_duration и max_trip_duration в днях.
4. Цены на соседние даты вокруг выбранных (3 дня до и 4 после) отдаёт GET /v2/prices/week-matrix с depart_date и return_date.

```bash
curl -G "https://api.travelpayouts.com/aviasales/v3/grouped_prices" \
  -H "X-Access-Token: $TP_TOKEN" --compressed \
  -d origin=LED -d destination=KZN -d departure_at=2026-12 -d group_by=departure_at -d currency=rub
```

## Базовые URL

- Боевой: `https://api.travelpayouts.com`

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

Тип: API-ключ

API-токен из профиля Travelpayouts (раздел «API-токен») передаётся в заголовке `X-Access-Token` или в параметре `token`.

```
https://api.travelpayouts.com/aviasales/v3/prices_for_dates?origin=MAD&destination=BCN&departure_at=2023-07&return_at=2023-08&unique=false&sorting=price&direct=false&cy=usd&limit=30&page=1&one_way=true&token=PutYourTokenHere
```

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

### GET /aviasales/v3/grouped_prices — Самые дешёвые билеты с группировкой

Заменяет `/v1/prices/calendar` и `/v1/prices/monthly`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `token` | query | string | да | API-токен |
| `origin` | query | string | нет | IATA-код вылета |
| `destination` | query | string | нет | IATA-код назначения |
| `group_by` | query | string | нет | departure_at (по умолчанию) или month |
| `departure_at` | query | string | нет | Дата вылета |
| `return_at` | query | string | нет | Дата возвращения |
| `direct` | query | boolean | нет | Только прямые |
| `min_trip_duration` | query | integer | нет | Минимальная длительность поездки, дней |
| `max_trip_duration` | query | integer | нет | Максимальная длительность поездки, дней |
| `currency` | query | string | нет | Валюта |
| `market` | query | string | нет | Рынок данных |

### GET /v2/prices/week-matrix — Календарь цен на неделю

Цены на 7 дней вокруг дат: от 3 дней до и до 4 дней после.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `token` | query | string | да | API-токен |
| `origin` | query | string | нет | IATA-код вылета |
| `destination` | query | string | нет | IATA-код назначения |
| `depart_date` | query | string | нет | День или месяц вылета |
| `return_date` | query | string | нет | День или месяц возвращения |
| `show_to_affiliates` | query | boolean | нет | Только цены по партнёрскому маркеру |
| `currency` | query | string | нет | Валюта |
| `market` | query | string | нет | Рынок данных |

## Нюансы

- Ответ: `success` (`true`/`false`), `data` (при ошибке — `{}`), `error` (`null` при успехе).
- Даты — `YYYY-MM` или `YYYY-MM-DD`; время в ответах — UTC, ISO 8601. Цены по умолчанию — в рублях.
- Не используйте устаревшие цены: ориентир срока — поле `expires_at`.
- Рынок (`market`) по умолчанию определяется по месту вылета, иначе — `ru`; данные разных рынков не пересекаются.
- Рекомендуется получать ответы в gzip: заголовок `Accept-Encoding: gzip, deflate`.
- Логотипы авиакомпаний: `http://pics.avs.io/{width}/{height}/{iata}.png`.
- Устаревшие методы `/v1/prices/cheap`, `/v1/prices/direct`, `/v1/prices/calendar`, `/v1/city-directions`, `/v1/airline-directions` заменяются `prices_for_dates` и `grouped_prices`.

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

- [Показать дешёвые билеты по направлению](https://mcp-everything.ru/integrations/travelpayouts-aviasales/scenarios/pokazat-deshevye-bilety-po-napravleniyu.md)
- [Подобрать, куда дёшево улететь из города](https://mcp-everything.ru/integrations/travelpayouts-aviasales/scenarios/podobrat-kuda-deshevo-uletet-iz-goroda.md)
- [Найти билеты в рамках бюджета](https://mcp-everything.ru/integrations/travelpayouts-aviasales/scenarios/nayti-bilety-v-ramkah-byudzheta.md)

---

Если этого недостаточно — официальная документация: https://support.travelpayouts.com/hc/en-us/articles/203956163
Вся интеграция одним документом: https://mcp-everything.ru/integrations/travelpayouts-aviasales.md
