---
slug: "travelpayouts-aviasales"
name: "Aviasales Data API (Travelpayouts)"
vendor: "Travelpayouts / Aviasales"
industry: "travel"
docsUrl: "https://support.travelpayouts.com/hc/en-us/articles/203956163"
version: 2
updatedAt: "2026-10-24"
---

# Aviasales Data API (Travelpayouts)

Отрасль: Путешествия и транспорт. Актуально на 2026-10-24.

Публичный API данных Aviasales для партнёров Travelpayouts: цены на авиабилеты из кэша поисков пользователей Aviasales — самые дешёвые билеты на даты, календари цен на месяц и неделю, альтернативные направления, популярные направления, спецпредложения, поиск по диапазону цен. Данные хранятся в кэше 7 дней, поэтому API рекомендуется для статических страниц, а не для живого поиска.

## Сценарии

### Показать дешёвые билеты по направлению

Блок «Билеты Москва — Сочи от …» на странице направления или в статье: самые дешёвые варианты на нужный месяц.

1. Возьми API-токен в профиле Travelpayouts и передавай его в заголовке X-Access-Token (или параметром token).
2. Запроси билеты: GET /aviasales/v3/prices_for_dates с origin и destination (IATA-коды), departure_at (YYYY-MM или YYYY-MM-DD), для туда-обратно — return_at и one_way = false. Только прямые — direct = true.
3. В data[] для каждого билета: price, airline, flight_number, departure_at, return_at, transfers, duration и link — путь к билету на Aviasales, его дополняют до полного адреса сайта.
4. Цены берутся из кэша поисков пользователей за последние 48 часов: показывай их как «цены от», а не как гарантированные, и обновляй блок регулярно.
5. Проверяй success в ответе: при ошибке data пустой, а текст — в error.

```bash
curl -G "https://api.travelpayouts.com/aviasales/v3/prices_for_dates" \
  -H "X-Access-Token: $TP_TOKEN" -H 'Accept-Encoding: gzip, deflate' --compressed \
  -d origin=MOW -d destination=AER -d departure_at=2026-12 \
  -d one_way=true -d direct=false -d sorting=price -d currency=rub -d limit=10
```

### Построить календарь цен

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

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
```

### Подобрать, куда дёшево улететь из города

Подборка «Куда полететь из Екатеринбурга» — направления с самыми низкими ценами.

1. Запроси билеты только с городом вылета: GET /aviasales/v3/prices_for_dates с origin, departure_at, unique = true (по одному билету на направление) и sorting = price.
2. Для акцентов добавь аномально дешёвые предложения: GET /aviasales/v3/get_special_offers с origin и currency.
3. Если направление задано, а даты гибкие, подскажи соседние аэропорты: GET /v2/prices/nearest-places-matrix с origin, destination, flexibility (0–7 дней) и distance (число вариантов).
4. Названия городов по IATA-кодам храни у себя: API возвращает только коды.

```bash
curl -G "https://api.travelpayouts.com/aviasales/v3/prices_for_dates" \
  -H "X-Access-Token: $TP_TOKEN" --compressed \
  -d origin=SVX -d departure_at=2026-12 -d unique=true -d sorting=price -d limit=20 -d currency=rub

curl -G "https://api.travelpayouts.com/aviasales/v3/get_special_offers" \
  -H "X-Access-Token: $TP_TOKEN" --compressed -d origin=SVX -d currency=rub
```

### Найти билеты в рамках бюджета

Фильтр «до 10 000 ₽» для подборок и рассылок.

1. Запроси билеты в диапазоне цен: GET /aviasales/v3/search_by_price_range с origin, destination (или «-» — все направления), value_min и value_max.
2. Ограничь выдачу: one_way, direct, limit и page для постраничного вывода.
3. Сверяй актуальность по сроку из ответа и не показывай устаревшие цены: данные в кэше хранятся до 7 дней.

```bash
curl -G "https://api.travelpayouts.com/aviasales/v3/search_by_price_range" \
  -H "X-Access-Token: $TP_TOKEN" --compressed \
  -d origin=MOW -d destination=- -d value_min=3000 -d value_max=10000 \
  -d one_way=true -d direct=false -d limit=30 -d page=1 -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/prices_for_dates — Билеты на конкретные даты

Самые дешёвые билеты на даты, найденные за последние 48 часов. Заменяет `/v1/city-directions`, `/v1/prices/cheap`, `/v1/prices/direct`, `/v2/prices/latest`.

В ответе для каждого билета: `origin`, `destination`, `price`, `airline`, `flight_number`, `departure_at`, `return_at`, `transfers`, `duration`, `link`. Ссылку `link` добавляют к `https://www.aviasales.com/`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `token` | query | string | да | API-токен (или заголовок X-Access-Token) |
| `origin` | query | string | нет | IATA-код города или аэропорта вылета |
| `destination` | query | string | нет | IATA-код назначения; обязателен, если нет origin |
| `departure_at` | query | string | нет | Дата вылета YYYY-MM или YYYY-MM-DD |
| `return_at` | query | string | нет | Дата возвращения; для билетов в одну сторону не указывать |
| `one_way` | query | boolean | нет | В одну сторону, по умолчанию true |
| `direct` | query | boolean | нет | Только прямые, по умолчанию false |
| `currency` | query | string | нет | Валюта, по умолчанию RUB |
| `market` | query | string | нет | Рынок данных, по умолчанию ru |
| `limit` | query | integer | нет | Записей на странице, по умолчанию 30, максимум 1000 |
| `page` | query | integer | нет | Номер страницы |
| `sorting` | query | string | нет | price (по умолчанию) или route (популярность) |
| `unique` | query | boolean | нет | Только уникальные направления, если указан лишь origin |

### 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 /aviasales/v3/get_latest_prices — Цены за период

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `token` | query | string | да | API-токен |
| `origin` | query | string | нет | IATA-код вылета |
| `destination` | query | string | нет | IATA-код назначения |
| `period_type` | query | string | нет | year, month или day; по умолчанию — текущий месяц |
| `beginning_of_period` | query | string | нет | Начало периода; обязателен при period_type=month |
| `group_by` | query | string | нет | dates (по умолчанию) или directions |
| `one_way` | query | boolean | нет | В одну сторону, по умолчанию true |
| `sorting` | query | string | нет | price, route, distance_unit_price |
| `trip_duration` | query | integer | нет | Длительность пребывания, дней |
| `trip_class` | query | integer | нет | 0 — эконом, 1 — бизнес, 2 — первый |
| `page` | query | integer | нет | Страница, по умолчанию 1 |
| `currency` | query | string | нет | Валюта |
| `market` | query | string | нет | Рынок данных |

### GET /v2/prices/month-matrix — Календарь цен на месяц

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `token` | query | string | да | API-токен |
| `origin` | query | string | нет | IATA-код города или страны вылета, 2–3 символа |
| `destination` | query | string | нет | IATA-код города или страны назначения |
| `month` | query | string | нет | Начало месяца YYYY-MM-DD |
| `show_to_affiliates` | query | boolean | нет | true — только цены по партнёрскому маркеру (по умолчанию) |
| `trip_duration` | query | integer | нет | Длительность пребывания, недель |
| `one_way` | query | boolean | нет | В одну сторону, по умолчанию true |
| `limit` | query | integer | нет | Дней в месяце, по умолчанию 30 (для 31 дня — 31) |
| `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 | нет | Рынок данных |

### GET /v2/prices/nearest-places-matrix — Цены по альтернативным направлениям

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `token` | query | string | да | API-токен |
| `origin` | query | string | нет | IATA-код вылета |
| `destination` | query | string | нет | IATA-код назначения |
| `limit` | query | integer | нет | Число вариантов, 1–20 |
| `depart_date` | query | string | нет | Месяц вылета yyyy-mm |
| `return_date` | query | string | нет | Месяц возвращения yyyy-mm |
| `flexibility` | query | integer | нет | Расширение диапазона дат, 0–7 дней |
| `distance` | query | integer | нет | Число вариантов, 1–20 |
| `show_to_affiliates` | query | boolean | нет | Только цены по партнёрскому маркеру |
| `currency` | query | string | нет | Валюта |

### GET /aviasales/v3/get_popular_directions — Дешёвые билеты в популярные направления

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `token` | query | string | да | API-токен |
| `destination` | query | string | нет | IATA-код города назначения |
| `locale` | query | string | нет | Язык результатов |
| `currency` | query | string | нет | Валюта |
| `limit` | query | integer | нет | 1–30 |
| `page` | query | integer | нет | Номер страницы |

### GET /aviasales/v3/get_special_offers — Спецпредложения

Аномально низкие цены на выбранные направления. Если `origin` не указан, определяется по IP.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `token` | query | string | да | API-токен |
| `origin` | query | string | нет | IATA-код вылета |
| `destination` | query | string | нет | IATA-код назначения |
| `airline` | query | string | нет | IATA-код авиакомпании |
| `locale` | query | string | нет | Язык |
| `currency` | query | string | нет | Валюта |
| `market` | query | string | нет | Рынок данных |

### GET /aviasales/v3/search_by_price_range — Поиск билетов по диапазону цен

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `token` | query | string | да | API-токен |
| `origin` | query | string | нет | IATA-код вылета |
| `destination` | query | string | нет | IATA-код назначения (- — все) |
| `value_min` | query | number | нет | Минимальная цена |
| `value_max` | query | number | нет | Максимальная цена |
| `one_way` | query | boolean | нет | В одну сторону |
| `direct` | query | boolean | нет | Только прямые, по умолчанию false |
| `locale` | query | string | нет | Язык |
| `currency` | query | string | нет | Валюта |
| `market` | query | string | нет | Рынок данных |
| `limit` | query | integer | нет | Записей на странице |
| `page` | query | integer | нет | Номер страницы |

## Нюансы

- Ответ: `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`.

## Ограничения

- Данные в кэше хранятся 7 дней.
- `prices_for_dates` — до 1000 записей на странице.
- `/v1/prices/calendar` — не больше 10 запросов в секунду; общие лимиты — в статье «API rate limits».

## Источники

- [Aviasales Data API](https://support.travelpayouts.com/hc/en-us/articles/203956163)

---

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