CarStat.dev
Ръководство

Синхронизиране на целия инвентар

/cars извлича поточно всички активни автомобили от вашите източници, с пълни доклади, чрез курсор от страна на сървъра. Използвайте го за поддържане на локално копие; използвайте /search само за заявки, насочени към потребителите.

GET /carslimit до 2000, без scroll_id
запис на data[]upsert по id, пропуснете, ако hash не е променен
GET next_urlбез промени, преди курсорът да изтече
scroll_id nullобхождането е завършено
архивиранеавтомобили, които не са видени при това обхождане
  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"
}