CarStat.dev
Підключити ключ
Посібник

Синхронізація всього каталогу

/cars потоково віддає всі активні автомобілі ваших джерел із повними звітами через серверний курсор. Використовуйте його для підтримки локальної копії; /search — лише для запитів, які бачать користувачі.

GET /carslimit до 2000, без scroll_id
store data[]upsert за id, пропускайте, якщо hash не змінився
GET next_urlбез змін, до закінчення терміну дії курсора
scroll_id nullпрохід завершено
archiveавтомобілі, яких не було в цьому проході
  1. Почніть прохідЗапитайте /cars без scroll_id. Фільтри, як-от domains[] чи is_leasing, задавайте лише тут.
  2. Переходьте за next_url точноВикористовуйте той самий ключ і фільтри протягом усього проходу. Зміна domains[] чи is_leasing посеред прокручування повертає 422.
  3. Робіть запит до закінчення терміну дії курсораscroll_time — від 1 до 15 хвилин (за замовчуванням 10), відлік від останнього запиту. При 403/404 з "scroll id was expired" почніть новий прохід.
  4. Завершіть, потім архівуйтеПрохід завершується, коли scroll_id дорівнює null, а data порожній. Лише тоді позначайте як продані автомобілі, яких ви не побачили.

Запускайте повний прохід 2–3 рази на день. Архівовані автомобілі одразу зникають з /search і /cars, але залишаються доступними через /cars/{car_id} і /listing/{domain_id}/{listing_id} з archived: true приблизно місяць.

Цикл повного експорту
url="https://api.lotarius.com/cars?limit=2000&api_key=$CARS_API_KEY"

while [ -n "$url" ]; do
  page=$(curl -sfg "$url" -H "Accept: application/json") || { echo "cursor expired, restart"; exit 1; }
  echo "$page" | jq -c '.data[]' >> cars.ndjson
  url=$(echo "$page" | jq -r '.next_url // empty')
done
Остання сторінкаНаживо
{
  "scroll_id": null,
  "data": [],
  "total": 3217391,
  "message": "No more data"
}