Главная → Блог → Как автосалону и площадке собрать аналог автотеки по VIN через API
История автомобиляКак автосалону и площадке собрать аналог автотеки по VIN через API

Сводный отчёт по истории авто собирают из нескольких методов API по одному VIN: история регистрации с владельцами, ДТП по базе ГИБДД, ограничения и розыск, залог, пробег по техосмотрам, сервисная история. Один Bearer-токен, ответы в JSON, оплата только за выполненную проверку, а тестовые значения бесплатны. Бесплатной проверки по боевым данным для бизнеса нет: нужно пополнение от 100 ₽, зато отчёт встраивается в карточку авто на сайте или в CRM и выглядит так, как нужно вам, а не стороннему сервису.
Ниже - из каких блоков состоит такой отчёт, какие методы за что отвечают, как собрать всё одним скриптом и сколько это стоит по прайсу. Если нужно просто понять общую логику проверки по VIN, есть отдельный материал: отчёт по VIN для бизнеса. Здесь - именно сборка полного отчёта по автомобилю.
Из чего состоит полный отчёт по автомобилю
Покупатель, открывая такой отчёт, ищет ответы на несколько вопросов. Сколько было владельцев и как долго. Попадала ли машина в ДТП. Скручен ли пробег. Нет ли запретов на регистрацию, залога и розыска. Не работала ли она в такси или каршеринге. Что с ней делали в сервисе. Всё остальное (растаможка, отзывные кампании, лизинг) - приятные дополнения, но без шести перечисленных блоков отчёт выглядит пустым.
Почему "бесплатно" не работает для бизнеса
Запрос "проверка по VIN бесплатно" - это запрос частного покупателя одной машины. Для бизнеса, который гоняет сотни проверок в день, бесплатных боевых данных нет: за каждым ответом стоит обращение к государственному реестру. Бесплатно у нас вот что:
- тестовый режим: VIN X7TEST00000000001 и госномер Т000ТТ00 отдают образец ответа по схеме метода с полем "testMode": true;
- ошибки и сбои источника: если проверка не выполнена, возвращается success: 0 и деньги не списываются;
- ряд методов платит только за результат: номер двигателя, история госномеров (только при found не меньше 2), распознавание фото.
Всё остальное платно, и это нормально: себестоимость полного отчёта мы посчитаем дальше, она измеряется десятками рублей.
Блоки отчёта и методы
| Блок отчёта | Метод |
|---|---|
| Владельцы, периоды, ПТС | /vin (история регистрации) |
| ДТП, быстро | /accidents (архив) |
| ДТП, глубоко | /accidents-rt (база ГИБДД) |
| Запреты, розыск | /score |
| Залог | /pledge |
| Пробег | /probeg |
| Такси | /taxi, /osago-history |
| Каршеринг, лизинг | /sharing, /lizing |
| Ремонты и ТО | /service |
| Суды и долги | /lawsuits, /enforcement |
Шаг 1. Нормализуем вход: VIN, госномер, номер кузова
Отчёт строится по VIN, но пользователи приходят с чем попало. Продавец на площадке указал госномер, у менеджера выкупа в руках только фото, японская машина вообще без VIN в привычном виде. Поэтому первый слой - приведение входа к одному идентификатору.
Если есть госномер, вызываем VIN по госномеру: GET /gos2vin?plate=А123ВС77. В ответе VIN, номер кузова или шасси, данные СТС, марка, модель, год, мощность и признак такси. Стоит 8 ₽. Обратная операция - /vin2gos, 6 ₽. Для авто без VIN (типичные японские) большинство методов принимает номер кузова: /body для истории регистрации, /score-body для ограничений, /probeg?body=, /pledge?body=.
До платного отчёта полезна быстрая карточка. /brief (1 ₽) отдаёт марку, модель, год, мощность, тип и объём двигателя, руль, массу. /decode (1,6 ₽) расшифровывает сам VIN: поколение, кузов, коробку, привод, завод сборки. Поле full=1 говорит, что определена единственная модификация. Практический приём: сравните расшифровку с тем, что написал продавец. Заявлен полный привод, а VIN говорит о переднем - отчёт можно дальше не строить.
Номер двигателя по VIN (GET /autopark?vin=, 0,8 ₽) нужен там, где сверяют агрегаты: при приёмке на выкуп или трейд-ин. Ответ приходит за доли секунды, а платно только если номер найден.
Шаг 2. ДТП: архив и база ГИБДД
Для ДТП есть два метода, и разница между ними принципиальна.
Проверка ДТП из архивов (GET /accidents?vin=) стоит 0,8 ₽, отвечает быстро и возвращает дату, тип, регион и повреждения. Но данные архивные, не в реальном времени: свежее происшествие там может не оказаться. Для массы объявлений это нормальный первичный фильтр.
ДТП по базе ГИБДД (GET /accidents-rt?vin= или ?body=) покрывает происшествия с 2015 года, оформленные ГИБДД, с повреждениями и участниками. Стоит 19 ₽, и метод асинхронный: вы создаёте задачу, затем опрашиваете результат раз в 30 секунд, до 40 минут. Скрипт опроса выглядит примерно так:
import time, requests
H = {"Authorization": "Bearer TOKEN"}
BASE = "https://api.avtovincod.ru"
def accidents_rt(vin, timeout=2400):
r = requests.get(f"{BASE}/accidents-rt", params={"vin": vin}, headers=H).json()
deadline = time.time() + timeout
while time.time() < deadline:
if r.get("success") == 1 and not r.get("pending"):
return r
if r.get("success") == 0 and not r.get("pending"):
return None
time.sleep(30)
r = requests.get(f"{BASE}/accidents-rt", params={"vin": vin}, headers=H).json()
return None
Имена полей статуса сверьте со страницей метода в документации: схема задачи там описана точно, а в примере показана только логика цикла. Не крутите опрос чаще раза в 30 секунд и не блокируйте им пользовательский запрос: запускайте в фоне и показывайте блок "ДТП" со статусом "проверяется".
Рабочая схема такая: на всём потоке объявлений дешёвый архив, глубокую проверку по базе ГИБДД запускаем, когда клиент оставил заявку или машина дошла до сделки. Как это устроено в выкупе, разобрано в статье проверка ДТП и розыска для выкупа, повторяться не будем.
Шаг 3. Ограничения, залог, розыск, суды
Это блок стоп-флагов: именно он решает, покупать машину или нет.
Ограничения и розыск (GET /score?vin=, 20 ₽) возвращают запреты на регистрационные действия с типом, основанием, регионом и данными исполнительного производства, а также признак розыска и периоды владения. Смотрим на поле found: 1 - данные есть, 0 - VIN не найден в базе ГИБДД. Важная деталь: /score тарифицируется при выполненной проверке, даже если ограничений нет. Чистый ответ тоже результат. Подробнее о трактовке запретов - в материале проверка ограничений ГИБДД.
Реестр залогов ФНП (GET /pledge?vin=, 2,4 ₽): поле status показывает, действует залог или прекращён, active_count - сколько активных уведомлений. Дополнительно приходят залогодатели, залогодержатели, дата и номер уведомления и история изменений.
Если в /score есть запрет с исполнительным производством, берём его enforcement_number и передаём в /enforcement?number= (0,65 ₽). В ответе proceedings[] со статусом active или closed, долги по видам (штраф, налог, кредит, алименты) и summary.activeDebt. Персональные данные должника скрыты звёздочками. Арбитражные дела по VIN или госномеру даёт /lawsuits (3 ₽): споры о собственности, лизинг, банкротство.
Какие стоп-флаги ставить
Минимальный набор, который мы бы посоветовали зашить в код:
- розыск - красный флаг, отказ от сделки без обсуждений;
- действующий запрет на регистрационные действия - красный, пока не снят;
- pledge.active_count больше 0 - красный для выкупа, жёлтый для площадки (залог можно снять при сделке);
- found = 0 в /score - не "чисто", а "не проверено": такой VIN отправляйте на ручную проверку;
- судебное дело о собственности или банкротство - жёлтый, с передачей юристу.
Шаг 4. История владения, пробег и обслуживание
История регистрации (GET /vin?vin=, 12 ₽) даёт периоды владения, характеристики, данные ПТС и СТС. Рядом кладём /plate-history (1,5 ₽): какие госномера были у машины, списком от последнего к первому, без дат. Много смен номера при малом числе владельцев - повод присмотреться, например к перебиванию между регионами.
История техосмотров и пробег (GET /probeg?vin=, 3,5 ₽) берёт диагностические карты ЕАИСТО: дата, срок действия, оператор, зафиксированный пробег. Это опорные точки, по ним строится график. Дальше сверяем с историей объявлений (GET /offers?vin=, 1,5 ₽): прошлые продажи с ценой, пробегом, городом и фото. У каждого объявления есть поле match (vin, car или unknown), а чужие машины убираются и попадают в excluded. В отчёт берите match=vin, а car и unknown показывайте с осторожностью. Если в объявлении 2022 года пробег 80 тысяч, а на ТО в 2024-м 62 тысячи, пробег скручен.
История полисов ОСАГО (GET /osago-history?vin=) показывает все полисы за годы: страховые, периоды, регион, цель использования, ограничение по водителям, тип собственника. Цель "такси" в старом полисе - сильный сигнал, даже если разрешения уже аннулированы. Ответ приходит за 15-60 секунд, учитывайте это в интерфейсе. Актуальную цену метода смотрите в prices.json или в кабинете. Если нужен только текущий полис, есть более лёгкий метод /osago за 1,5 ₽: страховая, серия и номер, статус и срок действия.
Сервисная история по VIN (GET /service?vin=, 26 ₽) - самый дорогой блок отчёта: даты, города, виды работ, описание операций. Для BMW и других марок она часто даёт то, чего нет ни в одном реестре: замену узлов после удара, нестыковки по пробегу. Оговорка честная: покрытие зависит от марки и от того, что попало в данные, поэтому пустой ответ не означает, что машину не обслуживали. Блок держите в расширенном отчёте, а не в базовом.
Остальное - по необходимости: /customs (1 ₽) для ввезённых машин, /recalls (0,8 ₽) по отзывным кампаниям, /taxi (1,8 ₽) и /sharing (5,4 ₽) для подтверждения коммерческой эксплуатации, /lizing (2,2 ₽) для лизинговых договоров.
Пример: сборка отчёта одним скриптом
Методы независимы, поэтому вызываем их параллельно. Тестовый VIN X7TEST00000000001 отдаёт образцы бесплатно, токен нужен.
curl -H "Authorization: Bearer TOKEN" \ "https://api.avtovincod.ru/score?vin=X7TEST00000000001"
import requests
from concurrent.futures import ThreadPoolExecutor
H = {"Authorization": "Bearer TOKEN"}
BASE = "https://api.avtovincod.ru"
VIN = "X7TEST00000000001"
METHODS = ["vin", "score", "pledge", "probeg", "accidents",
"osago-history", "offers", "service"]
def call(m):
try:
r = requests.get(f"{BASE}/{m}", params={"vin": VIN},
headers=H, timeout=90)
return m, r.json(), r.headers.get("X-Charged")
except requests.RequestException:
return m, None, None
with ThreadPoolExecutor(8) as ex:
results = list(ex.map(call, METHODS))
report, cost = {}, 0.0
for m, data, charged in results:
if data and data.get("success") == 1:
report[m] = data
cost += float(charged or 0)
else:
report[m] = None # блок "нет данных", деньги не списаны
print("Себестоимость отчёта:", cost)
Что здесь важно. В каждом ответе, записанном в историю запросов, есть блок billing: charged, currency, billed, balance, requestId, и те же значения в заголовках X-Charged, X-Balance, X-Request-Id. Нет блока - запрос не списан. Складывая X-Charged по методам, вы получаете точную себестоимость каждого отчёта и можете писать её в CRM рядом с заявкой. requestId сохраняйте: по нему поддержка быстро найдёт спорный запрос.
Правило по ошибкам простое: success: 0 означает, что проверка не выполнена или данных нет, и это бесплатно. Значит, повторять такие запросы можно без риска для бюджета: два-три повтора с паузой в несколько секунд для сбоев источника, и если не помогло, блок в отчёте помечается "не удалось получить, попробуйте позже". Не склеивайте "данных нет" и "источник недоступен" в одно сообщение: для покупателя это разные вещи.
Сценарии для автосалона, площадки и выкупа
Автосалон и трейд-ин. Два уровня. Быстрый отчёт за минуту, пока клиент ещё в салоне: brief, score, pledge, accidents. Полный отчёт после предварительного согласия на цену: плюс vin, probeg, osago, accidents-rt и service. Стоп-лист по ограничениям из третьего шага зашивается в CRM, и менеджер видит красный статус, не читая JSON.
Площадка объявлений. Бейдж "проверено" ставится по дешёвому набору: score, pledge, accidents. Расширенный отчёт продаётся пользователю отдельно, и вы зарабатываете на разнице между ценой отчёта и себестоимостью. Заодно закройте номера на фото: /plate-hide закрывает госномера (размытие, мозаика, заливка или логотип клиента), стоит 0,09 ₽ за фото, до 10 фото за запрос. Распознавание номера по фото (/photo-plate, 0,1 ₽) помогает связать объявление с автомобилем, когда продавец не указал VIN.
Выкуп и большие базы. Когда машин десятки, кодить не обязательно: массовая проверка в кабинете принимает до 100 автомобилей файлом Excel, CSV или вставкой текста, показывает расчёт "не больше" до запуска и присылает итоговую таблицу. А мониторинг автомобилей следит за списком по реестрам и сообщает только об изменениях: новый штраф, залог, запрет, розыск, смена собственника. Уведомления идут в Telegram, на почту или вебхуком (POST JSON, подпись X-AVC-Signature: sha256=HMAC тела вашим секретом). Для стока автосалона это удобно: машина стоит на площадке три месяца, и за это время на неё вполне может лечь запрет.
Себестоимость комплекта
Посчитаем по базовому прайсу. Быстрый набор: score 20 + pledge 2,4 + accidents 0,8 + brief 1 = 24,2 ₽. Стандартный отчёт: vin 12 + score 20 + pledge 2,4 + probeg 3,5 + accidents 0,8 + osago 1,5 + offers 1,5 + plate-history 1,5 = 43,2 ₽. Если добавить ДТП по базе ГИБДД (19 ₽) и сервисную историю (26 ₽), выходит около 88 ₽. В расчёте вместо истории полисов взят текущий полис /osago. Цены базовые, актуальные значения смотрите в prices.json.
Как не гонять лишнее. Не вызывайте /vin и /score одновременно без нужды: /score уже содержит периоды владения. Тяжёлые методы (accidents-rt, service) запускайте только после того, как дешёвые не выбили машину по стоп-флагам. Растаможку проверяйте только у иномарок, сервисную историю - у марок, где она реально есть. Кэшируйте отчёт на разумный срок, например на сутки: повторять запрос по той же машине через десять минут незачем.
С чего начать
Регистрация в личном кабинете занимает минуту, токен выдаётся сразу. Пополнение от 100 ₽ банковской картой или по счёту для юрлиц (акт и акт сверки в конце месяца), депозит действует 90 дней. Договор не нужен. Сначала прогоните весь скрипт на тестовых значениях: бесплатно, но структуру ответов вы увидите целиком и успеете сверстать карточку отчёта.
Если вы строите ИИ-агента для менеджеров, подключите MCP-сервер: https://api.avtovincod.ru/mcp, авторизация тем же токеном, 32 инструмента, каждый вызов тарифицируется как обычный запрос к методу. Общий обзор методов - на странице API ГИБДД, полные описания полей и примеры кода на девяти языках - в документации API.
Частые вопросы
Можно ли проверить автомобиль по VIN бесплатно?
По боевым данным для бизнеса - нет, нужно пополнение от 100 ₽. Бесплатно работают тестовые значения (VIN X7TEST00000000001, госномер Т000ТТ00), а также запросы, где проверка не выполнена: ответ success: 0 не списывается.
Чем отличается проверка ДТП из архива от ДТП по базе ГИБДД?
Архивный метод /accidents стоит 0,8 ₽, отвечает быстро, но данные не в реальном времени. /accidents-rt обращается к базе ГИБДД, показывает происшествия с 2015 года с повреждениями и участниками, стоит 19 ₽ и работает асинхронно: опрос раз в 30 секунд до 40 минут.
Можно ли проверить автомобиль по госномеру, если VIN неизвестен?
Да. Метод /gos2vin по госномеру возвращает VIN, номер кузова или шасси, данные СТС, марку, модель и год. Дальше этот VIN подставляется в остальные методы. Часть методов (ОСАГО, техосмотр, такси, объявления) принимает госномер напрямую.
Как узнать номер двигателя по VIN через API?
Вызовите GET /autopark?vin= (также работают body и chassis). Ответ приходит за доли секунды, стоимость 0,8 ₽, и списание происходит только если номер двигателя найден.
Есть ли история обслуживания BMW и других марок по VIN?
Метод /service?vin= возвращает даты, города, виды работ и описание операций. Покрытие зависит от марки и данных, поэтому пустой ответ не доказывает, что машину не обслуживали. Блок лучше держать в расширенном отчёте.
Сколько стоит полный отчёт по одному автомобилю?
По базовому прайсу быстрый набор (ограничения, залог, ДТП из архива, краткие данные) около 24 ₽, стандартный отчёт с историей, пробегом и текущим полисом ОСАГО около 43 ₽, с ДТП по базе ГИБДД и сервисной историей около 88 ₽. Точные цены смотрите в prices.json.
Что делать, если VIN не найден в базе ГИБДД?
В /score это поле found: 0. Не считайте это "чистой" машиной: помечайте как "не проверено". Попробуйте номер кузова (/score-body), проверьте правильность VIN и пошлите автомобиль на ручную проверку.
Как проверять сразу много автомобилей без программирования?
Используйте массовую проверку в личном кабинете: до 100 машин файлом Excel или CSV, выбор проверок, расчёт стоимости до запуска и итоговая таблица. Для постоянного контроля подключите мониторинг, он сообщает только об изменениях.
Проверка автомобилей через API
Без договора и долгих согласований: пополните баланс от 100 ₽ и проверяйте реальные машины. Тестовые значения бесплатно, документация с примерами на популярных языках.
Получить токен Документация API

