CarStat.dev
Przewodnik

Synchronizacja całej oferty

/cars strumieniuje wszystkie aktywne samochody z Twoich źródeł, z pełnymi raportami, przez kursor po stronie serwera. Używaj go do utrzymywania lokalnej kopii; /search używaj tylko do zapytań od użytkowników.

GET /carslimit do 2000, bez scroll_id
zapisz data[]upsert po id, pomiń, jeśli hash się nie zmienił
GET next_urlbez zmian, zanim kursor wygaśnie
scroll_id nullprzebieg zakończony
archiwizujsamochody niewidziane w tym przebiegu
  1. Rozpocznij przebiegWyślij żądanie /cars bez scroll_id. Filtry, takie jak domains[] czy is_leasing, ustawiaj tylko tutaj.
  2. Podążaj dokładnie za next_urlZachowaj ten sam klucz i filtry przez cały przebieg. Zmiana domains[] lub is_leasing w trakcie przewijania zwraca 422.
  3. Pobieraj, zanim kursor wygaśniescroll_time wynosi 1–15 minut (domyślnie 10), licząc od ostatniego żądania. Przy 403/404 z komunikatem "scroll id was expired" rozpocznij nowy przebieg.
  4. Zakończ, potem archiwizujPrzebieg kończy się, gdy scroll_id ma wartość null, a data jest puste. Dopiero wtedy oznacz niewidziane samochody jako sprzedane.

Wykonuj pełny przebieg 2–3 razy dziennie. Zarchiwizowane samochody od razu znikają z /search i /cars, ale przez około miesiąc pozostają dostępne przez /cars/{car_id} i /listing/{domain_id}/{listing_id} z archived: true.

Pętla pełnego eksportu
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
Ostatnia stronaNa żywo
{
  "scroll_id": null,
  "data": [],
  "total": 3217391,
  "message": "No more data"
}