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