API Авито с чего начать — вопрос, у которого есть короткий ответ: с тарифа, а не с кода. Технически всё просто, это обычный HTTP с токеном в заголовке. Но половина людей, начинающих в пятницу вечером, к полуночи упирается не в синтаксис, а в то, что площадка не отдаёт нужные данные на их подписке.
Поэтому порядок такой: сначала проверяем условия доступа, потом создаём приложение в кабинете, потом делаем один самый простой запрос и убеждаемся, что он вернул осмысленный ответ. И только затем пишем что-то похожее на продукт.
Шаг 0. Проверить, что доступ вам вообще дадут
Разные разделы API открываются на разных условиях. Списки объявлений и статистика обычно доступны шире, а вот содержимое переписки с покупателями — только на тарифах, где есть API мессенджера. Это не техническое ограничение, которое обходится кодом, а коммерческое условие площадки.
Что именно входит в вашу подписку, надёжнее всего смотреть в собственном кабинете Авито и в официальной документации, а не в чужих статьях: формулировки и состав тарифов меняются. Разбор того, как это устроено со стороны продавца, есть в статье про API мессенджера Авито, а пошаговое подключение — в материале как подключить API Авито. Что вообще входит в подписки — в обзоре тарифов Авито.
Шаг 1. Приложение и ключи
В кабинете продавца есть раздел для разработчиков, где создаётся приложение. На выходе вы получаете два значения: публичный идентификатор клиента и секрет. Секрет — это пароль. Он не должен попадать в репозиторий, в скриншот в чате поддержки и в переменную, которую логирует ваш фреймворк при старте.
Практическое правило первого дня: сразу заведите файл с переменными окружения и добавьте его в исключения системы контроля версий. Переносить секреты в код «на время отладки» — самый популярный способ потом искать их по всей истории коммитов.
Шаг 2. Получить токен
Дальше идентификатор и секрет меняются на токен доступа: вы отправляете их в специальный запрос авторизации и получаете обратно строку токена и срок его жизни. Все последующие запросы несут этот токен в заголовке авторизации.
Точные адреса, имена параметров и формат ответа берите из официальной документации Авито. Их бессмысленно переписывать в статью: они уточняются, и устаревший фрагмент кода вреднее, чем его отсутствие. Что важно понимать сразу и что от версии не зависит: токен временный. Значит, ещё до первого полезного запроса стоит завести функцию, которая умеет получать токен заново и подставлять свежий. Об этом подробно — в отдельной статье про авторизацию.
Шаг 3. Первый осмысленный запрос
Хороший первый запрос — тот, который не меняет ничего. Например, получить данные своего аккаунта или список своих объявлений. Задача этого шага не в данных, а в том, чтобы убедиться: ключи верные, токен принимается, сеть проходит.
Псевдокод в любом языке выглядит одинаково:
token = get_token(client_id, client_secret) # обмен ключей на токен
response = http_get(URL_СПИСКА_ОБЪЯВЛЕНИЙ, headers={"Authorization": "Bearer " + token})
if response.status == 401: # токен протух — обновить и повторить один раз
token = get_token(client_id, client_secret)
response = http_get(...)
print(response.status, response.body[:500])
Обратите внимание на две вещи, которых нет в большинстве примеров из интернета: печать статуса и печать куска тела ответа. Когда что-то пойдёт не так, вам нужен текст ошибки от площадки, а не исключение вашей библиотеки.
Шаг 4. Понять формат сущностей
Прежде чем строить логику, потратьте вечер на разглядывание ответов. Что вам действительно нужно знать:
- как идентифицируется объявление и как — диалог;
- где в сообщении лежит идентификатор, по которому можно понять, что это то же самое сообщение;
- как отличить своё сообщение от сообщения покупателя (иначе бот начнёт отвечать сам себе);
- какие поля могут отсутствовать. Отсутствующее поле — норма, а не аномалия.
Последний пункт экономит больше всего времени. Код, написанный по одному удачному примеру ответа, ломается на первом объявлении без фотографии или на первом чате без последнего сообщения.
Если цель — не изучение API, а работающие ответы покупателям, то тот же результат даёт готовый сервис: «Папа БУ» подключается к магазину без единой строчки кода и отвечает в чатах вашими словами.
Шаг 5. Лимиты и вежливость
У площадки есть ограничения на частоту запросов. Точные числа смотрите в документации и не считайте их постоянными. Что нужно заложить в код независимо от чисел:
- Пауза между запросами. Не «спать секунду», а нормальный интервал, из которого видно, сколько запросов в минуту вы делаете.
- Обработка отказа «слишком часто». Получили такой ответ — увеличили паузу, повторили позже. Не повторять сразу же: это добивает остаток лимита.
- Кеш. Список объявлений почти не меняется в течение часа. Тянуть его перед каждым сообщением — верный способ упереться в лимит на ровном месте.
Шаг 6. Что делать с ошибками
Разделите ошибки на три корзины, и дальнейшая жизнь станет проще.
Ваши. Неверный запрос, отсутствующее поле, опечатка в адресе. Чинятся кодом, повторять запрос бессмысленно.
Временные. Таймаут, сетевой сбой, ответ «сервис недоступен». Повторять — можно и нужно, с растущей паузой и ограничением на число попыток.
Авторизационные. Токен истёк или отозван. Обновить токен и повторить один раз; если и после этого отказ — звать человека, а не крутить цикл.
Когда начинать с API не стоит
- Нет платного тарифа и не планируется. Без него значительная часть задач просто не решается, и первый вечер закончится ничем.
- Вы один продавец с десятком объявлений. Затраты времени не вернутся: руками быстрее.
- Нужен автопостинг или сбор чужих данных. Через официальный доступ так не делают, а обходные пути стоят аккаунта.
- Нет места, где код будет жить. Скрипт на ноутбуке — это демонстрация, а не автоматизация; смотрите статью про программы для Авито, чтобы понять, с чем вы конкурируете.
Коротко
Начинать работу с API Авито надо с проверки тарифа, потом создать приложение и получить ключи, обменять их на токен, сделать один безопасный запрос и внимательно прочитать формат ответа. Дальше — лимиты, повторы и аккуратная работа с ошибками. Всё это займёт вечер-другой; цифры для примера и зависят от вашего опыта.
Если задача звучит как «хочу, чтобы покупателям отвечали за минуту», а не «хочу разобраться в API», то путь короче: подключить магазин и посмотреть на свои же диалоги в готовом сервисе.
Если решение под свой бизнес нужно, а разбираться самому некогда — напишите мне в Telegram: @artem_sergeevic. Я делаю такие сервисы на заказ: обсудим задачу и честно разберём, что в ней действительно нужно, а что можно не делать вовсе.