Документация API
Единый REST API для поиска авто, мото и грузовиков по 12 источникам данных.
Базовый запрос
GET /api/v2/cars?market=encar&brand=BMW&limit=5
Параметры
| Параметр | Тип | Описание |
|---|---|---|
| market | string | Код рынка: che168, guazi, encar, goo_net, dongchedi, myauto_ge, mashina_kg, dubicars, autoscout24, moto58, huoche86, kachejia |
| brand | string | Марка (BMW, Audi, Toyota...) |
| model_group | string | Серия/семейство (3 Series, Camry, A6...) |
| model | string | Модель |
| year_from / year_to | int | Год выпуска |
| price_min / price_max | float | Цена |
| mileage_max | int | Пробег до (км) |
| fuel_type | string | Топливо: Gasoline, Diesel, Electric, Hybrid… Точные значения по рынку — /api/v2/cars/filters?market=<market>&field=fuel_type; сравнение без учёта регистра |
| transmission | string | КПП: Automatic, Manual… Значения зависят от рынка — /api/v2/cars/filters?market=<market>&field=transmission |
| fields | string | Список полей через запятую |
| sort | string | price_asc, price_desc, year_asc, year_desc, mileage_asc, mileage_desc |
| limit | int | Записей на странице (1–100) |
| page | int | Номер страницы |
| since | ISO8601 | Дельта-обновления с момента последнего визита. Отдаёт новые и изменившиеся; снятые с продажи — только в экспорте, см. ниже |
Примеры
# Все BMW на корейском рынке curl "BASE_URL/api/v2/cars?market=encar&brand=BMW&limit=10" # Audi A6 2019-2022, дизель curl "BASE_URL/api/v2/cars?market=encar&brand=Audi&model=A6&year_from=2019&year_to=2022&fuel_type=diesel" # Электромобили из Китая curl "BASE_URL/api/v2/cars?market=guazi&fuel_type=Electric&limit=20" # Только нужные поля curl "BASE_URL/api/v2/cars?market=encar&fields=id,brand,model,year,price,mileage&limit=5" # Дельта с последнего визита curl "BASE_URL/api/v2/cars?market=encar&since=2026-06-24T12:00:00Z"
Снятые с продажи
Объявления, снятые с продажи, в поиске (GET /api/v2/cars) не отдаются, в том числе с параметром include_removed. Получить их можно только в экспорте.
| Что | Как |
|---|---|
| Эндпоинт | POST /api/v2/cars/export/count с since и include_removed=true → POST /api/v2/cars/export с quote_id |
| Тариф | Business или Premium (либо безлимит на рынок). На Base и Standard параметр игнорируется |
| Результат | отдельный файл export_removed.csv в архиве — только ID снятых объявлений, без остальных полей |
Синхронизация каталога
API отдаёт активные объявления на момент запроса: это снимок данных площадок, а не «живой» поток. Между реальным состоянием рынка и ответом API есть временной лаг (до нескольких часов, по рынкам по-разному). Источник истины по актуальному составу рынка — полная выгрузка; список снятых export_removed.csv — вспомогательный сигнал, его удобно использовать между полными получениями данных.
# Полная выгрузка
POST /api/v2/cars/export/count
{"market":"che168","export_format":"json","archive_format":"zip","chunk_size":25000}
POST /api/v2/cars/export
{"quote_id":"<quote_id>"}
# Инкрементальная выгрузка со снятыми
POST /api/v2/cars/export/count
{"market":"che168","since":"2026-10-02T12:51:11Z","include_removed":true,
"export_format":"json","archive_format":"zip","chunk_size":25000}
POST /api/v2/cars/export
{"quote_id":"<quote_id>"}
/export/count фиксирует параметры выгрузки и возвращает quote_id; в самом POST /api/v2/cars/export передаётся только quote_id — все параметры (включая since и include_removed) берутся из квоты. Далее — опрос GET /api/v2/export/{task_id}/status до completed и скачивание GET /api/v2/export/{task_id}/download?page=N для всех частей.
Как отмечать снятые объявления
Основание отметить объявление снятым у себя — отсутствие объявления в актуальных данных сервиса:
- его нет в проверенной полной выгрузке;
GET /api/v2/cars/{car_id}?market=<market>возвращает404;- его ID отсутствует в ответе
POST /api/v2/cars/batch(до 100 ID за запрос, ненайденные не тарифицируются).
API не различает подсостояния («продан» / «снят продавцом» / «удалён площадкой») и не отдаёт дату и причину снятия — таких данных не предоставляют и сами сайты рынков. Для массовой актуализации опирайтесь на отсутствие в полной выгрузке; единичный 404 — быстрый сигнал, при необходимости подтверждайте повторной проверкой.
Рекомендуемый порядок актуализации
- Заведите у себя таблицу (или отдельное поле) для активных ID, которых нет в актуальных данных сервиса.
- Полная выгрузка считается проверенной, когда задача
completed, получены все части и число записей совпадает сprocessed_records. - ID, отсутствующий в проверенной полной выгрузке, помечайте снятым и скрывайте от публичного показа.
- Если ID снова появился в более свежей полной выгрузке — снимайте пометку (возврат в продажу).
- Между полными выгрузками можно использовать
sinceиexport_removed.csvдля более быстрой реакции, но для снятия опирайтесь на полную выгрузку — она точнее.
Параметр since — строгая нижняя граница (строго «позже»), отметки времени нормализованы в UTC. Для смыкания интервалов берите since равным времени завершения предыдущего успешного прогона.
Задачи экспорта
Задачи экспорта и файлы хранятся 24 часа. 404 на методах статуса и скачивания означает, что задача уже удалена, — создайте её заново. Повторное скачивание существующей задачи допустимо. В статусе задачи есть поле removed_tracking: true — список снятых сформирован (пустой список означает, что за период снятий нет); false — учёт снятых недоступен.
Другие эндпоинты
| Метод | Эндпоинт | Описание |
|---|---|---|
| GET | /api/v2/cars/filters | Доступные значения для фильтров |
| GET | /api/v2/cars/range | Диапазоны цен, года, пробега |
| GET | /api/v2/cars/aggregations | Статистика по выбранным фильтрам |
| GET | /api/v2/cars/stats | Общая статистика рынка |
| GET | /api/v2/cars/{car_id}/similar?market=<market> | Похожие объявления |
| GET | /api/v2/currency/rates | Курсы валют |
| GET | /api/v2/markets | Список доступных рынков |